diff --git a/docs/blog/_posts/2017-05-31-first-dotty-milestone-release.md b/docs/blog/_posts/2017-05-31-first-dotty-milestone-release.md new file mode 100644 index 000000000000..a534b75370aa --- /dev/null +++ b/docs/blog/_posts/2017-05-31-first-dotty-milestone-release.md @@ -0,0 +1,120 @@ +--- +layout: blog-page +title: Announcing Dotty 0.1.2-RC1, a major step towards Scala 3 +author: Dmytro Petrashko +authorImg: /images/petrashko.jpg +--- + +Today, we are excited to release Dotty version 0.1.2-RC1. This release +serves as a technology preview that demonstrates new language features +and the compiler supporting them. + + + + +## Why is this important? + +_Dotty_ is the project name for a language and compiler that +is slated to become Scala 3.0. This is an ongoing development, +transparently developed as open source software. The Dotty project +started more than 4 years ago. It reached a major milestone in 2015 by +achieving +[bootstrap](http://dotty.epfl.ch/blog/2015/10/23/dotty-compiler-bootstraps.html), +that is, showing that the new compiler could compile itself. Today we +have reached another milestone with this first release of the +codebase. Developments will not stop here, but they will in the future +all be part of regular time-based releases. + +## How can you try it out? + +You have several alternatives: use the `sbt-dotty` plugin, get a standalone +installation, or try it online on [Scastie]. + +### sbt +Using sbt 0.13.13 or newer, do: + +``` +sbt new lampepfl/dotty.g8 +``` + +This will setup a new sbt project with Dotty as compiler. For more details on +using Dotty with sbt, see the +[example project](https://github.com/lampepfl/dotty-example-project). + +### Standalone installation + +Releases are available for download on the _Releases_ +section of the Dotty repository: +https://github.com/lampepfl/dotty/releases + +We also provide a [homebrew](https://brew.sh/) package that can be installed by running + +``` +brew install lampepfl/brew/dotty +``` + +### Scastie + +[Scastie], the online Scala playground, +supports Dotty. +You can try it out there without installing anything. + +# What’s in the 0.1.2-RC1 technology preview? +This technology preview demonstrates new language features planned for Scala 3: + + - [Intersection Types](http://dotty.epfl.ch/docs/reference/intersection-types.html) + - [Union Types](http://dotty.epfl.ch/docs/reference/union-types.html) + - [Trait Parameters](http://dotty.epfl.ch/docs/reference/trait-parameters.html) + - [Enumerations](http://dotty.epfl.ch/docs/reference/enums.html) + - [Algebraic Data Types](http://dotty.epfl.ch/docs/reference/adts.html) + - [By-Name Implicits](http://dotty.epfl.ch/docs/reference/implicit-by-name-parameters.html) + +We also ship with tools that help you try out the Dotty platform: + + - [IDE features for Visual Studio Code](http://dotty.epfl.ch/docs/usage/ide-support.html) + - [sbt support, including retro-compatibility with Scala 2](https://github.com/lampepfl/dotty-example-project) + +See here for the full [release notes](http://dotty.epfl.ch/docs/release-notes/0.1.2.html). + +## Release schedule + +Starting from this release, we are adopting a time-based release schedule: +- Nightly builds will be published, for those wanting to be at the forefront of + development. +- Every 6 weeks, a release candidate will be cut based on the latest nightly build. +- Every 6 weeks, the latest release candidate becomes a release. + +At the end of 6 weeks, the milestone will be promoted to a stable release. +See here for the full [version number explanation](http://dotty.epfl.ch/docs/usage/version-numbers.html). + +## What are the next steps? + +Over the coming weeks and months, we plan to work on the following topics: + + - [Integrate Local optimizations developed in Dotty linker](https://github.com/lampepfl/dotty/pull/2513); + - [Add Language-level support for HMaps and HLists](https://github.com/lampepfl/dotty/pull/2199); + - [Port global optimizations from Dotty linker](https://github.com/lampepfl/dotty/pull/1840). + +If you want to get your hands dirty with any of this, now is a good +moment to get involved! Join the team of contributors, including +Martin Odersky ([@odersky](https://twitter.com/odersky)) +Dmitry Petrashko ([@DarkDimius](https://twitter.com/DarkDimius)), +Guillaume Martres ([@smarter](https://github.com/smarter)), +Felix Mulder ([@felixmulder](https://twitter.com/felixmulder)), +Nicolas Stucki ([@nicolasstucki](https://github.com/nicolasstucki)), +Liu Fengyun ([@liufengyun](https://github.com/liufengyun)), +Olivier Blanvillain ([@OlivierBlanvillain](https://github.com/OlivierBlanvillain)), +and others! + +## Library authors: Join our community build + +Dotty now has a set of libraries that are built against every nightly snapshot. +Currently this includes scalatest, squants and algebra. +Join our [community build](https://github.com/lampepfl/dotty-community-build) + to make sure that our regression suite includes your library. + + +To get started, see . + + +[Scastie]: https://scastie.scala-lang.org/?target=dotty diff --git a/docs/docs/release-notes/0.1.2.md b/docs/docs/release-notes/0.1.2.md new file mode 100644 index 000000000000..2aa4c7afdc19 --- /dev/null +++ b/docs/docs/release-notes/0.1.2.md @@ -0,0 +1,194 @@ +--- +layout: doc-page +title: 0.1.2 release notes +--- + +0.1.2 will be the first public release of Dotty. +Being the first one, these notes are incomplete. +This document is a work in progress until 0.1.2-final is released. +These notes are up-to-date based on 0.1.2-RC1 and will be updated +with changes that happen during the RC stabilization cycle. + +# Required Java Version + +Dotty 0.1.2 targets Java 8. We don't have plans to add support for earlier versions of Java. + +# IDE support for Dotty + +# Reporting Bugs / Known Issues + +Please [file](https://github.com/lampepfl/dotty/issues) any bugs you encounter. If you’re unsure whether something is a bug, +please ask on the Dotty [gitter channel](https://github.com/lampepfl/dotty). + +# Dotty Doc + +Dotty has added support for Dotty Doc. +Actually, the dotty documentation site [http://dotty.epfl.ch/docs/](http://dotty.epfl.ch/docs/) is generated by it. +Looks nice, doesn’t it? + +#Other implemented features: + +This release ships with the following features: + + - TASTY support by [@odersky], [@xeno-by] and [@darkdimius] [\[1\]][1] + - HK-types support by [@odersky], [@smarter] and [@darkdimius] [\[2\]][2] + - Intersection and Union Types by [@odersky] [\[3\]][3] [\[4\]][3] + - Enumerations by [@odersky] [\[4\]][4] [\[5\]][5] [\[6\]][6] + - Implicit By-Name Parameters by [@odersky] [\[7\]][7] + - Miniphases-based design by [@darkdimius], [@odersky] and [@olhotak] [\[8\]][8] + - `@static` methods support by [@darkdmius] [\[9\]][9] + - Non-blocking lazy vals by [@darkdimius] [\[10\]][10] + - JVM code emission by [@magarciaEPFL] and [@darkdimius] [\[11\]][11] + - Efficient multi-dimensional array allocation by [@darkdimius] [\[12\]][12] + - Default-method based trait composition [@odersky] and [@darkdimius] [\[13\]][13] [\[14\]][14] + - Trait parameters by [@odersky] [\[15\]][15] + - Working contravariant implicits by [@odersky] [\[16\]][16] + - Option-less pattern matching by [@odersky], [@darkdimius] and [@OlivierBlanvillain] [\[17\]][17] + - SAM-based anonymous functions by [@magarciaEPFL], [@darkdimius] and [@retronym] [\[18\]][18] + - Pattern matching support by [@darkdimius] [\[19\]][19] + - Value classes support by [@smarter] and [@darkdimius] [\[20\]][20] + - Pattern matching exhaustivity checks by [@liufengyun] [\[21\]][21] + - Tailrec optimization by [@darkdimius] [\[22\]][22] [\[23\]][23] + - Language server protocol implementation by [@smarter] [\[24\]][24] + - VS code plugin by [@smarter] [\[24\]][24] + - Vulpix: new test-suite driver by [@felixmulder] that replaces partest by [@vsalvis] [\[25\]][25] + - Java parser by [@olhotak] [\[26\]][26] + - Local optimizations(-optimise) by [@darkdimius] and [@OlivierBlanvillain] [\[27\]][27] + - sbt support by [@smarter] [\[28\]][28] + - DottyDoc by [@felixmulder] [\[29\]][29] + - Implicit Function Types by [@odersky] [\[30\]][30] + - Phantom Types by [@nicolasstucki] [\[31\]][31] + - Functions with more than 22 parameters by [@odersky] [\[32\]][32] + - Inline keyword by [@odersky] [\[33\]][33] + +[@odersky]: https://twitter.com/odersky +[@DarkDimius]: https://twitter.com/DarkDimius +[@smarter]: https://github.com/smarter +[@felixmulder]: https://twitter.com/felixmulder +[@nicolasstucki]: https://github.com/nicolasstucki +[@liufengyun]: https://github.com/liufengyun +[@OlivierBlanvillain]: https://github.com/OlivierBlanvillain +[@olhotak]: https://plg.uwaterloo.ca/~olhotak/ +[@retronym]: https://github.com/retronym +[@xeno-by]: https://github.com/xeno-by +[@vsalvis]: https://github.com/vsalvis +[@magarciaEPFL]: https://github.com/magarciaEPFL + +[1]: https://docs.google.com/document/d/1h3KUMxsSSjyze05VecJGQ5H2yh7fNADtIf3chD3_wr0/edit +[2]: https://infoscience.epfl.ch/record/222780?ln=en +[3]: http://dotty.epfl.ch/docs/reference/intersection-types.html +[4]: http://dotty.epfl.ch/docs/reference/union-types.html +[5]: http://dotty.epfl.ch/docs/reference/adts.html +[6]: http://dotty.epfl.ch/docs/reference/desugarEnums.html +[7]: http://dotty.epfl.ch/docs/reference/implicit-by-name-parameters.html +[8]: https://infoscience.epfl.ch/record/228518 +[9]: http://docs.scala-lang.org/sips/pending/static-members.html +[10]: http://docs.scala-lang.org/sips/pending/improved-lazy-val-initialization.html +[11]: http://magarciaepfl.github.io/scala/ +[12]: https://github.com/lampepfl/dotty/commit/b2215ed23311b2c99ea638f9d7fcad9737dba588 +[13]: https://github.com/lampepfl/dotty/pull/187 +[14]: https://github.com/lampepfl/dotty/pull/217 +[15]: http://dotty.epfl.ch/docs/reference/trait-parameters.html +[16]: https://github.com/lampepfl/dotty/commit/89540268e6c49fb92b9ca61249e46bb59981bf5a +[17]: https://github.com/lampepfl/dotty/pull/174 +[18]: https://github.com/lampepfl/dotty/pull/488 +[19]: https://github.com/lampepfl/dotty/pull/174 +[20]: https://github.com/lampepfl/dotty/pull/411 +[21]: https://github.com/lampepfl/dotty/pull/1364 +[22]: https://github.com/lampepfl/dotty/pull/1227 +[23]: https://github.com/lampepfl/dotty/pull/117 +[24]: https://github.com/lampepfl/dotty/pull/2532 +[25]: https://github.com/lampepfl/dotty/pull/2194 +[26]: https://github.com/lampepfl/dotty/pull/213 +[27]: https://github.com/lampepfl/dotty/pull/2513 +[28]: https://github.com/lampepfl/dotty/pull/2361 +[29]: https://github.com/lampepfl/dotty/pull/1453 +[30]: http://dotty.epfl.ch/docs/reference/implicit-function-types.html +[31]: https://github.com/lampepfl/dotty/pull/2136 +[32]: https://github.com/lampepfl/dotty/pull/1758 +[33]: http://dotty.epfl.ch/docs/reference/inline.html + +# Contributors +The Dotty team and contributors have closed 750 issues and have merged a total of 1258 pull requests. + +Concretely, according to + + ``` + git ls-tree -r -z --name-only HEAD -- |egrep -z -Z -E '\.(scala)$'| xargs -0 -n1 git blame --line-porcelain |grep "^author "|sort|uniq -c|sort -nr + ``` +71 people contributed code, tests, and/or documentation to Dotty 0.1.2-RC1. +The following people have contributed to this release: + +| commits | blame lines | Name | +|---------|-------------|-----------------------------| +| 4346 | 82017 | Martin Odersky | +| 1288 | 83070 | Dmitry Petrashko | +| 19 | 35382 | Samuel Gruetter | +| 826 | 20148 | Felix Mulder | +| 567 | 10454 | Guillaume Martres | +| 136 | 5311 | liu fengyun | +| 189 | 4449 | Nicolas Stucki | +| 21 | 3717 | Sébastien Doeraene | +| 30 | 1711 | Ondrej Lhotak | +| 33 | 1094 | Enno Runne | +| 47 | 735 | Olivier Blanvillain | +| 4 | 480 | Valthor Halldorsson | +| 7 | 343 | Aleksander Boruch-Gruszecki | +| 25 | 220 | VladimirNik | +| 3 | 186 | Enno | +| 8 | 143 | Clemens Winter | +| 16 | 133 | Jason Zaugg | +| 3 | 116 | Miron Aseev | +| 4 | 109 | Shane Delmore | +| 5 | 100 | Alexander Myltsev | +| 5 | 96 | Abel Nieto | +| 1 | 92 | Dmitry Melnichenko | +| 22 | 88 | Jonathan Brachthäuser | +| 5 | 87 | Guillaume Massé | +| 20 | 75 | vsalvis | +| 2 | 64 | Tobias Schlatter | +| 4 | 51 | Ólafur Páll Geirsson | +| 4 | 49 | Sebastian Harko | +| 2 | 48 | Andrew Zurn | +| 3 | 44 | jvican | +| 1 | 43 | Jarrod Janssen | +| 1 | 43 | Igor Mielientiev | +| 2 | 35 | Thiago Pereira | +| 5 | 32 | Martijn Hoekstra | +| 1 | 26 | Bartosz Krasiński | +| 1 | 24 | Adam Trousdale | +| 10 | 22 | Aggelos Biboudis | +| 12 | 20 | Paolo G. Giarrusso | +| 1 | 17 | Jon-Anders Teigen | +| 17 | 16 | Vlad Ureche | +| 1 | 16 | Jyotman Singh | +| 4 | 15 | Lucas Burson | +| 1 | 12 | Markus Hauck | +| 3 | 11 | Varunram Ganesh | +| 2 | 11 | Reto Hablützel | +| 3 | 10 | Allan Renucci | +| 4 | 9 | Sarunas Valaskevicius | +| 2 | 9 | Nikolay.Tropin | +| 1 | 9 | Csongor Kiss | +| 2 | 7 | dos65 | +| 2 | 6 | Varunram | +| 6 | 5 | Nada Amin | +| 1 | 4 | ruben | +| 1 | 4 | Kazuyoshi Kato | +| 1 | 3 | Jonathan Rodriguez | +| 1 | 3 | andreaTP | +| 1 | 1 | AlexSikia | +| 3 | 0 | Edmund Noble | +| 2 | 0 | jvican | +| 3 | 0 | Allan Renucci | +| 3 | 0 | Senia-psm | +| 2 | 0 | Lukas Rytz | +| 2 | 0 | Jan Christopher Vogt | +| 2 | 0 | Raymond Tay | +| 1 | 0 | Matthias Sperl | +| 1 | 0 | Herdy Handoko | +| 1 | 0 | Grzegorz Kossakowski | +| 1 | 0 | George Leontiev | +| 1 | 0 | Sandro Stucki | +| 1 | 0 | Adriaan Moors | +| 1 | 0 | Simon Hafner | diff --git a/docs/docs/usage/version-numbers.md b/docs/docs/usage/version-numbers.md new file mode 100644 index 000000000000..c305e9d050c2 --- /dev/null +++ b/docs/docs/usage/version-numbers.md @@ -0,0 +1,17 @@ +--- +layout: doc-page +title: "Version numbers" +--- + +Dotty uses multiple schemes for version numbering. + +Stable releases have version numbers of the form `0.${x}.${y}`, where `x` is a main version and `y` is a bug-fix update id. + +Release candidates version numbers have the form `0.${x}.${y}-RC${z}`. +Every 6 weeks, the latest release candidate is promoted to stable and becomes version `0.${x}.${y}`. +The release candidates let library authors test their code in advance of each +release. Multiple release candidates may be released during each 6 weeks +period to fix regressions and are differentiated by `z`. + +Nightlies have version numbers of the form `0.${x}.${y}-bin-${date}-${sha}-NIGHTLY`. +Every 6 weeks, the latest nightly is promoted to release candidate becomes version `0.${x}.${y}-RC1`.