3.3.0 release thread

We have released Scala 3.3.0-RC2.

According to our current plan, Scala 3.3 will become the first LTS version of the language. It will also bring many vital improvements to the language, including:

  • lightweight lazy vals implementation enabled by default
  • fewerBraces enabled for all code
  • boundary/break control abstractions (read more)
  • linting with warnings about:
    • unused values
    • unused imports
    • discarded non-Unit values

Important notice about GraalVM and 3.3.0-RC2:

If you are generating a GraalVM native image for code compiled with Scala 3.3.0-RC2 and encounter some runtime problems, like hanging or strange errors, try recompiling your code with -Ylegacy-lazy-vals flag enabled. This is a known problem and will either be resolved in the following RCs, or we will revert to old lazy vals as a default one.

1 Like

What about RC1?

Due to a very subtle flaw in our vcs flow, we have released RC1 producing the output with the wrong version of TASTy. This was not desired, as code compiled with 3.3.0-RC1 could have been used as a dependency of a code compiled with Scala 3.2. This could have led to undefined behavior. We have decided to fix the bug and release the RC2 immediately.

1 Like

We have released 3.3.0-RC3

The latest release candidate fixes problems with lazy vals in native images. It also resolves a few bugs around GADTs, some of which had been avoided fixing for many months.


We have released 3.3.0-RC4

The new release is focused on bringing improvements to linting. We have eliminated most of the false positive -Wunused warnings.

If no significant bugs are found, we expect a full release of 3.3.0 in the last days of April.


We have released 3.3.0-RC5

RC4 was causing very rare (3 projects out of over 800 tested) crashes during the compilation when linting was enabled. We have fixed the problem. We also decided to stabilize Mirror#fromProductTyped that was requested by users and that we consider mature enough.


We have released 3.3.0-RC6

Yet another RC. It significantly improves backward source compatibility with 3.2.2. Right now, we are confident and satisfied with this release. If no new regressions are found, we can expect 3.3.0 next week.


We have a lift-off!