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.



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