Skip to content

Latest commit

 

History

History
92 lines (66 loc) · 5.94 KB

2021-03-31-scala3-rc2.md

File metadata and controls

92 lines (66 loc) · 5.94 KB
layout title author authorImg date
blog-page
Scala 3.0.0-RC2 – getting ready for 3.0.0
Anatolii Kmetiuk
/images/anatolii.png
2020-03-31

Hello! We are happy to announce Scala 3.0.0-RC2. With this release, we are getting ready for 3.0.0. The significance of it is to give the community the chance and time to test all the changes meant for 3.0.0 final. A lot of bug fixes found their way into this release to ensure stability for 3.0.0 – more than 250 PRs were merged after the 3.0.0-RC1 release and until today!

Read more about this release below.

Significance and further steps

The 3.0.0-RC releases are release candidates for the 3.0.0 final. This means we aim to pack all the features meant for 3.0.0 into these releases and ensure their stability. After a grace period during which the community tests the latest release candidate, if no major problems are discovered, that release candidate becomes 3.0.0 stable.

3.0.0-RC2 is the next iteration of this release model. Its primary objective is to get tested by the community and generate feedback. If no major issues are discovered, we are planning to release 3.0.0 stable in 4 weeks from now. If there are indeed major issues discovered with RC2, we will have to release RC3 in between – possibly earlier than 4 weeks from now to speed up the way to 3.0.0.

Only critical issue fixes will find its way into 3.0.0 from now on, and any such fix will mean RC3. In the meanwhile, all the non-critical commits will appear only in 3.0.1. The way it will work is that we have a separate branch for 3.0.0, and we are going to backport the critical issue fixes into that branch from the main, 3.0.1, branch.

Post-3.0.0, we are planning to proceed with the release cycle we have had before 3.0.0. That is, we bump the stable patch version every 6 weeks and make an RC for that version. Simultaneously we make the RC of the previous patch version into a stable version.

Concretely, this means in 6 weeks from now we'll have 3.0.1-RC1, and in 12 weeks, we'll promote 3.0.1-RC1 into 3.0.1 stable and release 3.0.2-RC1.

Changes for 3.0.0-RC2

As mentioned above, we are currently in an issue-fixing mode. So a lot of those 200+ PRs for this release were about issue fixing.

There are some notable changes worth mentioning.

Restrict experimental features to unstable releases only

PR #11920 restricts usage of experimental features only to nightlies and snapshots. This change ensures that changes deemed experimental will not propagate into the wider ecosystem provided that wider ecosystem depends on stable releases. This is needed so that if an experimental feature is removed from the language, the ecosystem will not be impacted.

New unsafeNulls language feature

PR #9884 adds a new language feature which enables explicit nulls checks. From now on, you can use an import import scala.language.unsafeNulls to enable the feature, no compiler flags needed. For discussion, see the PR linked above, and for more information on the feature, see the documentation.

Treat Scala.js pseudo-unions as real unions

In PR #11671, we now treat the scala.scalajs.js.|[A, B] as if it was a real Scala 3 union A | B, which further boosts the support for Scala.js in Scala 3.

Metaprogramming

The following are some notable metaprogramming changes included into this release:

  • Add quotes.Type.valueOfConstant #11715
  • Try to remove compiletime.Widen #11569
  • Add -Xcheck-macros scalac option #11655
  • Add reflect Symbol.info and ClassInfo #11664

Let us know what you think!

If you have questions or any sort of feedback, feel free to send us a message on our Gitter channel. If you encounter a bug, please open an issue on GitHub.

Contributors

Thank you to all the contributors who made this release possible 🎉

According to git shortlog -sn --no-merges 3.0.0-M3..3.0.0-RC1 these are:

TODO

If you want to get your hands dirty and contribute to Dotty, now is a good time to get involved! Head to our Getting Started page for new contributors, and have a look at some of the good first issues. They make perfect entry points into hacking on the compiler.

We are looking forward to having you join the team of contributors.

Library authors: Join our community build

Dotty now has a set of widely-used community libraries that are built against every nightly Dotty snapshot. Currently, this includes shapeless, ScalaPB, algebra, scalatest, scopt and squants. Join our community build to make sure that our regression suite includes your library.