Scala.js 0.6.0 Released: 'No Longer Experimental'

Scala.js, the open-source Scala to JavaScript compiler, is no longer "experimental," say the project's maintainers.

"We believe it has reached maturity," the Scala.js team said in a blog post, "and from now on, the language semantics as well as the APIs will only evolve in backward compatible ways, or go through proper deprecation cycles."

The team "dropped the experimental flag" associated, with the compiler after two years of development, Scala.js project lead Sébastien Doeraene said in the announcement. The main reason: stability around the semantics of the language, the establishment of a standard Scala.js library, and sbt builds that will remain backward-source compatible, (sbt is an open source build tool for Scala and Java projects.)

He also noted that Scala.js is not part of the Typesafe Reactive platform -- which means that the Typesafe, the commercial sponsor of the Scala language, will not be providing commercial support for it. But Doeraene called this "an epic release" on Twitter.

Scala.js was developed at the LAMP laboratory of Ecole polytechnique fédérale de Lausanne (EPFL), which is the non-Typesafe, academic side of the Scala team in Switzerland. It's designed to allow Java coders to write a Web app entirely in Scala, and then compile that code to JavaScript. It supports all of Scala, and the semantics are generally the same. (Typesafe notes the differences here.) The code is highly interoperable with JavaScript code, and developers can use any IDE they use for Scala. ("[F]rom experience, we can report that IntelliJ IDEA and Eclipse both provide a flawless development experience," Doeraene wrote in a blog post.

To the question apparently posed by the community, "Why isn't it 1.0.0 already?" Doeraene answered that, although Scala.js is stable "from all user-visible points of view," the format of the intermediate files of Scala.js -- the .sjsir files -- might have to change in future versions.

"These files are essentially the Scala.js equivalent of .class files for the JVM," he wrote. "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. Doing so means breaking binary compatibility (by definition), and therefore would require a change in major version number. 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."

Scala, which was developed by Typesafe co-founder Martin Odersky, is a general purpose, multi-paradigm language designed to integrate features of object-oriented programming and functional programming, which emphasizes the evaluation of expressions rather than the execution of commands. Scala runs on the Java Virtual Machine (JVM) and is compatible with existing Java programs. The company also develops Akka, an open source, asynchronous, event-driven middleware implemented in Scala, and the Play Web app framework. Play is a full development and runtime environment billed by the company as "a clean alternative to legacy Enterprise Java stacks" which compiles Java and Scala sources directly and "hot reloads" them into the JVM.

CORRECTION: The original version of this story credited Scala.js to Typesafe. apologizes for the error.

About the Author

John K. Waters is the editor in chief of a number of sites, with a focus on high-end development, AI and future tech. He's been writing about cutting-edge technologies and culture of Silicon Valley for more than two decades, and he's written more than a dozen books. He also co-scripted the documentary film Silicon Valley: A 100 Year Renaissance, which aired on PBS.  He can be reached at [email protected].