When I was releasing for scala 2.9.x
, I simply had this line in my build.sbt:
crossScalaVersions := Seq("2.9.0", "2.9.0-1", "2.9.1", "2.9.1-1", "2.9.2")
But now, scala 2.10
is out, and I'm confused. My intuition was that I should have something like this:
crossScalaVersions := Seq("2.10.0")
But I noticed, that when I have scala version set to 2.10.0
, sbt searches for artifacts ending with 2.10
, not 2.10.0
. What's going on here? What version should I use?
EDIT: Also, if I do publish-local
, the artifact also ends up being suffixed by "_2.10", instead of "_2.10.0".
Scala 3 is backwards compatible with Scala 2, except for a few deprecated features that are being dropped. The Scala standard library already cross-compiles between the two versions.
In Scala 2, extension methods had to be encoded using implicit conversions or implicit classes. In contrast, in Scala 3 extension methods are now directly built into the language, leading to better error messages and improved type inference.
So Scala 2.11 => Scala 2.12 is a major release. It's not a minor release! Scala major releases are not backwards compatible. Java goes to extreme lengths to maintain backwards compatibility, so Java code that was built with Java 8 can be run with Java 14.
The production release of Scala 3 was introduced May 14, following a release candidate stage that began on February 17.
The "Scala 2.10.0 staged" thread says
You can indeed simply cross version against 2.10.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With