Skip to content

Commit 9cf7981

Browse files
Add M1 blog article
1 parent 3214be3 commit 9cf7981

File tree

1 file changed

+151
-0
lines changed

1 file changed

+151
-0
lines changed
Lines changed: 151 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,151 @@
1+
---
2+
layout: blog-page
3+
title: Scala 3.0.0-M1 is here
4+
author: Anatolii Kmetiuk
5+
authorImg: /images/anatolii.png
6+
date: 2020-11-09
7+
---
8+
November 2020 brings an important milestone for Scala 3 – the release of Scala 3.0.0-M1. This milestone release is a precursor to the Scala 3.0.0 release candidate planned for the end of the year – which is as little as 6 weeks from now! Later on, the release candidate is planned to evolve into 3.0.0 stable release in February 2021.
9+
10+
Once 3.0.0 release candidate is out, no new features or breaking changes will take place on 3.0.x – it will only be updated for bug fixes. However, we are going to continue the work on making the language better and to test out our research in it. These changes will end up in Scala only as of 3.1.0.
11+
12+
For now though, our teams are focusing the efforts on getting done with the remainder of the 40-something projects that we planned for the upcoming release back in July 2020. Many of them are already completed. Those that aren't yet – get revised and re-planned. With the current global uncertainty and with the scale of the project, cannot be certain, but we believe we have a reasonable chance of releasing 3.0.0-RC1 by Christmas.
13+
14+
Below, you can find a short summary of the changes that took place during between the 0.27.0-RC1 and 3.0.0-M1 releases.
15+
16+
<!--more-->
17+
18+
# Scala.js support for Scala 3
19+
Implemented by PRs [#9774](https://github.com/lampepfl/dotty/pull/9774) and [#9725](https://github.com/lampepfl/dotty/pull/9725), Scala 3 now supports Scala.js. You can read more about this in the [official announcement](https://www.scala-lang.org/2020/11/03/scalajs-for-scala-3.html).
20+
21+
# Allow `as` in place of `@` for pattern bindings
22+
As the title suggests, this change is fairly straightforward. Now, instead of:
23+
24+
```scala
25+
x match {
26+
case Foo(y @ Bar(z)) => println(y)
27+
}
28+
```
29+
30+
You can write:
31+
32+
```scala
33+
```scala
34+
x match {
35+
case Foo(y as Bar(z)) => println(y)
36+
}
37+
```
38+
39+
As of Scala 3.1.0, the `@` syntax will be deprecated and the codebases should switch to `as` instead.
40+
41+
This change was implemented by PR [#9837](https://github.com/lampepfl/dotty/pull/9837).
42+
43+
# Change wildcard given selectors
44+
This is another syntactic change which aims to simplify the code. Instead of:
45+
46+
```scala
47+
import p.{given _}
48+
```
49+
50+
The correct version of the wildcard `given` import now becomes:
51+
52+
```scala
53+
import p.given
54+
```
55+
56+
This change was implemented by PR [#9949](https://github.com/lampepfl/dotty/pull/9949).
57+
58+
# Keep `@alpha` optional for operators
59+
Following the discussion on [contributors](https://contributors.scala-lang.org/t/the-alpha-notation/4583), we now keep `@alpha` optional for operators. The checking behavior is still available when compiling with the `-Yrequire-alpha`.
60+
61+
`@alpha` annotations provide a way to define an alternate name for symbolic operators. You can learn more about `@alpha` annotations from the [documentation](https://dotty.epfl.ch/docs/reference/changed-features/operators.html#the-alpha-annotation). The change was implemented by PR [#10093](https://github.com/lampepfl/dotty/pull/10093).
62+
63+
# Optimizing the compiler
64+
During the last months, a considerable amount of effort went into investigating performance bottlenecks in the compiler and optimizing its workflow. We also work on stabilizing the compiler and porting relevant changes from the Scala 2 compiler to Scala 3. The following PRs are relevant to highlighting this work:
65+
66+
- Port classfile parsing improvements [#10037](https://github.com/lampepfl/dotty/pull/10037)
67+
- Semanticdb usability enhancements [#9768](https://github.com/lampepfl/dotty/pull/9768)
68+
- Optimize core and frontend [#9867](https://github.com/lampepfl/dotty/pull/9867)
69+
70+
71+
# Let us know what you think!
72+
If you have questions or any sort of feedback, feel free to send us a message on our
73+
[Gitter channel](https://gitter.im/lampepfl/dotty). If you encounter a bug, please
74+
[open an issue on GitHub](https://github.com/lampepfl/dotty/issues/new).
75+
76+
77+
## Contributors
78+
Thank you to all the contributors who made this release possible 🎉
79+
80+
According to `git shortlog -sn --no-merges 0.27.0-RC1..3.0.0-M1` these are:
81+
82+
```
83+
171 Martin Odersky
84+
94 Nicolas Stucki
85+
75 Liu Fengyun
86+
62 Aleksander Boruch-Gruszecki
87+
50 Filip Zybała
88+
35 Krzysztof Romanowski
89+
34 Anatolii Kmetiuk
90+
32 Sébastien Doeraene
91+
31 Guillaume Martres
92+
28 Jamie Thompson
93+
20 bishabosha
94+
19 Guillaume Raffin
95+
16 Krzysztof Romanwoski
96+
12 Ruslan Shevchenko
97+
9 Tom Grigg
98+
6 Som Snytt
99+
5 odersky
100+
5 Andrzej Ratajczak
101+
4 Michał Pałka
102+
3 Adrien Piquerez
103+
3 Tudor Voicu
104+
3 noti0na1
105+
2 Krzysztof Bochenek
106+
2 Tudor
107+
2 Raphael Jolly
108+
2 Miles Sabin
109+
1 Vasil Vasilev
110+
1 ansvonwa
111+
1 Greg Zoller
112+
1 felher
113+
1 gzoller
114+
1 zgrybus
115+
1 Fengyun Liu
116+
1 Philippus Baalman
117+
1 Krzysiek Bochenek
118+
1 Tomasz Godzik
119+
1 ysthakur
120+
```
121+
122+
If you want to get your hands dirty and contribute to Dotty, now is a good time to get involved!
123+
Head to our [Getting Started page for new contributors](https://dotty.epfl.ch/docs/contributing/getting-started.html),
124+
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).
125+
They make perfect entry points into hacking on the compiler.
126+
127+
We are looking forward to having you join the team of contributors.
128+
129+
## Library authors: Join our community build
130+
131+
Dotty now has a set of widely-used community libraries that are built against every nightly Dotty
132+
snapshot. Currently, this includes shapeless, ScalaPB, algebra, scalatest, scopt and squants.
133+
Join our [community build](https://github.com/lampepfl/dotty/tree/master/community-build)
134+
to make sure that our regression suite includes your library.
135+
136+
[Scastie]: https://scastie.scala-lang.org/?target=dotty
137+
138+
[@odersky]: https://github.com/odersky
139+
[@DarkDimius]: https://github.com/DarkDimius
140+
[@smarter]: https://github.com/smarter
141+
[@felixmulder]: https://github.com/felixmulder
142+
[@nicolasstucki]: https://github.com/nicolasstucki
143+
[@liufengyun]: https://github.com/liufengyun
144+
[@OlivierBlanvillain]: https://github.com/OlivierBlanvillain
145+
[@biboudis]: https://github.com/biboudis
146+
[@allanrenucci]: https://github.com/allanrenucci
147+
[@Blaisorblade]: https://github.com/Blaisorblade
148+
[@Duhemm]: https://github.com/Duhemm
149+
[@AleksanderBG]: https://github.com/AleksanderBG
150+
[@milessabin]: https://github.com/milessabin
151+
[@anatoliykmetyuk]: https://github.com/anatoliykmetyuk

0 commit comments

Comments
 (0)