Skip to content

Update Readme.md for ScalaDays #1248

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 7 commits into from
May 10, 2016
Merged
Changes from 3 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
82 changes: 63 additions & 19 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,29 +11,73 @@ theory behind these constructors is researched in
[DOT](http://www.cs.uwm.edu/~boyland/fool2012/papers/fool2012_submission_3.pdf),
a calculus for dependent object types.

The dotty compiler is largely a new design. It takes a more functional
approach than current scalac, paired with aggressive caching to
achieve good performance. Some parts, in particular those that have to
do with configuration and input/output are ported from the Scala
compiler. The compiler is fully functional, in particular it can
compile itself. But there's more work needed (and planned) on
polishing rough edges, improving diagnostics, improving compilation
speed, and embedding in other tools.

We expect that, over time, some of the new technologies explored in
this project will find their way into future versions of Scala. At
present it is too early to say which ones and when.

If you want to try it out, to get started have a look at
####Current status:
_Technology preview_: currently unsupported, may not be functionally complete, and are not suitable for deployment in production.
Copy link
Member

Choose a reason for hiding this comment

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

"and not suitable"

Copy link

Choose a reason for hiding this comment

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

"may be functionally incomplete or unsuitable for production use"


####Is it going to be the future Scala?
Yes, eventually.

####Who's working on it?
See [github contributors page](https://github.com/lampepfl/dotty/graphs/contributors).

####What are the features that could make me consider trying it?
| Feature | Status |
|------------------------------------------------- |--------------------- |
| Union, Intersection and Literal singleton types | Implemented |
Copy link
Member

Choose a reason for hiding this comment

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

For Literal singleton types, add a link to SIP http://docs.scala-lang.org/sips/pending/42.type.html

| Fast compilation (phase fusion) | Implemented |
| Working contravariant implicits | Implemented |
Copy link
Member

Choose a reason for hiding this comment

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

I'd say In progress since #1246 has not been merged yet and the rules are still somewhat weird as you said in #1247 (comment)

| Trait parameters | Implemented |
Copy link
Member

Choose a reason for hiding this comment

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

| @Static methods and fields | Implemented |
| Colored Repl | Implemented |
| Sbt incremental build | Implemented |
| Non-blocking lazy vals | Implemented |
Copy link
Member

Choose a reason for hiding this comment

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

Maybe add repeated by-name parameters too: http://docs.scala-lang.org/sips/pending/repeated-byname.html

| | |
| Non-boxed arrays of value classes | In progress |
| Auto-Specialization | [In progress](https://github.com/dotty-linker/dotty) |
| Whole program optimizer | [In progress](https://github.com/dotty-linker/dotty) |
| Library defined optimizations | [In progress](https://github.com/dotty-linker/dotty) |
| | |
| HList & HMaps\Record types | Under consideration |
| Implicit functions | Under consideration |
| Effects | Under consideration |
| Auto-completion in repl | Under consideration |
| Spec name-based patmat | Under consideration |
| Multiverse equality | Under consideration |
| Exhaustivity checks in pattern matching | Under consideration |
There are also plethora of small details such [per-callsite @tailrec annotations](https://github.com/lampepfl/dotty/issues/1221)
Copy link
Member

Choose a reason for hiding this comment

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

"such as per-callsite"


####What are the complications that I can have If I start using Dotty?
Dotty can use libraries compiled by scalac 2.11, but Scala scalac can't use libraries compiled by Dotty.<br>
No existential types.<br>
Copy link
Member

Choose a reason for hiding this comment

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

I'd say "No existential types using the forSome syntax, most of the times these can be rewritten using wildcards (_) instead."

No macro support yet. We have big plans here.<br>
No early initializers. No scala.DelayedInit. Use trait arguments instead.<br>
Copy link
Member

Choose a reason for hiding this comment

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

In this document and in the SIP you say "trait parameters", consider using that here too instead of "trait arguments"

Whole program optimizer will only work if all dependencies are compiled by Dotty.<br>


####Can I write my code in a way that is going to be compatible with Scalac & Dotty?
Yes, Dotty itself is a project that can be compiled by both Dotty and Scalac.<br>
It's not very hard, and the biggest thing that you will likely miss is using macros.

####How can I try it out?
https://github.com/lampepfl/dotty/wiki/Getting-Started.
Here’s example sbt project and instructions on how to set it up: https://github.com/smarter/dotty-example-project/ <br>
Copy link
Member

Choose a reason for hiding this comment

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

"Here's an example sbt project"

We have colored REPL :-). You can invoke it by running `dotc -repl`.

Developers mailing list is https://groups.google.com/forum/#!forum/dotty-internals.
####We also have:
Basic support for Scala.js,<br>
[Prototype](https://github.com/scala-native/scala-native/tree/topic/dotty-support) of compilation to x86 native code(Shabalin)<br>

####What about scalac:
Scalac is basis for stability in scala. We expect scalac & dotty to coexist for long.
Copy link
Member

Choose a reason for hiding this comment

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

"Scalac is the basis", "to coexist for a long time"


####Contributions are welcome!
We invite you to help us build the future of Scala.<br>
That's the best moment to participate, as everyone can make an impact.<br>
Copy link
Member

Choose a reason for hiding this comment

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

"This is the best moment"


&nbsp;
####SI-2712?
If scalac will put it into 2.12, we’ll mimic their behaviour. But we have bigger plans for
HK-types.

&nbsp;

![YourKit](https://www.yourkit.com/images/yklogo.png) supports open source projects with its full-featured Java Profiler.

YourKit, LLC is the creator of [YourKit Java Profiler](https://www.yourkit.com/java/profiler/index.jsp).
Developers mailing list is https://groups.google.com/forum/#!forum/dotty-internals.