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