Skip to content

Dotty 0.9.0-RC1 Blog post #4764

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
Jul 6, 2018

Conversation

allanrenucci
Copy link
Contributor

No description provided.

@allanrenucci allanrenucci force-pushed the dotty-0.9.0-RC1-blogpost branch from b1a628e to 040bdc6 Compare July 5, 2018 14:21
@allanrenucci
Copy link
Contributor Author

@lampepfl/dotty-core Please review/correct/complete

## Trying out Dotty

### sbt
Using sbt 1.1.4 or newer, do:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@allanrenucci
Copy link
Contributor Author

@liufengyun I'll add a section about compiler plugins

Copy link
Contributor

@liufengyun liufengyun left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Otherwise, LGTM 👍

`scala.reflect.Selectable.reflectiveSelect` conversion (we might extend this to more conversions).

### Optimise s and raw interpolators [#3961](https://github.com/lampepfl/dotty/pull/4229)
`s` and `raw` string interpolators were known to be slower than their not type-safe counterparts:
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It seems both are equally type-safe. I would say "the non-interpolated code".

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

In the example below I agree, but that's not the point here. Here is another example that I think illustrate "type safety":

scala> val x = 1; val y = 2
x: Int = 1
y: Int = 2

scala> "Hello " + x + y
res0: String = Hello 12

scala> x + y + " Hello"
res1: String = 3 Hello

scala> s"Hello $x$y"
res2: String = Hello 12

scala> s"$x$y Hello"
res3: String = 12 Hello


### IDE support
It is very easy to start using the Dotty IDE in any Dotty project by following
the [IDE guide](https://dotty.epfl.ch/docs/usage/ide-support.html).
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nitpick: I remember from a very old tutorial on writing that it is a very good practice to avoid very in writing because it is not very useful.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"not very useful"? 😄 😆

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Well maybe it was easy before, but now it's even easier, i.e. very easy :D

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Very good comment.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"simply", "obviously", "very", "easily" are generally best avoided. They serve little purpose but to make people feel like idiots when they don't understand or fail to follow the instructions.

@allanrenucci allanrenucci changed the title Dotty 0.9.0-RC1 Blog post: initial draft Dotty 0.9.0-RC1 Blog post Jul 5, 2018
Copy link
Contributor

@biboudis biboudis left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

inline def comments() = ~👍

Today, we are excited to release Dotty version 0.9.0-RC1. This release serves as a technology
preview that demonstrates new language features and the compiler supporting them.

Dotty is the project name for technologies that are considered for inclusion in Scala 3. Scala has
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Dotty is the experimental compiler of Scala, considered to stand for the next Scala 3 compiler.
This release serves as a technology preview of new language features ready to experiment with by using Dotty.

pioneered the fusion of object-oriented and functional programming in a typed setting. Scala 3 will
be a big step towards realizing the full potential of these ideas. Its main objectives are to

- become more opinionated by promoting programming idioms we found to work well,
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not opinionated.

Its main objectives are the following:

  • incorporate modern programming idioms that satisfy current and future needs,
  • ...

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"opinionated" is part of Martin's pitch ;-)

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ok


### Improved REPL [#4680](https://github.com/lampepfl/dotty/pull/4680)
The REPL now uses [JLine 3](https://github.com/jline/jline3) under the hood which improves on
many aspects such as auto-completions and multi-line editing. The REPL now also works on Windows!
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

comma before "such as"



### Documentation support in the IDE [#4461](https://github.com/lampepfl/dotty/pull/4461), [#4648](https://github.com/lampepfl/dotty/pull/4648)
The Dotty IDE will now display documentation on code hover for symbols that were previously
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

now displays ... while hovering over symbols



### Drop requirement that implicit functions must be non-empty [#4549](https://github.com/lampepfl/dotty/pull/4549)
We decided to remove an arbitrary restriction that implicit and functions must be non-empty.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We remove the arbitrary restriction that parameters of implicit functions must by non-empty.

Implicit conversions are easily the most misused feature in Scala. We now emit feature warnings
when encountering an implicit conversion definition, just like Scala 2 does.

In addition, we also emit a feature warning when an implicit conversion is used,
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Split, long sentence.

// compared to:
"Hello " + name + "!"
```
The compiler will now desugar the former into the later. Special thanks to
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

latter



### Support for compiler plugins [#3438](https://github.com/lampepfl/dotty/pull/#3438)
Dotty now supports Compiler plugins. Compiler plugins let you customise the compiler pipeline
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I would go with customize

@allanrenucci allanrenucci force-pushed the dotty-0.9.0-RC1-blogpost branch from 8eadd63 to 7f540db Compare July 6, 2018 11:29
@allanrenucci allanrenucci merged commit 0a8a963 into scala:master Jul 6, 2018
@allanrenucci allanrenucci deleted the dotty-0.9.0-RC1-blogpost branch July 6, 2018 11:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants