Skip to content

Commit c297a6f

Browse files
Add 3.0.0-RC2 blog article
1 parent 5bb0e92 commit c297a6f

File tree

1 file changed

+96
-0
lines changed

1 file changed

+96
-0
lines changed
Lines changed: 96 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,96 @@
1+
---
2+
layout: blog-page
3+
title: Scala 3.0.0-RC2 – getting ready for 3.0.0
4+
author: Anatolii Kmetiuk
5+
authorImg: /images/anatolii.png
6+
date: 2020-03-31
7+
---
8+
9+
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](https://github.com/lampepfl/dotty/pulls?q=is%3Apr+is%3Aclosed+closed%3A%3E2021-02-16) were merged after the 3.0.0-RC1 release and until today!
10+
11+
Read more about this release below.
12+
13+
<!--more-->
14+
# Significance and further steps
15+
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.
16+
17+
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.
18+
19+
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.
20+
21+
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.
22+
23+
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.
24+
25+
# Changes for 3.0.0-RC2
26+
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.
27+
28+
There are some notable changes worth mentioning.
29+
30+
## Restrict experimental features to unstable releases only
31+
PR [#11920](https://github.com/lampepfl/dotty/pull/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 the wider ecosystem depends on stable releases. This is needed so that if an experimental feature is modified or removed from the language, the ecosystem will not be impacted.
32+
33+
## New `unsafeNulls` language feature
34+
PR [#9884](https://github.com/lampepfl/dotty/pull/9884) adds a new language feature which enables unsafe null operations under explicit nulls. This is a tool to help projects migrating to full explicit nulls gradually. From now on, you can use an import `import scala.language.unsafeNulls` to create an unsafe scope. For discussion, see the PR linked above, and for more information on the feature, see the [documentation](https://dotty.epfl.ch/docs/reference/other-new-features/explicit-nulls.html).
35+
36+
## Treat Scala.js pseudo-unions as real unions
37+
In PR [#11671](https://github.com/lampepfl/dotty/pull/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.
38+
39+
## Other API changes
40+
`-Ycheck-init` was renamed to `-Ysafe-init`. This flag is used to check safe initialization, more about which you can read in the [documentation](https://dotty.epfl.ch/docs/reference/other-new-features/safe-initialization.html). See also PR [#11920](https://github.com/lampepfl/dotty/pull/11920).
41+
42+
PR [#11745](https://github.com/lampepfl/dotty/pull/11745) changes the `compiletime` package API a bit. `compiletime.S` was moved to `compiletime.ops.int.S` and the package object `compiletime` was removed in favor of top-level definitions.
43+
44+
## Metaprogramming
45+
The following are some notable metaprogramming changes included into this release:
46+
47+
- Add quotes.Type.valueOfConstant [#11715](https://github.com/lampepfl/dotty/pull/11715)
48+
- Remove compiletime.Widen [#11569](https://github.com/lampepfl/dotty/pull/11569)
49+
- Add -Xcheck-macros scalac option [#11655](https://github.com/lampepfl/dotty/pull/11655)
50+
51+
52+
# Let us know what you think!
53+
If you have questions or any sort of feedback, feel free to send us a message on our
54+
[Gitter channel](https://gitter.im/lampepfl/dotty). If you encounter a bug, please
55+
[open an issue on GitHub](https://github.com/lampepfl/dotty/issues/new).
56+
57+
58+
## Contributors
59+
Thank you to all the contributors who made this release possible 🎉
60+
61+
According to `git shortlog -sn --no-merges 3.0.0-RC1..3.0.0-RC2` these are:
62+
63+
```
64+
TODO
65+
```
66+
67+
If you want to get your hands dirty and contribute to Dotty, now is a good time to get involved!
68+
Head to our [Getting Started page for new contributors](https://dotty.epfl.ch/docs/contributing/getting-started.html),
69+
and have a look at some of the [good first issues](https://github.com/lampepfl/dotty/issues?q=is%3Aissue+is%3Aopen+label%3Aexp%3Anovice).
70+
They make perfect entry points into hacking on the compiler.
71+
72+
We are looking forward to having you join the team of contributors.
73+
74+
## Library authors: Join our community build
75+
76+
Dotty now has a set of widely-used community libraries that are built against every nightly Dotty
77+
snapshot. Currently, this includes shapeless, ScalaPB, algebra, scalatest, scopt and squants.
78+
Join our [community build](https://github.com/lampepfl/dotty/tree/master/community-build)
79+
to make sure that our regression suite includes your library.
80+
81+
[Scastie]: https://scastie.scala-lang.org/?target=dotty
82+
83+
[@odersky]: https://github.com/odersky
84+
[@DarkDimius]: https://github.com/DarkDimius
85+
[@smarter]: https://github.com/smarter
86+
[@felixmulder]: https://github.com/felixmulder
87+
[@nicolasstucki]: https://github.com/nicolasstucki
88+
[@liufengyun]: https://github.com/liufengyun
89+
[@OlivierBlanvillain]: https://github.com/OlivierBlanvillain
90+
[@biboudis]: https://github.com/biboudis
91+
[@allanrenucci]: https://github.com/allanrenucci
92+
[@Blaisorblade]: https://github.com/Blaisorblade
93+
[@Duhemm]: https://github.com/Duhemm
94+
[@AleksanderBG]: https://github.com/abgruszecki
95+
[@milessabin]: https://github.com/milessabin
96+
[@anatoliykmetyuk]: https://github.com/anatoliykmetyuk

0 commit comments

Comments
 (0)