Skip to content

0.25.0-RC2 release blog article #9174

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Jun 22, 2020
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
119 changes: 119 additions & 0 deletions docs/blog/_posts/2020-06-22-25th-dotty-milestone-release.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,119 @@
---
layout: blog-page
title: Announcing Dotty 0.25.0-RC2 - speed-up of givens and change in the tuple API
author: Anatolii Kmetiuk
authorImg: /images/anatolii.png
date: 2020-06-22
---

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.

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.

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".

Enjoy the ride🚀!

<!--more-->
# Dedicated type for empty tuples
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:

```scala
Product -- Tuple -+- EmptyTuple
|
+- NonEmptyTuple -- *:[Head, Tail <: Tuple]
```

This change impacts existing typeclass derivation codebases in that they now should use `EmptyTuple` instead of `Unit` in the tuple context.

# Avoid excessive slowdowns when suggesting missing imports in error messages
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.

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.

This default budget is configurable via a compiler flag `-Ximport-suggestion-timeout`.

This change should speed up the compiler when it comes to programming with givens.

For more information, see PR [#9167](https://github.com/lampepfl/dotty/pull/9167).

# Let us know what you think!

If you have questions or any sort of feedback, feel free to send us a message on our
[Gitter channel](https://gitter.im/lampepfl/dotty). If you encounter a bug, please
[open an issue on GitHub](https://github.com/lampepfl/dotty/issues/new).

## Contributing
Thank you to all the contributors who made this release possible 🎉

According to `git shortlog -sn --no-merges 0.24.0-RC1..0.25.0-RC2` these are:

```
190 Nicolas Stucki
175 Martin Odersky
67 Liu Fengyun
32 Guillaume Martres
17 Robert Stoll
17 bishabosha
9 Anatolii Kmetiuk
7 yu-croco
6 Reto Hablützel
5 Akhtiam Sakaev
5 odersky
4 Raphael Jolly
4 Ruslan Shevchenko
4 Olivier Blanvillain
3 Jamie Thompson
3 Chris Birchall
2 Radosław Waśko
2 Aleksander Boruch-Gruszecki
2 Eric Loots
2 Jens Kat
2 Miles Sabin
2 noti0na1
1 Krzysztof Bochenek
1 Seth Tisue
1 Tobias Kahlert
1 Yilin Wei
1 ansvonwa
1 FabioPinheiro
1 december32
1 yytyd
1 Ara Adkins
1 squid314
1 typeness
1 xuwei-k
1 Alex Zolotko
1 Julien Richard-Foy
```

If you want to get your hands dirty and contribute to Dotty, now is a good time to get involved!
Head to our [Getting Started page for new contributors](https://dotty.epfl.ch/docs/contributing/getting-started.html),
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).
They make perfect entry points into hacking on the compiler.

We are looking forward to having you join the team of contributors.

## Library authors: Join our community build

Dotty now has a set of widely-used community libraries that are built against every nightly Dotty
snapshot. Currently, this includes shapeless, ScalaPB, algebra, scalatest, scopt and squants.
Join our [community build](https://github.com/lampepfl/dotty/tree/master/community-build)
to make sure that our regression suite includes your library.

[Scastie]: https://scastie.scala-lang.org/?target=dotty

[@odersky]: https://github.com/odersky
[@DarkDimius]: https://github.com/DarkDimius
[@smarter]: https://github.com/smarter
[@felixmulder]: https://github.com/felixmulder
[@nicolasstucki]: https://github.com/nicolasstucki
[@liufengyun]: https://github.com/liufengyun
[@OlivierBlanvillain]: https://github.com/OlivierBlanvillain
[@biboudis]: https://github.com/biboudis
[@allanrenucci]: https://github.com/allanrenucci
[@Blaisorblade]: https://github.com/Blaisorblade
[@Duhemm]: https://github.com/Duhemm
[@AleksanderBG]: https://github.com/AleksanderBG
[@milessabin]: https://github.com/milessabin
[@anatoliykmetyuk]: https://github.com/anatoliykmetyuk