|
| 1 | +--- |
| 2 | +layout: blog-page |
| 3 | +title: Announcing Dotty 0.25.0-RC2 - speed-up of givens and change in the tuple API |
| 4 | +author: Anatolii Kmetiuk |
| 5 | +authorImg: /images/anatolii.png |
| 6 | +date: 2020-06-22 |
| 7 | +--- |
| 8 | + |
| 9 | +Hello! We are excited to announce 0.25.0-RC2 of Dotty. In this version, following feedback of the community, we have improved compilation speeds when programming with givens. We have also made some improvements to the tuple API. |
| 10 | + |
| 11 | +You can try out this version right now, from the comfort of your SBT, by visiting the [home page](https://dotty.epfl.ch/) and scrolling down to the "Create a Dotty Project" section. |
| 12 | + |
| 13 | +Alternatively, you can try this version of Scala online via [Scastie](https://scastie.scala-lang.org/). Once you're there, click "Build Settings" and set "Target" to "Dotty". |
| 14 | + |
| 15 | +Enjoy the ride🚀! |
| 16 | + |
| 17 | +<!--more--> |
| 18 | +# Dedicated type for empty tuples |
| 19 | +We have added a type `EmptyTuple` to represent empty tuples. Previously empty tuples were represented by `Unit`. This change was done so that all the tuples are a subtype of `Product`. Now, tuples have the following type hierarchy: |
| 20 | + |
| 21 | +```scala |
| 22 | +Product -- Tuple -+- EmptyTuple |
| 23 | + | |
| 24 | + +- NonEmptyTuple -- *:[Head, Tail <: Tuple] |
| 25 | +``` |
| 26 | + |
| 27 | +This change impacts existing typeclass derivation codebases in that they now should use `EmptyTuple` instead of `Unit` in the tuple context. |
| 28 | + |
| 29 | +# Avoid excessive slowdowns when suggesting missing imports in error messages |
| 30 | +Dotty brings to the user an enhanced error reporting when it comes to programming with givens. This better error reporting, however, proved to be a trade-off. Sometimes it takes an unreasonable amount of time and space to compute a quality suggestion to the end user. |
| 31 | + |
| 32 | +A number of users reported considerable slowdowns when it comes to programming with implicits. To address this issue, we have modified the logic for given imports suggestion. We introduced a per-run budget of 10 seconds, so it is guaranteed that it won't take longer than that time to compute all the given imports. |
| 33 | + |
| 34 | +This default budget is configurable via a compiler flag `-Ximport-suggestion-timeout`. |
| 35 | + |
| 36 | +This change should speed up the compiler when it comes to programming with givens. |
| 37 | + |
| 38 | +For more information, see PR [#9167](https://github.com/lampepfl/dotty/pull/9167). |
| 39 | + |
| 40 | +# Let us know what you think! |
| 41 | + |
| 42 | +If you have questions or any sort of feedback, feel free to send us a message on our |
| 43 | +[Gitter channel](https://gitter.im/lampepfl/dotty). If you encounter a bug, please |
| 44 | +[open an issue on GitHub](https://github.com/lampepfl/dotty/issues/new). |
| 45 | + |
| 46 | +## Contributing |
| 47 | +Thank you to all the contributors who made this release possible 🎉 |
| 48 | + |
| 49 | +According to `git shortlog -sn --no-merges 0.24.0-RC1..0.25.0-RC2` these are: |
| 50 | + |
| 51 | +``` |
| 52 | + 190 Nicolas Stucki |
| 53 | + 175 Martin Odersky |
| 54 | + 67 Liu Fengyun |
| 55 | + 32 Guillaume Martres |
| 56 | + 17 Robert Stoll |
| 57 | + 17 bishabosha |
| 58 | + 9 Anatolii Kmetiuk |
| 59 | + 7 yu-croco |
| 60 | + 6 Reto Hablützel |
| 61 | + 5 Akhtiam Sakaev |
| 62 | + 5 odersky |
| 63 | + 4 Raphael Jolly |
| 64 | + 4 Ruslan Shevchenko |
| 65 | + 4 Olivier Blanvillain |
| 66 | + 3 Jamie Thompson |
| 67 | + 3 Chris Birchall |
| 68 | + 2 Radosław Waśko |
| 69 | + 2 Aleksander Boruch-Gruszecki |
| 70 | + 2 Eric Loots |
| 71 | + 2 Jens Kat |
| 72 | + 2 Miles Sabin |
| 73 | + 2 noti0na1 |
| 74 | + 1 Krzysztof Bochenek |
| 75 | + 1 Seth Tisue |
| 76 | + 1 Tobias Kahlert |
| 77 | + 1 Yilin Wei |
| 78 | + 1 ansvonwa |
| 79 | + 1 FabioPinheiro |
| 80 | + 1 december32 |
| 81 | + 1 yytyd |
| 82 | + 1 Ara Adkins |
| 83 | + 1 squid314 |
| 84 | + 1 typeness |
| 85 | + 1 xuwei-k |
| 86 | + 1 Alex Zolotko |
| 87 | + 1 Julien Richard-Foy |
| 88 | +``` |
| 89 | + |
| 90 | +If you want to get your hands dirty and contribute to Dotty, now is a good time to get involved! |
| 91 | +Head to our [Getting Started page for new contributors](https://dotty.epfl.ch/docs/contributing/getting-started.html), |
| 92 | +and have a look at some of the [good first issues](https://github.com/lampepfl/dotty/issues?q=is%3Aissue+is%3Aopen+label%3Aexp%3Anovice). |
| 93 | +They make perfect entry points into hacking on the compiler. |
| 94 | + |
| 95 | +We are looking forward to having you join the team of contributors. |
| 96 | + |
| 97 | +## Library authors: Join our community build |
| 98 | + |
| 99 | +Dotty now has a set of widely-used community libraries that are built against every nightly Dotty |
| 100 | +snapshot. Currently, this includes shapeless, ScalaPB, algebra, scalatest, scopt and squants. |
| 101 | +Join our [community build](https://github.com/lampepfl/dotty/tree/master/community-build) |
| 102 | +to make sure that our regression suite includes your library. |
| 103 | + |
| 104 | +[Scastie]: https://scastie.scala-lang.org/?target=dotty |
| 105 | + |
| 106 | +[@odersky]: https://github.com/odersky |
| 107 | +[@DarkDimius]: https://github.com/DarkDimius |
| 108 | +[@smarter]: https://github.com/smarter |
| 109 | +[@felixmulder]: https://github.com/felixmulder |
| 110 | +[@nicolasstucki]: https://github.com/nicolasstucki |
| 111 | +[@liufengyun]: https://github.com/liufengyun |
| 112 | +[@OlivierBlanvillain]: https://github.com/OlivierBlanvillain |
| 113 | +[@biboudis]: https://github.com/biboudis |
| 114 | +[@allanrenucci]: https://github.com/allanrenucci |
| 115 | +[@Blaisorblade]: https://github.com/Blaisorblade |
| 116 | +[@Duhemm]: https://github.com/Duhemm |
| 117 | +[@AleksanderBG]: https://github.com/AleksanderBG |
| 118 | +[@milessabin]: https://github.com/milessabin |
| 119 | +[@anatoliykmetyuk]: https://github.com/anatoliykmetyuk |
0 commit comments