El jueves, 11 de junio de 2026 a las 10:12, Emmanuel Bourg <[email protected]> 
escribió:

> Hi Juan,
> 
> Thank you very much for working on Scala, I gave up years ago and I'm
> glad someone is picking up the ball.

Thanks Emmanuel, glad to be able to hear your opinions with this, that means a 
lot, and what I found probably is related with your experience.

 
> I see there is a choice about preserving the old version (2.11) or not.
> If you are confident packaging a new version of Scala is achievable,
> then I'd vote for retiring the old version.

I can't definitely say, but I concur that most of the biggest projects migrated 
long ago to Scala 2.12, Scala 2.13. e.g.: Spark, Almond, not sure how Metals 
and Joern are in regard of this.

> There is also a decision to make between upgrading the existing scala
> package, or switching to versioned scala-x.y packages (the existing
> scala package could then depend on the latest version, similarly to the
> default-jre package). The key factor here is backward compatibility, how
> stable is Scala nowadays? Do libraries still have to be rebuilt for new
> Scala versions? If so a versioned package might be more appropriate.

There are also packages depending on Scala 2.11: plm, pilon, latexdraw, htsjdk, 
unicycler: they would need to be ported to 2.13 o r think about retiring them 
if we would remove 2.11.

Regarding versioned scala-x.y vs upgrading scala: versioned, for the 
compatibility reason you raise. Scala is binary compatible within a minor (any 
2.13.x library works on any 2.13.x) but not across minors, so every library is 
cross-compiled per series: e.g.: upstream encodes it in the name (foo_2.12, 
foo_2.13, foo_3). We can mirror default-jdk: real scala-2.12/scala-2.13/scala3 
plus a thin scala metapackage. scala-2.12 already exists in that shape; Scala 3 
is stable across 3.x and reuses the 2.13 library, so it slots in.


> Did you consider bootstrapping Scala 3 directly instead of starting from
> 2.12? Wouldn't that be easier?


That was my initial question too.  Why not bootstrap 3 directly: But I found 
this: It doesn't avoid the work: sbt (which 2.13 and 3 both build with) is 
itself built with Scala 2.12, Scala 3's stdlib is the 2.13 library, and Dotty 
self-bootstraps from a prior Scala 3 too. 

Going straight to 3 would mean front-loading more prebuilt seeds (a 3 compiler 
+ sbt + a 2.13 STARR), meaning a bigger exemption to defend in NEW, not a 
smaller one. The 2.12 seed is the smallest binary that unlocks the whole chain 
and drops out after self-host.
  
I also factored in all the apps like Spark that still is getting users 
everywhere and that is in 2.12/2.13. 

My proposed plan then is: coexistence scala-asm (MR !3) + versioned toolchain 
now, retire 2.11 once its rdeps migrate. Although I see it is open to the 
team's preference on regard of the metapackage naming.
  
Please, Let me know what you think,
Juan



  


Reply via email to