> Good point also about 2.12 compatibility. It will become harder to support multiple Scala version the more the allowed syntax differs.
The reason why I did the PR was to actually confirm/deny whether this is an issue, as shown in the PR its a non issue (assuming that Scala 3.3 doesn't add anything more between RC3 and release which is quite likely) On Fri, Mar 24, 2023 at 3:52 PM Johannes Rudolph <[email protected]> wrote: > Just for the record, I also said not to do anything right now about it :) > > Other than that, I mostly agree with Nicolas. Unless we are forced to > update Scala 3 we should *not* do it right now. The situation might > change in 6-12 months with widespread adoption to Scala 3.3 we might > just do it (because everyone does by then and updates will only be > available for 3.3 at some point in the future). > > Good point also about 2.12 compatibility. It will become harder to > support multiple Scala version the more the allowed syntax differs. > > On Fri, Mar 24, 2023 at 1:31 PM Matthew Benedict de Detrich > <[email protected]> wrote: > > > > > One precondition to upgrade to newer versions of Scala 3 would be > dropping > > support for Scala 2.12. > > Scala 2.13 at least has support for some of the Scala 3 Syntax with > > compiler flags to cross compile. > > > > Are you talking about support on artifact level or on syntax level? Afaik > > there isn't any plan for Scala 3.3 to drop support for Scala 2.13 > artifacts > > (artifacts are completely separated from supported syntax). If we are > > talking about a hypothetical Scala 3 user of Pekko, the Scala3 syntax > that > > Pekko happens to use will be irrelevant here. In other words, if a user > is > > upgrading from Scala 3.1/Scala 3.2 to Scala 3.3 then they will have to > > upgrade the syntax of the source code irrespective of Pekko. If we are > > talking about difficulties of cross compiling for Scala 3/Scala 2 within > > Pekko itself I think we would have to see if there are any syntax > breaking > > changes in this regard (I didn't see any for Scala 3.3 but I may have > > missed something). Since an RC for Scala 3.3 is out we can pretty easily > > figure out if this is going to be a problem right now. > > > > I think what Johannes said here is important, which is that currently > there > > aren't any users of Pekko Scala 3 and because of this we really shouldn't > > overthink it. And even then, if we do release Pekko with Scala 3.3 and > some > > hypothetical user is going to have problems because they haven't upgrade > to > > Scala 3.3 yet, they can easily use the Pekko Scala 2.13 artifact and > since > > we are not using any bespoke Scala 3 features in Pekko currently on a > > source level the user is actually not going to notice any difference. > > > > On Fri, Mar 24, 2023 at 1:18 PM Nicolas Vollmar <[email protected]> > wrote: > > > > > IMHO we should use the lowest supported version of Scala 3 to not force > > > user to upgrade to newer versions. > > > > > > Scala 3 continues to deprecate old syntax. Some of it will produce > warnings > > > in Scala 3.2 and may be removed in 3.3 or later. > > > For example > > > > https://dotty.epfl.ch/docs/reference/dropped-features/package-objects.html > > > or https://dotty.epfl.ch/docs/reference/changed-features/imports.html > > > > > > One precondition to upgrade to newer versions of Scala 3 would be > dropping > > > support for Scala 2.12. > > > Scala 2.13 at least has support for some of the Scala 3 Syntax with > > > compiler flags to cross compile. > > > > > > > > > > > > On Fri, 24 Mar 2023 at 10:26, Matthew Benedict de Detrich > > > <[email protected]> wrote: > > > > > > > So some discussions on github are popping up regarding which Scala 3 > > > > version we should pick so I think it's time to discuss this formally > on > > > the > > > > mailing list. > > > > > > > > As a precursor one thing people need to understand is that the Scala > 3 > > > > release cycle has changed, quoting from > > > > > > > > https://github.com/apache/incubator-pekko/issues/6#issuecomment-1302701657 > > > > > > > > > Scala 2 used epoch.major.minor version convention. Scala 3 has > > > > major.minor.patch. > > > > > > > > > So there is no 3.0/3.1/3.2/etc cross-compilation - the assumption > is > > > > that: > > > > > > > > > * you can compile against the same minor version with backward- and > > > > forward-compatibility: 3.1.3 dependency against 3.1.0 code, 3.0.0 > > > > dependency against 3.0.1 code, etc > > > > > * within the same major version you always have > backward-compatibility: > > > > 3.1.3 dependency can be used in 3.1.3 project, but also 3.2.0 > project and > > > > in future against 3.3.0 project > > > > > > > > This means that if we pick a Scala version, we are essentially > forcing > > > the > > > > potential Scala 3 users of Pekko to bump their Scala 3 version to the > > > minor > > > > that we decide on. On surface value this means that we should pick > the > > > > lowest Scala 3 minor version that we can support however there is the > > > fact > > > > that Scala 3.3 is going to come out soon which will be an LTS > release. > > > The > > > > LTS release means that if any bugs are found after Scala 3.3 for a > period > > > > of 2 years, they will be backported to Scala 3.3. The big advantage > this > > > > brings us, is that it allows us to freely bump Scala 3.3 without > breaking > > > > our users if any potential bugs are found in the future. If we > decide to > > > > stick with Scala 3.2 or 3.1 and some bug is found in Scala 3 later on > > > that > > > > affects us, we will have to update to a version of Scala 3 that will > > > break > > > > binary compatibility. This facet is of even more importance when > > > > considering our 1.0.x release branches, which are designed to never > break > > > > binary/backwards compatibility, i.e. if we do 1.0.x releases with > Scala > > > > 3.1/3.2 and some critical bug/CVE comes out later we could > potentially be > > > > forced to update the minor version which would break this > > > binary/backwards > > > > compatibility, this wouldn't be the case with Scala 3.3 (for a > certain > > > > period of time). > > > > > > > > Of course the counter argument to using Scala 3.3 is that it would > force > > > > all potential Pekko users (and the transitive set of Scala 3 > libraries > > > for > > > > that Pekko user) to also use/support Scala 3.3. Unfortunately its not > > > > possible to get download stats from Sonatype for artifacts you don't > > > > maintain, but I wouldn't say its a controversial statement that the > > > amount > > > > of people that use Akka long with Scala 3 would be a tiny minority > (this > > > is > > > > also regarding other factors, i.e. the typical demographic of Akka > > > users). > > > > Ontop of this we need to take into account the delay of current Akka > > > users > > > > migrating to Pekko, in other words by the time people migrate to > using > > > > Pekko the fact that its using Scala 3.3 LTS would likely be a non > concern > > > > at that point in time. > > > > > > > > And finally another thing to note is that even in the worst case > > > scenario, > > > > nothing is stopping users from using Scala 2 artifacts from within > Scala > > > 3 > > > > (this is perfectly supported and has been for a while). Afaik the > current > > > > Scala 3 version of Akka/Pekko is not using any unique/bespoke > features of > > > > Scala 3, if true this would mean from a Scala 3 user perspective > there > > > > really isn't going to be > > > > a difference in using a Scala 2 artifact vs Scala 3 artifact. > > > > > > > > For these reasons my recommendation would be, assuming that the full > > > > release of Scala 3.3 LTS is ready by the time we decide to make a > release > > > > that we should try and target that. For details on the current > release > > > > schedule for Scala 3.3 LTS you can read > > > > https://contributors.scala-lang.org/t/3-3-0-release-thread/6079/3. > > > > > > > > -- > > > > > > > > Matthew de Detrich > > > > > > > > *Aiven Deutschland GmbH* > > > > > > > > Immanuelkirchstraße 26, 10405 Berlin > > > > > > > > Amtsgericht Charlottenburg, HRB 209739 B > > > > > > > > Geschäftsführer: Oskari Saarenmaa & Hannu Valtonen > > > > > > > > *m:* +491603708037 > > > > > > > > *w:* aiven.io *e:* [email protected] > > > > > > > > > > > > > -- > > > > Matthew de Detrich > > > > *Aiven Deutschland GmbH* > > > > Immanuelkirchstraße 26, 10405 Berlin > > > > Amtsgericht Charlottenburg, HRB 209739 B > > > > Geschäftsführer: Oskari Saarenmaa & Hannu Valtonen > > > > *m:* +491603708037 > > > > *w:* aiven.io *e:* [email protected] > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [email protected] > For additional commands, e-mail: [email protected] > > -- Matthew de Detrich *Aiven Deutschland GmbH* Immanuelkirchstraße 26, 10405 Berlin Amtsgericht Charlottenburg, HRB 209739 B Geschäftsführer: Oskari Saarenmaa & Hannu Valtonen *m:* +491603708037 *w:* aiven.io *e:* [email protected]
