Skip to content
Pre-release
Pre-release

@SethTisue SethTisue released this Apr 5, 2019 · 42 commits to 2.13.x since this release

Scala 2.13.0-RC1

Scala 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.

About these notes

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.

Binary compatibility

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.

Libraries for Scala 2.13.0-RC1

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 .

Collections changes

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:

  • Integrate converters from scala-java8-compat (#7458)
  • Make unified collection serialization opt-in instead of opt-out (#7624)
  • New mutable.HashSet and mutable.HashMap implementations (#7348)
  • Add CollisionProofHashMap, a mutable hashmap that degrades to red-black trees in the worst case (#7633)
  • Change LazyList to always evaluate elements in order, and to have lazy empty-or-not status (#7558)
  • Improved performance of small Vectors (#7743)
  • Add immutable TreeSeqMap (a SeqMap implemented via a customized IntMap/HashMap pair) (#7146)
  • Create trait collection.SeqMap (#7954)

The scala-parallel-collections module will be published for RC1. (Thank you @julienrf!)

License change

  • The license was changed to Apache 2.0 (#7306)

Language changes

  • Accept underscore as numeric literal separator (#6989)
  • Eta-expand 0-arity method if expected type is Function0 (#7660)
  • x op () now parses as x.op(()) not x.op() (#7684)
  • More precise inference for overloaded methods when arguments types align (#7631)
  • Disallow repeated param except in method signature (#7399)
  • By-name implicits: Align detection of implicit recursion with the SIP (#7368)
  • Enforce explicit return type for macros (#6942)

Compiler changes

  • Extension methods of overloads are themselves overloaded (#7896)
  • Emit mixin forwarders as bridges to avoid needing generic signatures (#7843)
  • Upgrade to ASM 7 for improved JDK 12 compat (#7384)
  • Make object fields static, and move post-super init to clinit (#7270)
  • More capable inliner (#7133)
  • Usability: compiler suggests possible names in NotAMemberError (#6711)

Compiler option changes

  • Replace -warn-option with -Woption (#7908)
  • Promote -deprecation to -Xlint:deprecation (#7714)
  • Deprecate -Xfuture (#7328)
  • Remove -Xmax-classfile-length; hard-code to 240 (#7497)

Concurrency changes

  • Significant performance improvements to Future (#7663)
  • Making the global EC a BatchedExecutor (performance) (#7470)
  • Add synchronous ("parasitic") ExecutionContext (#7784)

Standard library changes

  • Restore and use linesIterator to avoid conflict with JDK 11's String.lines (#7269)
  • Replace Cloneable/Serializable traits with type aliases (#6729)
  • Provide a simple string matcher as the dual of the simple string interpolator (#7387)
  • Introduce andThen overload which combines two partial functions (#7263)
  • Converters among optional Functions, PartialFunctions and extractor objects (#7111)
  • Add IterableOps#tapEach method (#7124)
  • Change Using to implement the loan pattern (#7468)
  • ControlThrowable never suppresses (#7413)

Deprecations and linting

  • Make postfixOps syntax an error (not just a warning) unless the feature is explicitly enabled (#6831)
  • Deprecate symbol literals (#7395)
  • Deprecate Unicode arrows , and (#7540)
  • Deprecate Proxy (#7880)
  • Deprecate 1l and lint 0755 (#7685)
  • Deprecate usecase scaladoc tag (#7462)
  • Deprecate Channel,SyncChannel,SyncVar and DelayedLazyVal (#7410)
  • Deprecate scala.compat.Platform (#7423)
  • Deprecate universal Equiv (#7414)
  • Annotation unused to suppress warnings (#7623)
  • Allow suppressing value-discard warning via type ascription to Unit (#7563)

Other changes

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.

Contributors

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.

Obtaining Scala

Scala releases are available through a variety of channels, including (but not limited to):

Assets 2
You can’t perform that action at this time.