Scala 2.13.0 is here!

We are delighted to announce the availability of Scala 2.13!

The 2.13.0 release improves Scala in the following areas:

  • Collections: Standard library collections have been overhauled for simplicity, performance, and safety. This is the centerpiece of the release.
  • Standard library: Future is faster and more robust. Elsewhere, useful classes and methods have been added.
  • Language: Literal types, partial unification, by-name implicits, more.
  • Compiler: 5-10% faster, deterministic output, improved optimizer.

To learn more, see the release notes on GitHub.

download

4 Likes

some bullets (from the RC1 notes) were missing from the initially published 2.13 release notes. they are now included, as follows:

simple string matcher (s interpolator can also be used in pattern matches), added tapEach , added @unused , added converters between functions and extractors, PartialFunction overloads andThen , Cloneable/Serializable are just type aliases now, ControlThrowable never suppresses, deprecated universal Equiv , deprecated @usecase , Symbol literals deprecated, Unicode arrows deprecated, postfixOps syntax disabled by default, value-discard warnings can be suppressed via type ascription to Unit

see the notes themselves for links to details

1 Like

A great many minor edits and improvements have been made to the release notes.

And, the following bullets are new, in the “Language changes” section, under “Adjustments”:

  • Don’t assume unsound type for ident/literal patterns. (#6502)
    • Matches of the form case x@N involve calling equals, so it was unsound to type x as N.type.
    • Consider rewriting as case x:N.type.
  • Make extractor patterns null safe. (#6485)
    • null is treated as no match.

And, this was missing from the collections section:

  • Added .updatedWith and updateWith methods to Maps
    • updatedWith is on immutable.Map, updateWith is on mutable.Map. (#7320, #7517)
    • These methods allow modifying a map entry based on its current value.

https://medium.com/@linas.m/my-favorite-new-features-of-scala-2-13-standard-library-909a89b0da4 pointed out some missing things, now added:

  • Added in-place operations on mutable collections
    • filterInPlace, mapInPlace, flatMapInPlace, and others.
    • These methods update the original collection in-place, rather than creating a new collection to hold the results.
  • Added Stepper, which is like Iterator but supports efficient unboxed iteration, Java interop. (#7458)
  • Added .maxOption, .minOption, .maxByOption, .minByOption
    • These methods safely handle the empty case. (#6574)
1 Like

added to notes, in the collections section:

  • Alphanumeric method names
    • All symbolic operators are now just aliases for descriptive alphanumeric method names.
    • Examples: ++ (alias for concat), +: (alias for prepended), :+ (alias for appended), and so on.