You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/blog/_posts/2018-07-06-ninth-dotty-milestone-release.md
+23-5Lines changed: 23 additions & 5 deletions
Original file line number
Diff line number
Diff line change
@@ -33,11 +33,13 @@ support for sbt 1, introduced improved unchecked warnings and improved SAM type
33
33
The REPL now uses [JLine 3](https://github.com/jline/jline3) under the hood which improves on
34
34
many aspects such as auto-completions and multi-line editing. The REPL now also works on Windows!
35
35
36
+
36
37
### Documentation support in the IDE [#4461](https://github.com/lampepfl/dotty/pull/4461), [#4648](https://github.com/lampepfl/dotty/pull/4648)
37
38
The Dotty IDE will now display documentation on code hover for symbols that were previously
38
39
compiled by the Dotty compiler. In the future, we plan to let users query the documentation
39
40
in the REPL as well.
40
41
42
+
41
43
### Drop requirement that implicit functions must be non-empty [#4549](https://github.com/lampepfl/dotty/pull/4549)
42
44
We decided to remove an arbitrary restriction that implicit and functions must be non-empty.
43
45
We can now write:
@@ -50,8 +52,8 @@ val prod2: IntProducer = 2
50
52
51
53
An interesting observation is that by-name parameters can now be encoded as implicit function types:
52
54
```scala
53
-
deftimed[T](op: =>T) = ...
54
-
deftimed[T](op: implicit () =>T) = ...
55
+
deftimed[T](op: =>T):T= ...
56
+
deftimed[T](op: implicit () =>T):T= ...
55
57
56
58
timed {
57
59
fetch(url)
@@ -60,6 +62,7 @@ timed {
60
62
61
63
Both definitions above are equivalent.
62
64
65
+
63
66
### Emit feature warnings for implicit conversions [#4229](https://github.com/lampepfl/dotty/pull/4229)
64
67
Implicit conversions are easily the most misused feature in Scala. We now emit feature warnings
65
68
when encountering an implicit conversion definition, just like Scala 2 does.
@@ -69,22 +72,37 @@ unless the conversion is an implicit class, or otherwise co-defined with the typ
69
72
to which it converts, or the conversion is predefined in `scala.Predef` or is the
70
73
`scala.reflect.Selectable.reflectiveSelect` conversion (we might extend this to more conversions).
71
74
72
-
### Optimise s and raw interpolators [#3961](https://github.com/lampepfl/dotty/pull/4229)
75
+
76
+
### Optimise s and raw interpolators [#3961](https://github.com/lampepfl/dotty/pull/3961)
73
77
`s` and `raw` string interpolators were known to be slower than their not type-safe counterparts:
74
78
```scala
75
79
s"Hello $name!"
76
80
77
-
//versus
81
+
//compared to:
78
82
"Hello "+ name +"!"
79
83
```
80
84
The compiler will now desugar the former into the later. Special thanks to
81
85
[Wojtek Swiderski](https://github.com/Wojtechnology) who contributed this feature to the Dotty
82
86
compiler!
83
87
88
+
89
+
### Support for compiler plugins [#3438](https://github.com/lampepfl/dotty/pull/#3438)
90
+
Dotty now supports Compiler plugins. Compiler plugins let you customise the compiler pipeline
91
+
without having to modify the compiler source code. A major difference compared to Scala 2 is
92
+
that Dotty plugins must run after the type checker. Being able to influence normal type checking
93
+
is a very powerful feature but for production usages, a predictable and consistent type checker
94
+
is more important.
95
+
96
+
Starting with 1.1.5 Dotty compiler plugins can be used with `sbt`. Please refer to the `sbt`
97
+
[documentation](https://www.scala-sbt.org/1.x/docs/Compiler-Plugins.html) for more information.
98
+
99
+
For more information, visit the [Compiler Plugin](http://dotty.epfl.ch/docs/reference/changed/compiler-plugins.html)
0 commit comments