This page is no longer maintained — Please continue to the home page at www.scala-lang.org

Scala 2.10.0 Milestone 7

A new milestone release for Scala is available. This release is cut directly from current development and is not intended for production environments, but is a great chance to try out the up and coming features for Scala 2.10.0. The milestone 2.10.0-M7 includes many fixes and improvements, listed below.

 

New in this milestone:

  • Performance Improvements
  • Macros:
    • c.reify removed, use c.universe.reify instead
    • scala.reflect.makro renamed to scala.reflect.macros
    • Usages of macros no longer require scala-reflect.jar on library classpath
    • Macros now only allow c.AbsTypeTag context bounds (details). Use c.AbsTypeTag instead of c.TypeTag, implicitly[c.AbsTypeTag[T]].tpe instead of c.typeOf[T] (in RC1 there will be a shortcut, c.absTypeOf[T])
    • Breakage!! Macro impls for macro defs with implicit parameters cannot have type tag context bounds: https://issues.scala-lang.org/browse/SI-6281. Fixed in RC1, see the linked issue for a workaround.
  • Reflection:
    • Introduced MethodSymbol.{params, typeParams, returnType}
    • asXXXSymbol renamed to asXXX, asType renamed to Type, asTypeConstructor renamed to toTypeConstructor
    • Introduced TermSymbol.{getter, setter, accessed} to navigate between accessor symbols and underlying field symbols
    • Flags on symbols are gone and replaced with a lot of new isXXX tests
    • Some isXXX tests on symbols moved from Symbol to descendants
    • Breakage!! isXXX tests don’t work unless a symbol is initialized: https://issues.scala-lang.org/browse/SI-6277. Will be fixed in RC1, see the linked issue for a workaround.
    • Some methods on types are gone and should be replaced by pattern matching (e.g. Type.typeParams is removed and is supposed to be acquired by matching against PolyType)
    • TermSymbol.resolveOverloaded is removed and is planned to be resurrected in 2.10.1
    • base.StandardNames and api.StandardNames have undergone a drastic cleanup
    • Implementation of mirrors is now complete: ModuleMirror.instance works for nested modules, MethodMirror.apply support magic symbols, mirrors correctly work with value classes, etc
    • See this thread for some info about migration: http://groups.google.com/group/scala-internals/browse_thread/thread/4758995dfa2da9db  
  • ClassTag.Nothing now throws an exception to emphasize the fact that there are no values of type Nothing. On a second thought, this is deemed to be a mistake and is reverted in RC1.

 

Here's a list of isssues that have been fixed since v2.10.0-M6

Issue(s) Commit Message
SI-5788  c17c95ca3f  SI-5788 correct test and symbol update
SI-6236  faa114e2fb  Fixes SI-6236.
SI-6189  5a8dfad583  Fixes SI-6189.
SI-6234  41bf9c3c35  Fixes backend crash due to incorrect consumedTypes
SI-6167  7281be9599  SI-6167 Override SeqLike#isEmpty for better performance
SI-6223  97ae6f6f72  Move side-effecting call out of debuglog(). Fixes SI-6223.
SI-5940, SI-5940  64138082a4  SI-5940 impls are no longer in macro def pickles
SI-6214  21fcf64c81  Fixes SI-6214.
SI-6198  cef4726232  Added test for SI-6198
SI-6201  8d87387e6a  SI-6201 minor fixes in key points
SI-6022  9108b2506c  SI-6022 cleaner model of variable equality modulo <:
SI-6022  e232a614dd  SI-6022 refactor to clean up model of variable equality modulo <:
SI-6184  d97f7d9543  SI-6184 don't introduce dummies in checkableType
SI-6204, SI-6204  4ced74a5ee  SI-6204 reifier no longer causes cyclic errors
SI-5756  2ba6774766  SI-5756 correctly reifies local module classes
SI-5687  95b3648982  Fixes SI-5687.
SI-5158, SI-6070, SI-5739  8ebe8e3e88  SI-5739 (bis) vals for subpatterns unless -optimize
SI-4023, SI-5947  81535ce5b9  SI-5947 works around getDeclaredClasses
SI-6040  f76306b77f  SI-6040 error on unauthorized extension Dynamic
SI-5933  8aebc6c805  SI-5933 do the new patmat translation for scaladoc
SI-6186  788478d3ab  SI-6186 TypeTags no longer supported in macros
SI-5498  e8f1a423d1  SI-5498 completes ModuleMirror.instance
SI-6183  383fd5c137  SI-6183 don't crash on type error in outer test
SI-6145, SI-6145, SI-6145  9d330e3c83  SI-6145 lax typing of args to synthetic case-labels
SI-6199  cac52ac3e3  SI-6199 unit-returning methods now return unit
SI-4945  963aabbeb4  Fix for SI-4945, repl hang on -i input.
SI-6181  3c4f4865f6  SI-6181 method mirrors now support by-name args
SI-6179  3aa221e28c  SI-6179 mirrors now work with value classes
SI-6178  432d7b86cb  SI-6178 reflective invocation of magic symbols
SI-6063  b65b7b1392  Fix for SI-6063, broken static forwarders.
SI-5788, SI-5788  f492d0aaaa  SI-5788 Tailcalls LabelDefs correctly duplicated
SI-6188  cb6066ee61  Temporarily skips failing test due to optimizer bug SI-6188
SI-6185  5b82a9702d  SI-6185 - add "prepare" hook to ExecutionContext
SI-6074  816c291006  SI-6074
SI-6175  ce4bcb5362  SI-6175 reflect over classes with symbolic names
SI-6172  d1a95c8789  Fixes SI-6172.
SI-5919, SI-5908  a354ec2a77  first stab at serialization of exprs and tags
SI-5888  b578059b43  SI-5888 Mirrors now have sane toStrings
SI-5736  7112c66d69  navigation between fields and accessors
SI-5732, SI-5732  a727c6fc19  SI-5732 members and derivatives now return Scope
SI-5751  ddcba10984  SI-5751 cleans up toolboxes for the release
SI-6084  991b50f3f4  Fix for SI-6084, type alias crasher.
SI-5764  6d088252ba  SI-5764 Honor -language:_
SI-5866  5589eeeb9a  SI-5866 Support casting null to value classes
SI-5031  2a14dd2d23  Fixed SI-5031. Only consider classes when looking for companion class. sym.effectiveOwner revealed this piece of inconsistency. companionModule is fine because similar check is there already.
SI-5799  aad84ecba3  SI-5799 Secondary constructors in value classes not allowed
SI-5878  daf0953c1f  Closes SI-5878
SI-5882  95d5323583  Closes SI-5882
SI-6146  a4bb3b679a  Changed isHidden condition back to isSynthetic.
SI-5958  ae28472bc7  SI-5958 This deserves a stable type
SI-6140  fa09fad51f  SI-6140 Scaladoc infinite recursion in wiki parser
SI-4601, SI-4560  cf709c2dd2  SI-4560 - improved test
SI-4601, SI-4560  6eb55d4b7a  Fix SI-4560, NoSuchMethodErrors involving self types.
SI-5897  115eede127  SI-5897 don't check sensicality in match
SI-2038  e6912050bf  SI-2038 make pt fully-defined when typing Typed

 

 

Special thanks to all the contribtuors!

# Author
48   Eugene Burmako
31   Martin Odersky
23   Paul Phillips
15   Adriaan Moors
10   Grzegorz Kossakowski
6   Hubert Plociniczak
5   Vlad Ureche
5   Ruediger Klaehn
4   Johannes Rudolph
2   Lukas Rytz
2   Aleksandar Prokopec
2   phaller
1   Erik Osheim
1   Heather Miller
1   Iulian Dragos
1   clhodapp
1   Simon Ochsenreither

 

Community Projects

Special thanks to the 22 projects that have made releases available for this version of Scala!

  • scala-arm
    Scala-arm provides automated resource management to ensure all your resources are closed without all the extra work!
    Location: "org.scala-lang" % "scala-arm_2.10.0-M7" % "1.2"
     
  • scalaz
    Scalaz: Type Classes and Pure Functional Data Structures for Scala
    Location: "org.scalaz" % "scalaz-core_2.10.0-M7" % "6.0.3" "org.scalaz" % "scalaz-core_2.10.0-M7" % "6.0.4" "org.scalaz" % "scalaz-core_2.10.0-M7" % "7.0.0-M3"
     
  • ScalaInterpreterPane
    A Swing based front-end for the Scala REPL (interpreter)
    Location: "de.sciss" %% "scalainterpreterpane" % "1.1.+"
     
  • AudioWidgets
    Specialized Swing widgets for audio applications in Scala
    Location: "de.sciss" %% "audiowidgets" % "1.0.+"
     
  • ScalaAudioWidgets
    Scala-Swing wrappers for the AudioWidgets library
    Location: "de.sciss" %% "scalaaudiowidgets" % "1.0.+"
     
  • ScalaAudioFile
    A library to read and write uncompressed audio files (AIFF, WAVE, etc.)
    Location: "de.sciss" %% "scalaaudiofile" % "1.0.+"
     
  • ScalaOSC
    A library for OpenSoundControl (OSC), a message protocol used in multi-media applications.
    Location: "de.sciss" %% "scalaosc" % "1.0.+"
     
  • ScalaCollider
    A sound synthesis library for the SuperCollider server
    Location: "de.sciss" %% "scalacollider" % "1.0.+"
     
  • ScalaColliderSwing
    A Swing and REPL front-end for ScalaCollider
    Location: "de.sciss" %% "scalacolliderswing" % "1.0.+"
     
  • Scala-IO Core
    Library for idiomatic IO in Scala
    Location: "com.github.scala-incubator.io" % "scala-io-core_2.10" % "0.4.1"
     
  • Scala-IO File
    Library for idiomatic Filesystem access in Scala
    Location: "com.github.scala-incubator.io" % "scala-io-file_2.10" % "0.4.1"
     
  • specs2
    specs2 is a library for executable specifications in Scala
    Location: "org.specs2" % "specs2_2.10.0-M7" % "1.12.1"
     
  • ScalaTest
    ScalaTest - simple, clear tests and executable specifications
    Location: "org.scalatest" % "scalatest_2.10.0-M7" % "1.9-2.10.0-M7-B1"
     
  • Scales Xml
    Scales Xml provides superb performance with low memory usage, a unified pull and push model, Iteratee and Iterator based pull parsing, equality framework, both an embedded XPath DSL and string based XPath 1.0 support.
    Location: "org.scalesxml" % "scales-xml_2.10.0-M7" % "0.3.0"
     
  • parboiled
    Elegant parsing in Java and Scala - lightweight, easy-to-use, powerful.
    Location: "org.parboiled" % "parboiled-scala" % "1.1" Repository: http://repo.spray.cc
     
  • scalalogging
    Convenient and performant logging in Scala
    Location: "com.typesafe" %% "scalalogging-slf4j" % "0.3.0-SNAPSHOT" cross CrossVersion.full
     
  • scala-stm
    Software transactional memory for Scala
    Location: resolvers += ("releases" at "http://oss.sonatype.org/content/repositories/releases") libraryDependencies += ("org.scala-tools" %% "scala-stm" % "0.6")
     
  • Akka
    Akka is a platform for building highly concurrent, distributed, and fault tolerant event-driven applications on the JVM.
    Location: Repository: http://repo.akka.io/releases/ "com.typesafe.akka" % "akka-actor_2.10.0-M7" % "2.1-M2" Docs: http://doc.akka.io/docs/akka/2.1-M1/ ScalaDoc: http://doc.akka.io/api/akka/2.1-M1/#package Full distribution: http://akka.io/downloads/
     
  • kiama
    Kiama is a language processing library
    Location: "com.googlecode.kiama" % "kiama_2.10.0-M7" % "1.4.0-B1""
     

 

Complete commit list!

sha Title
d971777c87  rebuilt the starr after performance optimizations
df9f470f14  Attempts to improve inlining behavior for map, flatMap.
ebb719fb92  Slightly less drastic disabling of statistics.
bc4e1442b4  Reverted closure hoisting except for functions returning a Boolean result
5978a52314  Partial revert of itransform commit.
80ba578458  Reverted addition of 5 specialized method from LinearSeqOptimized to List.
82c61687d8  Manaul inling of `UndoLog.undoUnless`.
c2aae3faa5  Optimizations to SymTree and transform
2a2d92352c  Moved five methods from LinearSeqOptimized to List
67756313a1  Don't allocate closure in List.hashCode.
b2f8acda75  Rework synchronization scheme of `UndoLog` for performance.
76d8f8bb4b  Mark logging methods in `SymbolTable` with `@inline`.
fb3157726b  Make Array creation more efficient in hot places.
1ee7ffb6fd  Optimizations to cut down on #closures created
0cde930b19  Made hashCode a method on Type to avoid megamorphic dispatch
51f47a3c3f  Optimization to atOwner
1241af326c  Method splitting for erasure, genJVM, parsers, scanners, uncurry
3bf87369cf  Second part of typed1 optimization
1a6a9b4c75  More method hoisting.
cf9b7ae086  Compilespeed improvements: Exists arguments and others
bef9b2ae3d  Fix for community build blocker.
c17c95ca3f  SI-5788 correct test and symbol update
ac430ac8ba  cleanup for macroExpand
b16ea5075c  Restored lastNoSuccess to Parsers.
05407cdf19  Use rawflags for checking FINAL flag.
faa114e2fb  Fixes SI-6236.
5a8dfad583  Fixes SI-6189.
1b3054c077  Hunting down eliminable :: allocations.
4b5bf74c69  Absolutize tools.nsc => scala.tools.nsc.
5c6d6f4095  Optimization in SubstMap.
414106d32c  macroImplSigs => macroImplSig
6a67ef6914  phaseId(currentPeriod) >= erasurePhase.id
8ca3cdb569  materializeImplicit and implicitsOfExpectedType
46d57d47e8  cleanup of reflection- and macro-related stuff
ce90a46a69  adds the `skipPackage` attribute to Scaladoc
41bf9c3c35  Fixes backend crash due to incorrect consumedTypes
7281be9599  SI-6167 Override SeqLike#isEmpty for better performance
9285bdbd40  don't catch StackOverFlowError: kills performance
f783d0b16b  accommodated the feedback for the pull request
37a290b02e  HIDDEN => ARTIFACT
caf7eb6b56  Fix for view isEmpty.
97ae6f6f72  Move side-effecting call out of debuglog(). Fixes SI-6223.
46aab7b8d7  macro implementations must be public
64138082a4  SI-5940 impls are no longer in macro def pickles
613970af6b  Rewrite of transformTypeTagEvidenceParams.
01067efa93  .ensime template for compiler development
21fcf64c81  Fixes SI-6214.
a55788e275  More resilience to missing classes.
5d4e4e29b9  Added make not private logic for @inline accesses back to ExplicitOuter.
88c9a3cdf1  A little less indirection.
cef4726232  Added test for SI-6198
8d87387e6a  SI-6201 minor fixes in key points
79b0da95b4  a follow up on e01ec05a1e
ceb414fa47  some more copyright cleanup for 2012
e01ec05a1e  refines api.FlagSets
e62248c510  Ensure that a.merged(b)(null) always chooses a in case of collisions
39ef1e1e90  Removed hot statistics call in normal path.
1f3f1addfd  Only create a HashTrieSet if necessary.
f71dca29e4  Made inliner work for @inline methods that access private variables.
f07501e6f9  Support per-group flags files in partest
9108b2506c  SI-6022 cleaner model of variable equality modulo <:
e232a614dd  SI-6022 refactor to clean up model of variable equality modulo <:
9cc1f88ad4  Allow skipping the xz archives
d97f7d9543  SI-6184 don't introduce dummies in checkableType
4c255c46fe  Create a HashSet1 in case ks1 contains just one entry
90714e7d4a  Renamed elem to head and next to tail
4ced74a5ee  SI-6204 reifier no longer causes cyclic errors
2ba6774766  SI-5756 correctly reifies local module classes
1183f0639e  an important fixup for macro universe API
e6b4204604  Moved inline logic before pickler.
802771b403  Better pattern matcher error message.
95b3648982  Fixes SI-5687.
8ebe8e3e88  SI-5739 (bis) vals for subpatterns unless -optimize
81535ce5b9  SI-5947 works around getDeclaredClasses
f76306b77f  SI-6040 error on unauthorized extension Dynamic
8aebc6c805  SI-5933 do the new patmat translation for scaladoc
788478d3ab  SI-6186 TypeTags no longer supported in macros
4caa766e85  Enable inlining in constructors.
cc3badae17  Removes AnyRef specialization from library
e8f1a423d1  SI-5498 completes ModuleMirror.instance
90533942f0  Makes all private variables accessed from an @inline method non-private.
383fd5c137  SI-6183 don't crash on type error in outer test
9d330e3c83  SI-6145 lax typing of args to synthetic case-labels
fd3601a833  Restored :warnings to working order.
cac52ac3e3  SI-6199 unit-returning methods now return unit
963aabbeb4  Fix for SI-4945, repl hang on -i input.
7bcb9da473  mirrors now support overriden fields and methods
3cbe07f3e3  sanity check for reflectConstructor
3c4f4865f6  SI-6181 method mirrors now support by-name args
3aa221e28c  SI-6179 mirrors now work with value classes
432d7b86cb  SI-6178 reflective invocation of magic symbols
b65b7b1392  Fix for SI-6063, broken static forwarders.
f492d0aaaa  SI-5788 Tailcalls LabelDefs correctly duplicated
d2ab211814  compatibility stub for SBT 0.12.0
f6f15279aa  adds more tests for api.Symbols
cb6066ee61  Temporarily skips failing test due to optimizer bug SI-6188
5b82a9702d  SI-6185 - add "prepare" hook to ExecutionContext
c533bf30a4  Clear uniques via perRunCaches.
816c291006  SI-6074
ce4bcb5362  SI-6175 reflect over classes with symbolic names
f16e2c0874  Better worksheet support.
d1a95c8789  Fixes SI-6172.
a354ec2a77  first stab at serialization of exprs and tags
a19f0e83bf  deploys a new starr that knows reify is a macro
f7164b8715  moves Expr from api to base
a0a63c4558  evicts last traces of makro from our codebase
9892f52adf  reflect.makro => reflect.macros (Step I)
5e1a005252  removes -Xmacro-(.*)-classpath compiler options
f126f40b8c  prepares our macro defs for refactoring (Step II)
280c4906d1  prepares our macro defs for refactoring (Step I)
027b00171c  more refinements of reflection API
b578059b43  SI-5888 Mirrors now have sane toStrings
013acf6eb0  renames asType to toType and asXXXSymbol to asXXX
367b82de04  miscellaneous refinements of reflection API
7112c66d69  navigation between fields and accessors
37d4bfe77c  moves most of symbol tests in API to descendants
336145f979  simplifies flag API
a727c6fc19  SI-5732 members and derivatives now return Scope
ddcba10984  SI-5751 cleans up toolboxes for the release
f0f4fedd50  I actually managed to hit the limit of Scala signature annotation not fitting into a single string (high five everyone) and entered the undisovered region of arrEncode in GenASM. arrEncode returns Array[String] so asm.AnnotationWriter is not going to like it.
848756d47b  Added more variants to achieve getLinkPos
8d4b4262b0  Checkfile update.
82f818eeef  Fixed maddening "..." lately in printed types.
991b50f3f4  Fix for SI-6084, type alias crasher.
6d088252ba  SI-5764 Honor -language:_
7d8c464791  Removed resolveOverloaded
5589eeeb9a  SI-5866 Support casting null to value classes
a5aa050a25  ClassTag.Nothing now throws an exception
2a14dd2d23  Fixed SI-5031. Only consider classes when looking for companion class. sym.effectiveOwner revealed this piece of inconsistency. companionModule is fine because similar check is there already.
aad84ecba3  SI-5799 Secondary constructors in value classes not allowed
daf0953c1f  Closes SI-5878
e245b68129  Promote unchecked warnings into being emitted by default.
95d5323583  Closes SI-5882
ed915c54cc  Closed 6029 ...
e3bfe10973  New Worksheet mixing scheme
b964bac5e2  Raw string interpolator
e896c0ab2d  Adds method askForResponse
50903959ef  Disable interrupts during code instrumentation
923d5e0229  New Executor.
f15dc74394  Eliminated all the current feature warnings.
a4bb3b679a  Changed isHidden condition back to isSynthetic.
61d1933e29  Eliminated remainder of "catches Throwable" warnings.
bc719cb8e4  Improve unchecked warnings a lot.
54bab793ae  Avoids loading scala.package and scala.reflect.package from source if a classfile exists.
33118594a3  `ScriptSourceFile` should not hard-code `OffsetPosition`.
6c734305a9  Fix `Instrumentation.getStatistics` method in partest.
9e04e2365a  Instrument all classes in `instrumented` package.
ae28472bc7  SI-5958 This deserves a stable type
fa09fad51f  SI-6140 Scaladoc infinite recursion in wiki parser
cf709c2dd2  SI-4560 - improved test
c8bdf19947  Revert "tentative fix for RC5 lift build problem."
097e5690e5  Revert "Closes #4560. Review by dragos." (introduction of safeREF)
8abdfa48e4  Revert fix part of "Closes 4560. Review by dragos."
6eb55d4b7a  Fix SI-4560, NoSuchMethodErrors involving self types.
75eb8a4984  use hasAllFlags to detect gadt skolems
115eede127  SI-5897 don't check sensicality in match
0391436aa1  move synthetic case symbol detection to treeInfo
e6912050bf  SI-2038 make pt fully-defined when typing Typed

 

Re: Scala 2.10.0 Milestone 7

Is there any brief material introducing the new feature included in 2.10.0 ? 

Re: Scala 2.10.0 Milestone 7

This slideshare link might help for 2.10.

Copyright © 2012 École Polytechnique Fédérale de Lausanne (EPFL), Lausanne, Switzerland