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.