At the moment, we’re on course for using the 2.13 scala stdlib for scala 3, and maintaining backwards compatibility throughout the lifecycle of scala 3.
There is a number of APIs in the scala 2.13 stdlib that are in a deprecation cycle.
.mapValues returns a
MapView, and was slated for removal in 2.13 + 1, after which a new eager
mapValues was planned to be introduced in 2.13 + 2.
Stream was planned for removal in 2.13 + 1,
Traversable is planned for removal and
IterableOnce for removal of all implementations in favour of the same methods on its iterator,
+(String) on numeric types,
Either's RightProjection, and all sorts of bits and pieces.
There is also a number of APIs that are indented to become final and are marked deprecatedInheritance, for example some annotations like
Removal of these deprecated parts, or making deprecated parts final will break backwards compatibility.
What should we do with these? One option would be to not promise of backwards compatibility for parts already deprecated in scala 2.13.1 when scala 3 will have its own stdlib. Another one is to keep these parts until scala 4 comes along, but the timelines for that are pretty long.