Skip to content

Commit 97ac294

Browse files
authored
Merge pull request #3176 from dotty-staging/blogpost
Dotty 0.4.0-RC1 Blog Post
2 parents 38c9595 + 93ce199 commit 97ac294

File tree

1 file changed

+159
-0
lines changed

1 file changed

+159
-0
lines changed
Lines changed: 159 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,159 @@
1+
---
2+
layout: blog-page
3+
title: Announcing Dotty 0.4.0-RC1
4+
author: Allan Renucci
5+
authorImg: /images/allan.jpg
6+
date: 2017-10-16
7+
---
8+
9+
Today, we are excited to release Dotty version 0.4.0-RC1. This release
10+
serves as a technology preview that demonstrates new language features
11+
and the compiler supporting them.
12+
13+
If you’re not familiar with Dotty, it's a platform to try out new language concepts and compiler
14+
technologies for Scala. The focus is mainly on simplification. We remove extraneous syntax
15+
(e.g. no XML literals), and try to boil down Scala’s types into a smaller set of more fundamental
16+
constructors. The theory behind these constructors is researched in
17+
[DOT](https://infoscience.epfl.ch/record/215280), a calculus for dependent object types.
18+
You can learn more about Dotty on our [website](http://dotty.epfl.ch).
19+
20+
<!--more-->
21+
22+
This is our fourth scheduled release according to our [6-week release schedule](http://dotty.epfl.ch/docs/usage/version-numbers.html).
23+
The [previous technology preview](/blog/2017/09/07/third-dotty-milestone-release.html) improved
24+
stability and reliability.
25+
26+
## What’s new in the 0.4.0-RC1 technology preview?
27+
28+
### Rewritten REPL [#2991](https://github.com/lampepfl/dotty/pull/2991)
29+
The original Dotty REPL was a proof of concept hacked together
30+
from
31+
[an ancient version of the scalac REPL](https://github.com/lampepfl/dotty/pull/1082#issuecomment-183905504).
32+
It worked by creating Scala source files from the user input using string
33+
concatenation, this made it easy to adapt it for Dotty since it did not rely on
34+
the internals of scalac, but it was also fragile and hard to reason about.
35+
The [new REPL](https://github.com/lampepfl/dotty/pull/2991) instead works by
36+
manipulating ASTs (Abstract Syntax Trees), this is more robust and will make it
37+
easier to develop new features: we have already implemented auto-completion
38+
support (by reusing the APIs we had created for
39+
the [Dotty IDE](http://dotty.epfl.ch/docs/usage/ide-support.html)) and we have
40+
plans for displaying API documentation in the REPL.
41+
42+
Note that the user interface of the REPL has not changed: like in the old REPL
43+
we use code adapted from the [Ammonite REPL](http://ammonite.io/#Ammonite-REPL)
44+
to provide syntax highlighting, multi-line editing, history, etc.
45+
46+
### Scala 2.12 support [#2827](https://github.com/lampepfl/dotty/pull/2827)
47+
Since our first release, it has been possible to use Scala 2 libraries in a
48+
Dotty project as explained in the
49+
[dotty-example-project](https://github.com/smarter/dotty-example-project#getting-your-project-to-compile-with-dotty).
50+
Previously, we supported libraries compiled by Scala 2.11, but starting with this
51+
release we support Scala 2.12 instead. If your Dotty project has Scala 2
52+
dependencies this change should be transparent for you assuming all your
53+
dependencies have been published for 2.12.
54+
55+
### Performance work
56+
Over the last few weeks, we started working on compilation speed with some good results:
57+
compiling [ScalaPB](https://github.com/dotty-staging/scalapb) is now 20% faster
58+
than with Dotty 0.3.0-RC2. You can follow along our progress on
59+
http://dotty-bench.epfl.ch/.
60+
61+
62+
## Trying out Dotty
63+
### Scastie
64+
[Scastie], the online Scala playground, supports Dotty.
65+
This is an easy way to try Dotty without installing anything.
66+
67+
### sbt
68+
Using sbt 0.13.13 or newer, do:
69+
70+
```
71+
sbt new lampepfl/dotty.g8
72+
```
73+
74+
This will setup a new sbt project with Dotty as compiler. For more details on
75+
using Dotty with sbt, see the
76+
[example project](https://github.com/lampepfl/dotty-example-project).
77+
78+
### IDE support
79+
It is very easy to start using the Dotty IDE in any Dotty project by following
80+
the [IDE guide](http://dotty.epfl.ch/docs/usage/ide-support.html).
81+
82+
83+
### Standalone installation
84+
Releases are available for download on the _Releases_
85+
section of the Dotty repository:
86+
[https://github.com/lampepfl/dotty/releases](https://github.com/lampepfl/dotty/releases)
87+
88+
We also provide a [homebrew](https://brew.sh/) package that can be installed by running:
89+
90+
```
91+
brew install lampepfl/brew/dotty
92+
```
93+
94+
In case you have already installed Dotty via brew, you should instead update it:
95+
96+
```
97+
brew upgrade dotty
98+
```
99+
100+
## Let us know what you think!
101+
If you have questions or any sort of feedback, feel free to send us a message on our
102+
[Gitter channel](https://gitter.im/lampepfl/dotty). If you encounter a bug, please
103+
[open an issue on GitHub](https://github.com/lampepfl/dotty/issues/new).
104+
105+
## Contributing
106+
Thank you to all the contributors who made this release possible!
107+
108+
According to `git shortlog -sn --no-merges 0.3.0-RC2..0.4.0-RC1` these are:
109+
110+
```
111+
226 Martin Odersky
112+
112 Felix Mulder
113+
104 Nicolas Stucki
114+
41 Allan Renucci
115+
41 Guillaume Martres
116+
33 liu fengyun
117+
8 Olivier Blanvillain
118+
4 Aggelos Biboudis
119+
3 Dmitry Petrashko
120+
2 Raymond Tay
121+
2 esarbe
122+
2 Enno Runne
123+
1 Brandon Elam Barker
124+
1 Raphael Bosshard
125+
1 Jacob J
126+
1 Aleksander Boruch-Gruszecki
127+
1 Jim Van Horn
128+
1 Matthias Sperl
129+
1 Michal Gutowski
130+
```
131+
132+
If you want to get your hands dirty and contribute to Dotty, now is a good time to get involved!
133+
You can have a look at our [Getting Started page for new contributors](http://dotty.epfl.ch/docs/contributing/getting-started.html),
134+
the [Awesome Error Messages](http://scala-lang.org/blog/2016/10/14/dotty-errors.html) project or some of
135+
the simple [Dotty issues](https://github.com/lampepfl/dotty/issues?q=is%3Aissue+is%3Aopen+label%3Aexp%3Anovice).
136+
They make perfect entry-points into hacking on the compiler.
137+
138+
We are looking forward to having you join the team of contributors.
139+
140+
## Library authors: Join our community build
141+
Dotty now has a set of widely-used community libraries that are built against every nightly Dotty
142+
snapshot. Currently this includes ScalaPB, algebra, scalatest, scopt and squants.
143+
Join our [community build](https://github.com/lampepfl/dotty-community-build)
144+
to make sure that our regression suite includes your library.
145+
146+
To get started, see [https://github.com/lampepfl/dotty](https://github.com/lampepfl/dotty).
147+
148+
149+
[Scastie]: https://scastie.scala-lang.org/?target=dotty
150+
151+
[@odersky]: https://github.com/odersky
152+
[@DarkDimius]: https://github.com/DarkDimius
153+
[@smarter]: https://github.com/smarter
154+
[@felixmulder]: https://github.com/felixmulder
155+
[@nicolasstucki]: https://github.com/nicolasstucki
156+
[@liufengyun]: https://github.com/liufengyun
157+
[@OlivierBlanvillain]: https://github.com/OlivierBlanvillain
158+
[@biboudis]: https://github.com/biboudis
159+
[@allanrenucci]: https://github.com/allanrenucci

0 commit comments

Comments
 (0)