You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: news/_posts/2015-02-05-scala-js-no-longer-experimental.md
+28-28Lines changed: 28 additions & 28 deletions
Original file line number
Diff line number
Diff line change
@@ -7,35 +7,35 @@ title: Scala.js no longer experimental
7
7
8
8
Today, we [announced the release of Scala.js v0.6.0](http://www.scala-js.org/news/2015/02/05/announcing-scalajs-0.6.0/), the Scala to JavaScript compiler, and dropped the experimental flag associated to it.
9
9
Yes, you read it right: Scala.js is no longer experimental!
10
-
After exactly 2 years of development, we can finally call it production-ready.
10
+
After exactly 2 years of development, we finally feel comfortable calling it production-ready.
11
11
12
-
Note that Scala.js is not part of the Typesafe Reactive platform.
13
-
Therefore, although we call it production-ready, Typesafe does not provide any commercial support for Scala.js.
12
+
_Note, however, that Scala.js is not part of the Typesafe Reactive platform.
13
+
Thus, although we consider Scala.js production-ready, Typesafe does not provide any commercial support for it._
14
14
15
15
## More than a compiler, an entire ecosystem
16
16
17
17
At its core, Scala.js is a compiler from Scala to JavaScript.
18
-
It compiles .scala files to a single optimized and minimized .js file per application.
19
-
The resulting JavaScript code is plain old ECMAScript 5.1, and hence works everywhere: on any OS, any browser, or even on Node.js.
20
-
Just like regular Scala, you get all the powerful language features that we know and love: type inference, classes, traits and objects, pattern matching, the collections library, implicits, and your personal favorite.
21
-
And, as Scala is fully interoperable with Java, so is Scala.js with JavaScript, in a statically-typed way, or falling back to dynamically-typed code if you want.
18
+
It compiles `.scala` files to a single optimized and minimized `.js` file per application.
19
+
The resulting JavaScript code is vanilla ECMAScript 5.1, which therefore works everywhere – on any OS, any browser, or even on Node.js.
20
+
Just like regular Scala, you get all the powerful language features that you know and love: type inference, classes, traits and objects, pattern matching, the collections library, implicits, etc.
21
+
And, in the same way that Scala is fully interoperable with Java, Scala.js is fully interoperable with JavaScript. Scala.js can interoperate with JavaScript either in a staticallyor dynamically-typed way.
22
22
23
-
A compiler would be nothing without an ecosystem of libraries and tools, though, and we've got that covered too.
23
+
While that all sounds great, a compiler would be nothing without an ecosystem of libraries and tools. Scala.js has that covered too!
24
24
25
-
On the tooling side, you get to use your favorite IDE to develop in Scala.js: IntelliJ IDEA and Eclipse are known to work well, but there is no reason that any other editor wouldn't work.
26
-
You get syntax highlighting, code completion (even for JavaScript libraries and the DOM!), jump-to-definition, and pretty much everything you could think of.
25
+
You can use your favorite IDE to develop in Scala.js, and from experience, we can report that IntelliJ IDEA and Eclipse both provide a flawless development experience. Other editors should also work well.
26
+
With Scala.js tooling, you get syntax highlighting, code completion (even for JavaScript libraries and the DOM!), jump-to-definition, and most other features you come to expect in a Scala tooling environment.
27
27
After all, *Scala.js is just Scala*.
28
-
Your IDE won't be able to run or debug Scala.js code, though; for that, you can use a browser, and you can even step through your Scala code because Scala.js emits [source maps](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/).
28
+
Though, your IDE won't be able to run or debug Scala.js code. For that, you can use a browser, and you can even step through your Scala code because Scala.js emits [source maps](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/).
29
29
30
-
To build Scala.js libraries and applications, there is an sbt plugin, which gives you the same comfort and development speed as with Scala/JVM.
30
+
Building Scala.js libraries and applications is easy – there is an sbt plugin, which gives you the same comfort and development speed as with Scala on the JVM.
31
31
It can even run unit tests automatically with either Rhino, Node.js or PhantomJS, according to your needs.
32
32
33
33
Scala.js also has a growing ecosystem of libraries, which you can depend on through Maven dependencies (`libraryDependencies` in sbt).
34
34
They cover UI frameworks, statically-typed client-server communication, reactive extensions, and so on.
35
-
Even some of the popular Scala libraries such as Shapeless and Scalaz cross-compile with Scala.js.
35
+
Several popular Scala community libraries such as Shapeless and Scalaz cross-compile with Scala.js.
36
36
37
-
Finally, Scala.js has a thriving community of nice and helpful people.
38
-
Ask questions [on StackOverflow](http://stackoverflow.com/questions/tagged/scala.js), discuss [on the mailing list](https://groups.google.com/forum/#!forum/scala-js), and come hang around[in the Gitter chat room](https://gitter.im/scala-js/scala-js).
37
+
Finally, we're proud that Scala.js has a thriving community of nice and helpful people.
38
+
Ask questions [on StackOverflow](http://stackoverflow.com/questions/tagged/scala.js), discuss [on the mailing list](https://groups.google.com/forum/#!forum/scala-js), and discuss with us[in the Gitter chat room](https://gitter.im/scala-js/scala-js).
39
39
40
40
## Why Scala.js is awesome
41
41
@@ -74,7 +74,7 @@ Here are also a few selected quotes from the mailing list discussion.
74
74
> Scala might be a nice language, but you've never been able to use it to make anything cool that a non-backend-systems person would understand.
75
75
> [...]
76
76
> With Scala.js, you can easily create small Scala applications and email the tiny 100kb executables (or just the link to them) to anyone, who can run them on any modern device, even smartphones.
77
-
> Made a cute game? A fun visualization? An animated sequence? Now you can show the world.
77
+
> Made a cute game? A fun visualization? An animated sequence? Now you can show the world.
78
78
>
79
79
> Scala's no longer just for distributed systems people and type-theorists!
80
80
> -- <cite>Li Haoyi</cite>
@@ -118,36 +118,36 @@ Here are also a few selected quotes from the mailing list discussion.
118
118
> Scala.js is simply the best option available on browsers today, if you're looking for a language with a powerful yet flexible type system.
119
119
> -- <cite>Xavier Cho</cite>
120
120
121
-
## Why removing the experimental flag now?
121
+
## Why remove the experimental flag now?
122
122
123
-
Many Scala.js users would say that it has been production-ready for quite some time, now.
123
+
Many Scala.js users would say that it has been production-ready for quite some time already.
124
124
Possibly as early as 0.5.0, which was released in June 2014.
125
125
So why do we choose to remove the experimental flag now?
126
126
What has changed?
127
127
128
-
The big difference is *stability* in terms of several aspects:
128
+
The big difference is several different aspects of *stability*:
129
129
130
130
* The semantics of the language are settled. They may still evolve in a backward compatible way (defining previously undefined behaviors), but will otherwise not change anymore.
131
131
* The standard library of Scala.js (the `scala.scalajs.js` package) will remain backward source and binary compatible.
132
132
* The sbt builds will remain backward source compatible.
133
133
134
-
Of course, we must still be able to evolve the library and the builds, so things might become deprecated, and eventually removed, but will do so on a very slow pace.
134
+
Of course, we must still be able to evolve the library and the builds, so things might become deprecated, and eventually removed, but will do so at a slower pace than before.
135
135
136
136
All things considered, this means that the code you write today, for Scala.js 0.6.0, will continue to work throughout 0.6.x and 1.x.y unchanged.
137
137
138
138
"So why isn't it 1.0.0 already?
139
139
It seems like these properties satisfy to the requirements of a 1.0.0 version.
140
140
What are you hiding?"
141
141
142
-
If, on all the user-visible aspects, everything is now stable, it is still not true for one almost-implementation detail: the format of the intermediate files of Scala.js, the `.sjsir` files.
143
-
These files are basically the Scala.js equivalent of `.class` files for the JVM.
144
-
We're not yet completely sure of their format, and we suspect we might still want to change it in the couple coming months.
145
-
Now, changing this format means breaking binary compatibility (by definition), and therefore would require a change in major version number.
146
-
So we're reserving ourselves a last chance of modifying these without jumping straight to 2.0.0.
142
+
While from all user-visible points of view Scala.js is stable, there remains just one quasi-implementation detail which might have to change in future versions – the format of the intermediate files of Scala.js, the `.sjsir` files.
143
+
These files are essentially the Scala.js equivalent of `.class` files for the JVM.
144
+
We're not yet completely certain that we're settled on their format, so we'd like to reserve the possibility of changing it in the coming months.
145
+
Doing so means breaking binary compatibility (by definition), and therefore would require a change in major version number.
146
+
So we're not yet jumping to version 1.0.0 just yet – this is so that we may give ourselves one last chance to modify the Scala.js intermediate format before we make the leap to our first major version.
147
147
148
-
But otherwise, every other aspect of Scala.js is as stable as it get before getting widespread adoption.
148
+
Though, rest assured! We're confident that Scala.js is otherwise stable and ready for widespread adoption.
149
149
150
-
###Getting started
150
+
## Getting started
151
151
152
152
There are three main ways to get started with Scala.js:
153
153
@@ -156,4 +156,4 @@ There are three main ways to get started with Scala.js:
156
156
* The online sandbox [Scala.jsFiddle](http://www.scala-js-fiddle.com/)
157
157
158
158
So go ahead!
159
-
Use it, love it, and build the Web applications of the future!
159
+
Use it, love it, and build the web applications of the future!
0 commit comments