Scala 2 compiler and standard library. Bugs at https://github.com/scala/bug; Scala 3 at https://github.com/scala/scala3
Scala 2.13.2 has:
Vector
implementationVector
(using "radix-balanced finger tree vectors"), for performance (#8534)Small vectors are now more compactly represented. Some operations are now drastically faster on large vectors. A few operations may be a little slower.
Kudos to @szeiger for this work.
-Wconf
flag for configurable warnings, @nowarn
annotation for local suppression (#8373)Note that scala-collection-compat 2.1.6 (or newer) provides @nowarn
for cross-built projects (as a no-op on 2.11 and 2.12).
Special thanks to Roman Janusz (@ghik), whose silencer plugin was the basis for this work.
-Yrepl-class-based
and -Yuse-magic-imports
(#8748)
-Yrepl-class-based
avoids deadlocks-Yuse-magic-imports
improves performance for long sessionsSpecial thanks to @som-snytt for spearheading the JLine 3 upgrade.
We are tracking JLine-related improvements and regressions here. There some known regressions in some less-vital features and behaviors; we plan to address these in future 2.13.x releases.
getClass
, toString
, etc) from root module import (#8541)Long
to Double
) (#8679)Float
/Double
(#8757)-Xsource:2.14
, only -Xsource:3
(#8812)-Xsource:3
) (#8419)-Xsource:3
) (#7702)Ordering
s; issue migration warning instead under -Xmigration
(#8721)-Wmacros:MODE
(#8799)-jdk-api-doc-base
flag) (#8663)sys.env
now throws on null environment variable (#8579)##
have no parameter list (instead of a single empty one) (#8814)This is not a complete list of changes. For that, see all merged PRs and all closed bugs.
2.13.2 also includes the changes in Scala 2.12.11, most notably:
As usual for our minor releases, Scala 2.13.2 is binary-compatible with the whole Scala 2.13 series.
Upgrading from 2.12? Enable -Xmigration
while upgrading to request migration advice from the compiler.
A big thank you to everyone who's helped improve Scala by reporting bugs, improving our documentation, spreading kindness in discussions around Scala, and submitting and reviewing pull requests! You are all magnificent.
This release was brought to you by 45 contributors, according to git shortlog -sn --no-merges HEAD ^v2.13.1 ^2.12.x
. Thank you Som Snytt, Jason Zaugg, Lukas Rytz, Dale Wijnand, Seth Tisue, Diego E. Alonso Blas, Georgi Krastev, Martijn Hoekstra, Eugene Yokota, Harrison Houghton, Stefan Zeiger, NthPortal, Anatolii, Linas Medžiūnas, Aaron S. Hawley, Guillaume Martres, Josh Lemer, Sébastien Doeraene, Jasper Moeys, Julien Truffaut, Oskar Haarklou Veileborg, Lucas Cardoso, Andrew Valencik, Adriaan Moors, yudedako, Steven Barnes, Brian Wignall, Ausmarton Zarino Fernandes, Oguz Albayrak, Philippus, Viktor Klang, Yang Bo, bnyu, psilospore, sinanspd, wholock, Jamie Thompson, Hamza Meknassi, Janek Bogucki, Flash Sheridan, Fabian Page, Kenji Yoshida, Denis Rosset, Lucas S Cardoso, Chris Birchall.
Thanks to Lightbend for their continued sponsorship of the Scala core team’s efforts. Lightbend offers commercial support for Scala.
The release notes for Scala 2.13.0 have important information applicable to the whole 2.13 series.
Scala releases are available through a variety of channels, including (but not limited to):
scalaVersion
setting in your sbt-based projectThe Scala 2.12.11 release mainly brings bug fixes and performance improvements.
-Yrepl-class-based
, an alternative internal REPL encoding that avoids deadlocks (details on #8712)-Yrepl-use-magic-imports
flag that avoids deep class nesting in the REPL, which can lead to deteriorating performance in long sessions (#8576)toX
methods that could expose the underlying mutability of a ListBuffer
-generated collection (#8674):javap
in the REPL now works on JDK 9+ (#8400)Duration("1m")
, Duration("3 hrs")
(#8325, #8450)TypeTag
caches (#8470) and some thread safety issues in runtime reflection (#8433)For more details, see the full list of merged PRs and the list of closed bugs.
Custom subclasses of immutable.HashSet
and immutable.HashMap
that override elemHashCode
are no longer supported. Note that HashSet
and HashMap
are sealed
, and their subclasses in the standard library are marked @deprecatedInheritance
. More details in scala-dev#675.
As usual for our minor releases, Scala 2.12.11 is binary compatible with the whole Scala 2.12 series.
A big thank you to everyone who's helped improve Scala by reporting bugs, improving our documentation, spreading kindness in discussions around Scala, and submitting and reviewing pull requests! You are all magnificent.
This release was brought to you by 15 contributors, according to git shortlog -sn --no-merges v2.12.10..v2.12.11
. Thank you Jason Zaugg, Mike Skells, Harrison Houghton, Dale Wijnand, Seth Tisue, Lukas Rytz, A. P. Marki, Laurynas Lubys, Diego E. Alonso Blas, Daniele Torelli, Philippus, Aaron S. Hawley, leitoh, Eugene Yokota.
Thanks to Lightbend for their continued sponsorship of the Scala core team's efforts. Lightbend offers commercial support for Scala.
The release notes for Scala 2.12.0 have important information applicable to the whole 2.12 series.
Scala releases are available through a variety of channels, including (but not limited to):
scalaVersion
setting in your sbt-based projectScala 2.13.1 is primarily a bug fix release that fixes several regressions in 2.13.0.
Stream.Cons
to the 2.12 encoding (#8354)scala.Seq
to drop elems in unapplySeq
(#8340)RedBlackTree.take
(#8287)Iterator#flatMap#hasNext
calls outer#hasNext
1 time, not 2-3 times (#8220)s.c.Map#values
returns a strict Iterable
rather than a View
(#8195)Vector.from(ArraySeq)
copies elems rather than reusing unsafeArray
(#8194)mutable.HashSet.addAll
: remove redundant call to super method (#8192)mutable.ArraySeq.ofChar#addString
(#8176)HashMap#mapValuesInPlace
(#8421)apply
(#8202)toSeq
conversions in Seq
methods (#8374)Stream
methods (#8367)ArraySeq
iteration (#8300)implicitNotFound
message is supplemental (#8280)try
(#8071)mutable.MultiMap
(#8005)if(_)
(#7707)This is not a complete list of changes. For that, see all merged PRs and all closed bugs.
Upgrading from 2.12? Enable -Xmigration
while upgrading to request migration advice from the compiler.
As usual for our minor releases, Scala 2.13.1 is binary-compatible with the whole Scala 2.13 series.
A big thank you to everyone who's helped improve Scala by reporting bugs, improving our documentation, spreading kindness in discussions around Scala, and submitting and reviewing pull requests! You are all magnificent.
This release was brought to you by 43 contributors, according to git shortlog -sn --no-merges HEAD ^v2.13.0 ^upstream/2.12.x
. Thank you Som Snytt, Lukas Rytz, Aaron S. Hawley, exoego, Jason Zaugg, Dale Wijnand, Seth Tisue, Stefan Zeiger, NthPortal, Martijn Hoekstra, Jasper Moeys, Josh Lemer, Isaac Levy, Harrison Houghton, Benjamin Kurczyk, redscarf, 杨博 (Yang Bo), Adriaan Moors, Anatolii Kmetiuk, Eugene Yokota, Georgi Krastev, Miles Sabin, Philippus, xuwei-k, Magnolia.K, Mike Skells, 2efPer, Mitesh Aghera, NomadBlacky, Guillaume Martres, Odd Möller, yui-knk, Georg, Flash Sheridan, Diego E. Alonso Blas, Sébastien Doeraene, Atsushi Araki, psilospore, Akhtyam Sakaev, wanying.chan, Li Haoyi, M.Shibuya, Kota Mizushima.
Thanks to Lightbend for their continued sponsorship of the Scala core team’s efforts. Lightbend offers commercial support for Scala.
The release notes for Scala 2.13.0 have important information applicable to the whole 2.13 series.
Scala releases are available through a variety of channels, including (but not limited to):
scalaVersion
setting in your sbt-based projectThe main purpose of this release is to fix the following regressions in 2.12.9:
This is not a complete list of changes. For that, see all merged PRs and all closed bugs.
As usual for our minor releases, Scala 2.12.10 is binary-compatible with the whole Scala 2.12 series.
A big thank you to everyone who's helped improve Scala by reporting bugs, improving our documentation, spreading kindness in discussions around Scala, and submitting and reviewing pull requests! You are all magnificent.
This release was brought to you by 7 contributors, according to git shortlog -sn --no-merges v2.12.9..v2.12.10
. Thank you Jason Zaugg, Diego E. Alonso Blas, Aaron S. Hawley, Mike Skells, Seth Tisue, Eugene Yokota, exoego.
Thanks to Lightbend for their continued sponsorship of the Scala core team’s efforts. Lightbend offers commercial support for Scala.
The release notes for Scala 2.12.0 have important information applicable to the whole 2.12 series.
Scala releases are available through a variety of channels, including (but not limited to):
scalaVersion
setting in your sbt-based projectAs usual for our minor releases, Scala 2.12.9 is binary compatible with the whole Scala 2.12 series.
Scala.js users must update to 0.6.28+ or 1.0.0-M8+ to use Scala 2.12.9. (#7375)
Scala 2.12.9 contains various fixes to improve compatibility with JDK 11, 12, and 13.
-release N
flag on JDK 12+ (#7763)ClassfileParser
to fix Scaladoc generation issue (#8289)Scala 2.12.9 adds experimental infrastructure intended to support "build pipelining". Once build tools add support, compilation of downstream subprojects could begin once upstream code has been type-checked. See scala-dev#643.
packedType
s deterministic in bytecode (#7751)-doc-canonical-base-url
to set a canonical URL in Scaladoc (#7998)TypeTag
s (#8112)For more details, check out all closed bugs and merged PRs.
A big thank you to everyone who's helped improve Scala by reporting bugs, improving our documentation, spreading kindness in discussions around Scala, and submitting and reviewing pull requests! You are all magnificent.
This release was brought to you by 24 contributors, according to git shortlog -sn --no-merges v2.12.8..v2.12.9
. Thank you Jason Zaugg, Diego E. Alonso-Blas, Seth Tisue, Harrison Houghton, Adriaan Moors, Lukas Rytz, Aaron S. Hawley, Eugene Yokota, Michael Pollmeier, ta.tanaka, Enno Runne, A. P. Marki, Georgi Krastev, Kenji Yoshida, Stefan Zeiger, exoego, Benjamin Kurczyk, Anselm von Wangenheim, Alex Vayda, Sunil Mishra, Sébastien Doeraene, tgodzik, Dale Wijnand, Ryo Fukumuro.
Thanks to Lightbend for their continued sponsorship of the Scala core team’s efforts. Lightbend offers commercial support for Scala.
The release notes for Scala 2.12.0 have important information applicable to the whole 2.12 series.
Scala releases are available through a variety of channels, including (but not limited to):
scalaVersion
setting in your sbt-based projectWe are delighted to announce the availability of Scala 2.13.0!
2.13 improves Scala in the following areas:
Future
is faster and more robust. Elsewhere, useful classes and methods have been added.To learn more, read on.
Standard library collections have been overhauled for simplicity, performance, and safety.
This is the centerpiece of the release.
Most ordinary code that used the old collections will continue to work as-is, except as detailed below.
The most important collections changes are:
CanBuildFrom
. Transformation methods no longer take an implicit CanBuildFrom
parameter.BuildFrom
implicit is used in a handful of places that need it.Traversable
and TraversableOnce
.
Iterable
and IterableOnce
.GenSeq
, GenTraversableOnce
, et al are gone.scala.Seq
Seq
is now an alias for collection.immutable.Seq
collection.Seq
.collection.View
s have been vastly simplified and should now work reliably.++
(alias for concat
), +:
(alias for prepended
), :+
(alias for appended
), and so on.HashMap/Set
implementations
immutable.LazyList
replaces immutable.Stream
. Stream
had different laziness behavior and is now deprecated. (#7558, #7000)immutable.ArraySeq
is an immutable wrapper for an array; there is also a mutable version
mutable.CollisionProofHashMap
guards against denial-of-service attacks (#7633)mutable.ArrayDeque
is a double-ended queue that internally uses a resizable circular buffer (scala/collection-strawman#490)mutable.Stack
was reimplemented (and undeprecated)
Stack
s were List
-based and deprecated.mutable.Stack
backed by an ArrayDeque
.immutable.Stack
was removed.SeqMap
immutable.SeqMap
provides immutable maps that maintain insertion order. (#7954)VectorMap
(#6854) and TreeSeqMap
(#7146) (in addition to the already existing ListMap
).Additional collections changes:
to(Collection)
method
to[Collection]
method..to(Vector)
.Map
, BitSet
, et al).collection.breakOut
CanBuildFrom
, which no longer exists..view
and .to(Collection)
instead.List
and Vector
are safer
releaseFence
(#6425)filterInPlace
, mapInPlace
, flatMapInPlace
, and others.scala.jdk
scala.jdk.javaapi
Stepper
, which is like Iterator
but supports efficient unboxed iteration, Java interop. (#7458).unfold
Option
-returning operation, terminating on None
.Iterator
(#6851).lengthIs
/.sizeIs
and .sizeCompare
Map
methods deprecated
.lazyZip
.zip
on views, this replaces .zipped
(now deprecated). (scala/collection-strawman#223).tapEach
method
.updatedWith
and updateWith
methods to Map
s
.maxOption
, .minOption
, .maxByOption
, .minByOption
To learn more about the new APIs and how to adapt your code, consult:
We welcome assistance in continuing to expand and improve these documents.
Futures were internally redesigned, with these goals:
Details:
Future
and Promise
implementation. (#6610, #7663)
InterruptedException
and RejectedExecutionException
is improved.ExecutionContext
“batched”. (#7470)
ExecutionContext
. (#7784)scala-java8-compat
module is now part of the standard library. (#7458)JavaConverters
were moved to fit into the new scheme.)scala.util.Using
s
interpolator in pattern matches
val s"$day-$month-$year" = "11-June-2019"
pipe
and tap
import scala.util.chaining._
. (#7007)3.pipe(_ * 5)
evaluates to 159.tap(println)
first prints 9, then returns it.toIntOption
, et al
Product
elements
Product
s now have productElementNames
and productElementName
methods. (#6972).withRight
, .withLeft
Ordering.Double.TotalOrdering
, Ordering.Float.TotalOrdering
Ordering.Double.IeeeOrdering
, Ordering.Float.IeeeOrdering
List(2.0, 1.0).sorted
now warns unless you import or pass an ordering. (#6410)Function
s, PartialFunction
s and extractor objects. (#7111)@unused
annotation
-Xlint
. (#7623)Option
extends IterableOnce
flatMap
. (#8038)linesIterator
to avoid conflict with JDK 11's String.lines
(#7269)PartialFunction
now overloads andThen
. (#7263)Cloneable
/Serializable
traits with type aliases (#6729)ControlThrowable
never suppresses (#7413)BigDecimal
's handling of MathContext
s has changed (#6884)Not a complete list, only the deprecations users are likeliest to encounter.
+
with a non-String
type on the left (aka any2stringadd
) is deprecated. (#6315, #6755)PartialFunction.fromFunction
replaces PartialFunction.apply
(#6703)Either
are deprecated. (#6682, #8012)@usecase
Scaladoc tag. (#7462)Equiv
. (#7414)2.13 is primarily a library release, not a language/compiler release. Regardless, some language changes are included:
Features:
scala.ValueOf[T]
for all singleton types T
.Singleton
upper bound prevents widening (e.g. T <: Int with Singleton
).valueOf[T]
. Example: val one: 1 = valueOf[1]
-Ypartial-unification
.1_000_000
Experimental features:
-Ymacro-annotations
flag. #6606
Deprecations:
def m() { ... }
(#6325)def m(): Unit = { ... }
A <% B
(#6500)(implicit ev: A => B)
String
instead.'foo
Symbol("foo")
⇒
, →
, ←
=>
, ->
, <-
postfixOps
syntax disabled by default
xs size
xs.size
Adjustments:
val _ =
is now a pattern match (and discards the value without incurring a warning)implicit val _ =
is also now a pattern match (and is useless, because it no longer adds to implicit scope)case x@N
involve calling equals
, so it was unsound to type x
as N.type
.case x:N.type
.null
is treated as no match.Object
and Any
in Java/Scala interop (#7966)Seq
matches (#7068)object
fields are now static (#7270)implicitNotFound
on parameters (#6340)Unit
. (#7563)x op ()
now parses as x.op(())
not x.op()
(#7684)And:
List(1).sizzle
=> value sizzle is not a member of List[Int], did you mean size?
-Yimports
for custom preamble imports. (#6764)
-Yimports:x,y,z
means x, y, and z are root imports of the form: import x._ { import y._ { import z._ { ... } } }
Plus, changes to compiler options:
-V
for verbose, -W
for warnings
-warn-option
with -Woption
.-Xprint:all
with -Vprint:_
-Werror
is now recommended over -Xfatal-warnings
.-deprecation
to -Xlint:deprecation
(#7714)-Xfuture
(#7328)
-Xsource:2.14
-Yno-adapted-args
-Xmax-classfile-length
scala Script.scala
) no longer uses the fsc
compilation daemon by default. (#6747)
We invested heavily in compiler speedups during the 2.13 cycle, but most of that work actually already landed in the 2.12.x series, with more to come in 2.12.9.
In addition, compiler performance in 2.13 is 5-10% better compared to 2.12, thanks mainly to the new collections. See performance graph.
Also, certain kinds of code now compile much faster because the compiler aggressively prunes polymorphic implicits during search (#6580).
Upgrading from 2.12? Enable -Xmigration
while upgrading to request migration advice from the compiler.
Like Scala 2.12, the 2.13 series targets Java 8, minimum. Both 2.12 and 2.13 also work on later JDKs such as JDK 11; see our JDK Compatibility Guide.
Although Scala 2.11, 2.12, and 2.13 are mostly source compatible to facilitate cross-building, they are not binary compatible. This allows us to keep improving the Scala compiler and standard library.
All 2.13.x releases will be fully binary compatible with 2.13.0, in according with the policy we have followed since 2.10.
Projects built with sbt must use at least sbt 1.2.8 (or 0.13.18) to use Scala 2.13. To move to 2.13, bump the scalaVersion
setting in your existing project.
Scala also works with Maven, Gradle, and other build tools.
Scala releases are available through a variety of channels, including (but not limited to):
scalaVersion
setting in your sbt-based projectPlease file any bugs you encounter on our issue tracker. If you aren't yet sure something is a bug, ask on users.scala-lang.org.
A big thank you to everyone who's helped improve Scala by reporting bugs, improving our documentation, kindly helping others on forums and at meetups, and submitting and reviewing pull requests! You are all magnificent.
Scala 2.13.0 is the result of merging over 1500 pull requests.
The pull request queue is managed by the Scala team at Lightbend: Adriaan Moors, Lukas Rytz, Jason Zaugg, Seth Tisue, Stefan Zeiger, Eugene Yokota.
Thanks to Lightbend for their continued sponsorship of the Scala core team’s efforts. Lightbend offers commercial support for Scala.
The new collections API was developed in fruitful collaboration with the Scala Center, with major contributions from the community.
This release was brought to you by 162 contributors, according to git shortlog -sn --no-merges 2.13.x ^2.12.x ^e2a211c
. Thank you Julien Richard-Foy, Lukas Rytz, Jason Zaugg, A. P. Marki, Stefan Zeiger, Kenji Yoshida, Adriaan Moors, Josh Lemer, NthPortal, Miles Sabin, Diego E. Alonso-Blas, Seth Tisue, Guillaume Martres, Marcelo Cenerino, Dale Wijnand, Odd Möller, Martin Odersky, Allan Renucci, Georgi Krastev, Eugene Yokota, Harrison Houghton, Martijn Hoekstra, Viktor Klang, Aaron S. Hawley, Ólafur Páll Geirsson, Rex Kerr, hepin1989, Philippus Baalman, Matthew de Detrich, Isaac Levy, exoego, Greg Methvin, Jasper Moeys, Sébastien Doeraene, wholock, Aggelos Biboudis, yui-knk, Matthias Sperl, Xavier Fernández Salas, Ethan Pronovost, Janek Bogucki, awibisono, BuildTools, Mike Skells, Jimin Hsieh, Jonathan Frawley, Xavier GUIHOT, Chris Phelps, chanyong.moon, Cong Zhao, Enno Runne, LPTK, Pathikrit Bhowmick, Yuval Dagan, Li Haoyi, Guillaume Massé, Christopher Hunt, Kamil Kloch, Marco Zühlke, Danila Matveev, Juliusz Sompolski,杨博 (Yang Bo), Masaru Nomura, Benjamin Kurczyk, Vince, taku0, Arnout Engelen, Tim Ruhland, Nicolas Stucki, Nicolas Rinaudo, Stephen Nancekivell, ashwin, Kobenko Mikhail, Song Kun, Anthony Tjuatja, k.bigwheel, ke-to, kelebra, mcintdan, mmocentre, psilospore, roman, svatsan, texasbruce, tim-zh, valydia, veera venky,虎鸣, Adianto Wibisono, Alden Torres, Alejandro Sellero, Alessandro Buggin, Alex Glukhovtsev, Alex Levenson, Alexey-NM, Anatolii, Andrei Baidarov, Andriy Plokhotnyuk, Bakhytzhan Karabalin, Benni, Callum Turnbull, Chris Birchall, Chujie Zeng, Cody Allen, Daniel Dietrich, Daniel Moss, Daniel Slapman, David Barri, David Hoepelman, Denis Buzdalov, Denys Shabalin, Dhanesh, Dhanesh Arole, Edin Dudojević, Eugene Platonov, Faiz Halde, Gabriel Claramunt, Heikki Vesalainen, Iaroslav Zeigerman, Jack Koenig, Jean Michel Rouly, Jeff Brower, Jeff Shaw, Josh, Kazuhiro Sera, Kentaro Tokutomi, Lionel Parreaux, Magnolia.K, Martin Duhem, Michael Steindorfer, Nafer Sanabria, Narek Asadorian, Oleksii Tkachuk, Oscar Boykin, PJ Fanning, Paolo Giarrusso, Pap Lőrinc, Pavel Petlinsky, Peter Fraenkel, Philip, Piotr Kukielka, Qiang Sima, Rob Norris, Robin Stephenson, Rui Gonçalves, Ruud Welling, Ryan McDougall, ShankarShastri, Simão Martins, Sperl Matthias, Sujeet Kausallya Gholap, Uttej Guduru, Vincent de Haan, Vladimir Parfinenko, Vlastimil Dort, Yang Bo, Zizheng Tai, ccjoywang, esarbe, howtonotwin, jvican.
We again thank our contributors and the entire Scala community.
May you find Scala 2.13 a joy to code in!
Scala 2.13 is almost here! We present the third 2.13 release candidate. The changes since RC2 are minor.
We hope library maintainers will test and publish their libraries for RC3, to validate the release candidate and enable 2.13.0 to go forward.
These are the detailed technical release notes for RC3 only, documenting changes since RC2 only.
We don't yet have a combined, friendlier release note covering 2.13 as a whole yet. That will follow in time for 2.13.0. For now, see also the notes for RC2, RC1, M5, M4, M3, M2, and M1.
As usual for Scala pre-releases, RC3 is not binary compatible with any other Scala version, including previous 2.13 milestones and release candidates.
We will not break binary compatibility between RC3 and 2.13.0 unless really necessary.
As libraries are published for RC3, they're added to https://github.com/scala/make-release-notes/blob/2.13.x/projects-2.13.md .
We merged 16 pull requests for RC3. The highlights are:
IterableOnce#stepper
(#8083)IterableOnce#knownSize
impl (#8093)option2Iterable
implicit conversion (#8106)For further changes, see merged PRs and closed bugs.
See also the notes for the previous release candidates and milestones: RC2, RC1, M5, M4, M3, M2, M1.
Compiler performance in 2.13 is 5-10% better than 2.12. The integration of the new collections library shows up in the performance graph as a nice improvement.
To learn about the collections changes since 2.12 and how to adapt your code, take a look at these documents:
These documents are still being expanded and improved.
A big thank you to everyone who's helped improve Scala by reporting bugs, improving our documentation, spreading kindness in discussions around Scala, and submitting and reviewing pull requests! You are all magnificent.
This release was brought to you by 10 contributors, according to git shortlog -sn --no-merges v2.13.0-RC2..v2.13.0-RC3
. Thank you Lukas Rytz, NthPortal, Josh Lemer, Philippus Baalman, Stefan Zeiger, Aaron S. Hawley, mcintdan, Adriaan Moors, Anatolii, Eugene Yokota.
Thanks to Lightbend for their continued sponsorship of the Scala core team’s efforts. Lightbend offers commercial support for Scala.
Scala releases are available through a variety of channels, including (but not limited to):
scalaVersion
setting in your sbt-based projectScala 2.13 is almost here! We are delighted to present the second 2.13 release candidate.
Since RC1, we and our crew of community contributors have been fixing bugs and improving Java interop.
We ask all library maintainers to test and publish their libraries for RC2 as soon as possible. This is crucial to validate the release candidate and enable 2.13.0 to go forward.
These are the detailed technical release notes for RC2 only, documenting changes since RC1 only.
We don't yet have a combined, friendlier release note covering 2.13 as a whole yet. That will follow in time for 2.13.0. For now, see also the notes for RC1, M5, M4, M3, M2, and M1.
As usual for Scala pre-releases, RC2 is not binary compatible with any other Scala version, including previous 2.13 milestones and release candidates.
We will not break binary compatibility between RC2 and 2.13.0 unless really necessary.
As libraries are published for RC2, they're added to https://github.com/scala/make-release-notes/blob/2.13.x/projects-2.13.md .
To learn about the collections changes since 2.12 and how to adapt your code, take a look at these documents:
These documents are still being expanded and improved.
We merged 50 pull requests for RC2. The highlights are:
Object
and Any
in Java/Scala interop (#7966)Option
extend IterableOnce
(#8038)scala.jdk
, explicit converters for Java in jdk.javaapi
(#7987)Either
projections (#8012)For further changes, see merged PRs and closed bugs.
See also the notes for the previous release candidates and milestones: RC1, M5, M4, M3, M2, M1.
Compiler performance in 2.13 is 5-10% better than 2.12. The integration of the new collections library shows up in the performance graph as a nice improvement.
A big thank you to everyone who's helped improve Scala by reporting bugs, improving our documentation, spreading kindness in discussions around Scala, and submitting and reviewing pull requests! You are all magnificent.
This release was brought to you by 23 contributors, according to git shortlog -sn --no-merges v2.13.0-RC1..v2.13.0-RC2
. Thank you Lukas Rytz, Jason Zaugg, Aaron S. Hawley, Seth Tisue, Adriaan Moors, Stefan Zeiger, NthPortal, Michael Pollmeier, Philippus, Guillaume Martres, Diego E. Alonso-Blas, Christopher Hunt, Kenji Yoshida, Nicolas Rinaudo, Sébastien Doeraene, Arnout Engelen, Dale Wijnand, Enno Runne, Georgi Krastev, Harrison Houghton, Josh Lemer, Odd Möller, Rex Kerr.
Thanks to Lightbend for their continued sponsorship of the Scala core team’s efforts. Lightbend offers commercial support for Scala.
Scala releases are available through a variety of channels, including (but not limited to):
scalaVersion
setting in your sbt-based projectScala 2.13 is almost here! We are delighted to present the first 2.13 release candidate.
We and our crew of community contributors have mainly been polishing the improved and simplified Scala collections library that first shipped in 2.13.0-M4 and 2.13.0-M5. Some other sorts of changes got in as well; see below.
We ask all library maintainers to test and publish their libraries for RC1 as soon as possible. This is crucial to validate the release candidate and enable 2.13 to go forward.
These are the detailed technical release notes for RC1 only, documenting changes since M5 only.
We don't yet have a combined, friendlier release note covering 2.13 as a whole yet. That will follow in time for 2.13.0. For now, see also the notes for M5, M4, M3, M2, and M1.
As usual for Scala pre-releases, RC1 is not binary compatible with any other Scala version, including 2.13 milestones.
We will not break binary compatibility between RC1 and 2.13.0 unless really necessary.
As libraries are published for RC1, they're added to https://github.com/scala/make-release-notes/blob/2.13.x/projects-2.13.md .
To learn about the collections changes since 2.12 and how to adapt your code, take a look at these documents:
These documents are still being expanded and improved.
Here's the biggest recent collections changes, since M5:
scala-java8-compat
(#7458)mutable.HashSet
and mutable.HashMap
implementations (#7348)CollisionProofHashMap
, a mutable hashmap that degrades to red-black trees in the worst case (#7633)LazyList
to always evaluate elements in order, and to have lazy empty-or-not status (#7558)Vector
s (#7743)TreeSeqMap
(a SeqMap
implemented via a customized IntMap
/HashMap
pair) (#7146)collection.SeqMap
(#7954)The scala-parallel-collections module will be published for RC1. (Thank you @julienrf!)
Function0
(#7660)x op ()
now parses as x.op(())
not x.op()
(#7684)clinit
(#7270)NotAMemberError
(#6711)-warn-option
with -Woption
(#7908)-deprecation
to -Xlint:deprecation
(#7714)-Xfuture
(#7328)-Xmax-classfile-length
; hard-code to 240 (#7497)Future
(#7663)BatchedExecutor
(performance) (#7470)ExecutionContext
(#7784)linesIterator
to avoid conflict with JDK 11's String.lines
(#7269)Cloneable
/Serializable
traits with type aliases (#6729)andThen
overload which combines two partial functions (#7263)Function
s, PartialFunction
s and extractor objects (#7111)IterableOps#tapEach
method (#7124)Using
to implement the loan pattern (#7468)ControlThrowable
never suppresses (#7413)postfixOps
syntax an error (not just a warning) unless the feature is explicitly enabled (#6831)⇒
, ←
and →
(#7540)Proxy
(#7880)1l
and lint 0755
(#7685)usecase
scaladoc tag (#7462)Channel
,SyncChannel
,SyncVar
and DelayedLazyVal
(#7410)scala.compat.Platform
(#7423)Equiv
(#7414)unused
to suppress warnings (#7623)Unit
(#7563)For more details, see merged PRs and closed bugs.
See also the notes for the previous milestones: M5, M4, M3, M2, M1.
Compiler performance in 2.13 is 5-10% better than 2.12. The integration of the new collections library shows up in the performance graph as a nice improvement.
A big thank you to everyone who's helped improve Scala by reporting bugs, improving our documentation, spreading kindness in discussions around Scala, and submitting and reviewing pull requests! You are all magnificent.
This release was brought to you by 71 contributors, according to git shortlog -sn --no-merges ^v2.13.0-M5 ^2.12.x v2.13.0-RC1
. Thank you Lukas Rytz, A. P. Marki, Jason Zaugg, Josh Lemer, Diego E. Alonso-Blas, Adriaan Moors, Kenji Yoshida, Stefan Zeiger, NthPortal, Guillaume Martres, Georgi Krastev, Viktor Klang, Dale Wijnand, Seth Tisue, hepin1989, exoego, Rex Kerr, Julien Richard-Foy, Eugene Yokota, Harrison Houghton, Miles Sabin, yui-knk, Philippus, Odd Möller, Aaron S. Hawley, Allan Renucci, Jasper Moeys, Sébastien Doeraene, Xavier GUIHOT, chanyong.moon, Matthias Sperl, Anthony Tjuatja, Enno Runne, Song Kun, Benjamin Kurczyk, ashwin, Kobenko Mikhail, Li Haoyi, Martijn Hoekstra, Mike Skells, 虎鸣, Alden Torres, Andrei Baidarov, Andriy Plokhotnyuk, Benni, Callum Turnbull, Chris Birchall, Chris Phelps, Cody Allen, Daniel Dietrich, Daniel Slapman, Denis Buzdalov, Denys Shabalin, Jack Koenig, Jean Michel Rouly, LPTK, Lionel Parreaux, Martin Duhem, Narek Asadorian, PJ Fanning, Philip, Qiang Sima, Ruud Welling, Ryan McDougall, ShankarShastri, Sperl Matthias, Uttej Guduru, Vincent de Haan, Vlastimil Dort, Yang Bo, ccjoywang, mdedetrich, psilospore, texasbruce, tim-zh.
Scala releases are available through a variety of channels, including (but not limited to):
scalaVersion
setting in your sbt-based projectThis release fixes two regressions that appeared in 2.12.7:
The second fix is not binary compatible: the 2.12.8 compiler omits certain methods that are generated by earlier 2.12 compilers. However, we believe that these methods are never used and existing compiled code will continue to work. See the pull request description for more details.
Further highlights of this release:
-Yprofile-trace
(#7364)For more details, check out all closed bugs and merged PRs.
As usual for minor releases, Scala 2.12.8 is binary compatible with the whole Scala 2.12 series.
A big thank you to everyone who's helped improve Scala by reporting bugs, improving our documentation, spreading kindness in discussions around Scala, and submitting and reviewing pull requests! You are all magnificent.
This release was brought to you by 15 contributors, according to git shortlog -sn --no-merges v2.12.7..v2.12.8
. Thank you
Jason Zaugg, Adriaan Moors, Harrison Houghton, Miles Sabin, A. P. Marki, Janek Bogucki, Lukas Rytz, Georgi Krastev, Sujeet Kausallya Gholap, Dale Wijnand, psilospore, Mike Skells, Aaron S. Hawley, Eugene Yokota, Diego Alonso.
Thanks to Lightbend for their continued sponsorship of the Scala core team’s efforts. Lightbend offers commercial support for Scala.
The release notes for Scala 2.12.0 have important information applicable to the whole 2.12 series.
Scala releases are available through a variety of channels, including (but not limited to):
scalaVersion
setting in your sbt-based project