Skip to content

Commit bafd620

Browse files
committed
Address comments
1 parent 76fbee9 commit bafd620

File tree

1 file changed

+41
-23
lines changed

1 file changed

+41
-23
lines changed

docs/blog/_posts/2019-12-20-21th-dotty-milestone-release.md

Lines changed: 41 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
22
layout: blog-page
3-
title: Announcing Dotty 0.21.0-RC1 – ❄️ Feature Freeze ❄️
3+
title: Announcing Dotty 0.21.0-RC1
44
author: Aggelos Biboudis
55
authorImg: /images/aggelos.png
66
date: 2019-12-21
@@ -14,25 +14,37 @@ complementary. We present new syntax for given extensions, matches and pattern
1414
matching over quotes. We are also happy to announce that SemanticDB extraction
1515
is now supported!
1616

17-
# ❄️ Feature Freeze ❄️
17+
# Feature Complete!
18+
1819
This release is a HUGE milestone for us, for Dotty, for Scala 3, for our community. Since that
1920
[initial commit](https://github.com/lampepfl/dotty/commit/90962407e72d88f8f3249ade0f6bd60ff15af5ce)
2021
on the 6th December of 2012 when the only feature was the basic structure of a
2122
compiler based on the DOT calculus, we have come a long way.
2223

23-
7 years and 20k commits later we are happy to announce that we are entering the
24-
*feature freeze* phase of Scala 3 ❄️❄️☃️. This means that with this release we
25-
stop adding new features ([Overview of Features](https://dotty.epfl.ch/docs/reference/overview.html)) and we focus on:
24+
7 years and 20k commits later we are happy to announce that we are now _feature-complete_ for Scala 3.
25+
This means that with this release we stop adding new features and we focus on:
2626

2727
- bug fixing and general quality assurance towards the final release 🐛
2828
- performance engineering 🏎️
2929
- documentation improvements 📕
3030
- education 👨‍🏫
3131

32+
Being feature complete does not mean that every detail of Scala-3 is cast in
33+
stone yet. Some details can still change, or be enabled conditionally, or even
34+
be dropped entirely. That will depend on the additional experience we gain over
35+
the next months, in particular the feedback we receive from the community and
36+
the SIP committee. But the envelope of what will (most likely) be in Scala 3 is
37+
now defined and implemented.
38+
39+
For an overview of the feature envelope that Scala 3 carries you can read our
40+
[Overview](https://dotty.epfl.ch/docs/reference/overview.html) page.
41+
For a more detailed discussion on the transition to Scala 3 you can read the
42+
[Scala 2 roadmap update: The road to Scala 3](https://www.scala-lang.org/2019/12/18/road-to-scala-3.html).
43+
3244
### Community-build
3345

34-
Feature Freeze (FF) doesn't mean that development slows down. On the contrary!
35-
FF means that we can now put the Scala 3 compiler under heavy load, getting it
46+
Being feature complete doesn't mean that development slows down. On the contrary!
47+
It means that we can now put the Scala 3 compiler under heavy load, getting it
3648
ready for industrial strength applications. At the moment we have 23
3749
projects on our community projects and we expect this number to go up!
3850

@@ -47,7 +59,7 @@ from the root of the dotty repo.
4759

4860
### New Issues
4961

50-
Firstly thank you for all the hard work in issue reporting! FF means that our
62+
Firstly thank you for all the hard work in issue reporting! Being feature complete means that our
5163
issue tracker will now be more important than ever. We encourage you to stress
5264
the compiler and report self contained test-cases! Bug minimization is hard and
5365
a form of art! Help us unearth those nasty bugs! ✊
@@ -238,16 +250,23 @@ You can read more on our docs [Match Expressions](https://dotty.epfl.ch/docs/ref
238250
## New quoted pattern matching
239251

240252
We introduce a high-level API to deconstruct or extract values out of `Expr`
241-
using pattern matching. It consists of quoted patterns that allows to
242-
deconstruct complex code that contains a precise structure, types or methods.
253+
using pattern matching. It consists of high-level extractors for getting static
254+
information out of exprs and, of quoted patterns that allows to deconstruct
255+
complex code that contains a precise structure, types or methods.
243256
Patterns `'{ ... }` can be placed in any location where Scala expects a pattern.
244257

245-
For example, the following snippet implements a simple, 1-level, non-recursive
246-
rewriter macro for exponents. `rewrite` is a an inline method definition
247-
designating a macro. To inspect an `expr` value we can now use the quoted syntax
248-
as patterns inside a match expression. Notice that quotes designate patterns and
249-
`$`, the familiar syntax for splices is used to _extract_ (capture) information
250-
out of a pattern.
258+
The new extractors are summarized below:
259+
260+
* `scala.quoted.matching.Const`: matches an expression a literal value and returns the value.
261+
* `scala.quoted.matching.ExprSeq`: matches an explicit sequence of expresions and returns them. These sequences are useful to get individual `Expr[T]` out of a varargs expression of type `Expr[Seq[T]]`.
262+
* `scala.quoted.matching.ConstSeq`: matches an explicit sequence of literal values and returns them.
263+
264+
The following snippet demonstrates the new _quoted patterns_ implementing a
265+
simple, 1-level, non-recursive rewriter macro for exponents. `rewrite` is a an
266+
inline method definition designating a macro as usual. To inspect an `expr`
267+
value with friendly syntax we can now use the quoted syntax as patterns inside a
268+
match expression. Notice that quotes designate patterns and `$`, the familiar
269+
syntax for splices is used to _extract_ (capture) information out of a pattern.
251270

252271
```scala
253272
inline def rewrite(expr: => Double): Double = ${rewrite('expr)}
@@ -269,17 +288,16 @@ def rewrite(expr: Expr[Double])(given QuoteContext): Expr[Double] = {
269288
}
270289
```
271290

272-
Additionally to the quoted patterns we provide extractors in
273-
`scala.quoted.matching` that extract static information from `Expr`s. Namely
274-
`Const`, `ExprSeq` and `ConstSeq`.
275-
276291
To learn more read our docs on [pattern matching over quotes](https://dotty.epfl.ch/docs/reference/metaprogramming/macros.html#pattern-matching-on-quoted-expressions).
277292

278293
## Added support for SemanticDB extraction
279294

280-
Scala 3 now offers support for SemanticDB extraction producing `.semanticdb` files.
281-
Users can use the `-Ysemanticdb` compiler flag to enable exporting SemanticDB files. Providing `-semanticdb-target` allows the user to select a separate target destination for the `META-INF` directory that stores SemanticDB files and `-sourceroot` to calculate a relative path for SemanticDB files within `META-INF`
282-
295+
Scala 3 now offers support for SemanticDB extraction producing `.semanticdb`
296+
files. Users can use the `-Ysemanticdb` compiler flag to enable exporting
297+
SemanticDB files. Providing `-semanticdb-target` allows the user to select a
298+
separate target destination for the `META-INF` directory that stores SemanticDB
299+
files and `-sourceroot` to calculate a relative path for SemanticDB files within
300+
`META-INF`.
283301

284302
# Let us know what you think!
285303

0 commit comments

Comments
 (0)