Skip to content

Commit f2c44f2

Browse files
committed
Address comments
1 parent e2f6a86 commit f2c44f2

File tree

1 file changed

+24
-24
lines changed

1 file changed

+24
-24
lines changed

docs/blog/_posts/2019-03-01-13th-dotty-milestone-release.md

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -13,22 +13,23 @@ Without further ado, today we release the version 0.13.0-RC1 of the Dotty compil
1313
This release serves as a technology preview that demonstrates new language features and the
1414
compiler supporting them.
1515

16-
Dotty is the project name for technologies that are considered for inclusion in Scala 3. Scala has
17-
pioneered the fusion of object-oriented and functional programming in a typed setting. Scala 3 will
18-
be a big step towards realising the full potential of these ideas. Its main objectives are to
16+
Dotty is the project name for technologies that are being considered for
17+
inclusion in Scala 3. Scala has pioneered the fusion of object-oriented and
18+
functional programming in a typed setting. Scala 3 will be a big step towards
19+
realising the full potential of these ideas. Its main objectives are to
1920

2021
- become more opinionated by promoting programming idioms we found to work well,
2122
- simplify where possible,
2223
- eliminate inconsistencies and surprising behaviours,
23-
- build on strong foundations to ensure the design hangs well together,
24+
- build on strong foundations to ensure the design hangs together well,
2425
- consolidate language constructs to improve the language’s consistency, safety, ergonomics, and
2526
performance.
2627

2728
You can learn more about Dotty on our [website](https://dotty.epfl.ch).
2829

2930
<!--more-->
3031

31-
This is our 132th scheduled release according to our
32+
This is our 13th scheduled release according to our
3233
[6-week release schedule](https://dotty.epfl.ch/docs/usage/version-numbers.html).
3334

3435
# What’s new in the 0.13.0-RC1 technology preview?
@@ -62,9 +63,9 @@ varied number of use cases, among them: implementing type classes, establishing
6263
context, dependency injection, expressing capabilities, computing new types and
6364
proving relationships between them.
6465

65-
However, we identify a few side-effects that implicits gave rise to, as a
66+
However, we identify a few consequences that implicits gave rise to, as a
6667
programming style. Firstly, users used implicit conversions between types, in an
67-
undisciplined matter. This overuse of implicit conversions declattered code for
68+
unprincipled matter. This overuse of implicit conversions decluttered code for
6869
sure, but it made it harder for people to reason about.
6970

7071
```scala
@@ -77,14 +78,17 @@ implicit values and we identify that their semantic differences must be
7778
communicated more clearly syntactically. Secondly, implicits pose challenges for
7879
tooling such as error reporting for failed implicit searches. Furthermore, the
7980
`implicit` keyword is way too overloaded (implicit vals, defs, objects,
80-
parameters, or arguments) and users may use it as a mechanism rather than an
81-
intent. Another consideration is that the `implicit` keyword annotates a whole
82-
parameter section instead of a single parameter, and passing an argument to an
83-
implicit parameter looks like a regular application. This is problematic because
84-
it can create confusion regarding what parameter gets instantiated in a call.
85-
Last but not least, some times implicit parameters are merely propagated in
86-
nested function calls and not used at all, so names of implicit parameters are
87-
not always necessary.
81+
parameters, or arguments). For instance, a newcomer can easily confuse the two
82+
examples above while they demonstrate completely different things, a typeclass
83+
instance is an implicit object or val if unconditional and an implicit def with
84+
implicit parameters if conditional; arguably all of them are surprisingly
85+
similar (syntactically). Another consideration is that the `implicit` keyword
86+
annotates a whole parameter section instead of a single parameter, and passing
87+
an argument to an implicit parameter looks like a regular application. This is
88+
problematic because it can create confusion regarding what parameter gets passed
89+
in a call. Last but not least, sometimes implicit parameters are merely
90+
propagated in nested function calls and not used at all, so names of implicit
91+
parameters are not always necessary.
8892

8993
Consequently, we introduce two new language features:
9094

@@ -154,7 +158,7 @@ implied ctx for ExecutionContext = currentThreadPool().context
154158
For symmetry, we define our well-known `implicitly` from `Predef` in terms of
155159
`given` and for simplicity we rename it to `the`. Functions like `the` that have
156160
only _inferable parameters_ are also called _context queries_ from now on.
157-
Consequently, to create an implied instance of `Ord[List[Int]]` we write:
161+
Consequently, to summon an implied instance of `Ord[List[Int]]` we write:
158162

159163
```scala
160164
the[Ord[List[Int]]]
@@ -188,7 +192,7 @@ parameters. Here is an example of such a function:
188192
type Contextual[T] = given Context => T
189193
```
190194

191-
Context queries--previously named implicit function types--are now also
195+
Context queries--previously named implicit function types (IFTs)--are now also
192196
expressed with `given`, providing types for first-class context queries. This is
193197
merely an alignment of IFTs into the new scheme.
194198

@@ -250,7 +254,7 @@ for a deep dive at the relevant PRs:
250254
[#5540](https://github.com/lampepfl/dotty/pull/5540) and
251255
[#5839](https://github.com/lampepfl/dotty/pull/5839).
252256

253-
`Multiversal equality` is now supported through the `Eql` marker trait (renamed
257+
_Multiversal equality_ is now supported through the `Eql` marker trait (renamed
254258
from `Eq` to differentiate it from Cats' `Eq`). For example, in order to be able
255259
to compare integers with strings now, instead of a custom implicit we can
256260
provide a derived implicit instance:
@@ -271,7 +275,7 @@ implied for Conversion[String, Token] {
271275
}
272276
```
273277

274-
It is worth mentioning that we now allow arbitrary definitions at the toplevel.
278+
It is worth mentioning that we now allow arbitrary definitions at the top level.
275279
This means package objects are now redundant, and will be phased out.
276280
You can read about [dropping package objects](https://dotty.epfl.ch/docs/reference/dropped-features/package-objects.html)
277281
at the documentation linked or at the relevant PR
@@ -301,10 +305,6 @@ first prototype for the generation of SemanticDB information from TASTy.
301305

302306
## And much more!
303307

304-
Other significant changes in this release are the following:
305-
306-
307-
308308
Please read our [release notes](https://github.com/lampepfl/dotty/releases/tag/0.13.0-RC1)
309309
for more details!
310310

@@ -338,7 +338,7 @@ Releases are available for download on the _Releases_
338338
section of the Dotty repository:
339339
[https://github.com/lampepfl/dotty/releases](https://github.com/lampepfl/dotty/releases)
340340

341-
For MacOs users, we also provide a [homebrew](https://brew.sh/) package that can be installed by
341+
For macOS users, we also provide a [homebrew](https://brew.sh/) package that can be installed by
342342
running:
343343

344344
```shell

0 commit comments

Comments
 (0)