News

Announcing Scala.js 1.0.0

Feb 25, 2020

We are thrilled to announce the General Availability release of Scala.js 1.0.0!

Scala.js is a close dialect of Scala compiling to JavaScript, featuring great portability wrt. Scala/JVM, interoperability with JavaScript, and performance.

After 7 years of development, including 5 years of stability within the 0.6.x series, we are finally ready to present Scala.js 1.0.0. Quoting Antoine de Saint-Exupéry,

Perfection is achieved, not when there is nothing more to add, but when there is nothing left to take away.

Scala.js 1.0.0 is the culmination of our efforts to simplify, specify, and future-proof all aspects of Scala.js, from the language semantics to the internal APIs, so that there is nothing left to take away.

As the change in major version number witnesses, this release is not binary compatible with 0.6.x, nor with the previous milestones and RCs of the 1.x series. Libraries need to be recompiled and republished using Scala.js 1.0.0 to be compatible. Several libraries at the core of the Scala/Scala.js ecosystem have already been published and are available for Scala.js 1.0.0. Here is a list of libraries known to support Scala.js 1.x.

Moreover, this release is not entirely source compatible with 0.6.x either (see Breaking Changes below).

Here are some highlights of Scala.js 1.0.0:

  • Better interoperability with JavaScript libraries (see the Enhancements section below)
  • Improved portability with respect to Scala/JVM
  • Better run-time performance

Read more

Announcing Scala.js 0.6.32

Jan 24, 2020

We are pleased to announce the release of Scala.js 0.6.32!

This is mostly a bugfix release, including a fix for a regression in regular expressions that appeared in 0.6.31 (#3901). This release also adds the definitions for some recent methods of js.Object, thanks to @exoego, and the JDK interface java.util.function.Consumer, thanks to mliarakos.

Read on for more details.

Read more

Announcing Scala.js 1.0.0-RC2

Dec 13, 2019

We are thrilled to announce the release of Scala.js 1.0.0-RC2!

This release candidate is intended for testing purposes by as many users as possible, and as a synchronization point with library authors so that they can upgrade in preparation for the final release. If no critical issue is found until the end of January 2020, this RC will become the final release.

We encourage all users who are able to do so to test their projects with this RC, and report any issue as soon as possible.

As the change in major version number witnesses, this release is not binary compatible with 0.6.x, nor with the previous milestones and RCs of the 1.x series. Libraries need to be recompiled and republished using this RC to be compatible. Moreover, this release is not entirely source compatible with 0.6.x either.

These release notes contain cumulative changes with respect to 0.6.31. Compared to 1.0.0-RC1, this release candidate contains the following changes:

  • Fix the handling of versions of Scala.js to correctly work post-v1.0.0
  • Remove a few @deprecated methods that were forgotten in 1.0.0-RC1
  • Internal IR contract change: use IR static methods as the contract to call main methods and static methods in JDK APIs
  • Fix #3888: linking error with a nested object named class
  • Add tests

As a reminder, 1.0.0-RC1 already contained the following noteworthy changes compared to 1.0.0-M8:

  • Drop support for sbt 0.13.x
  • Drop support for Scala 2.11.{0-11} (2.11.12 is supported)
  • x eq y now more closely matches the JVM behavior: +0.0 ne -0.0 and NaN eq NaN
  • Small tweaks in the JSEnv API
  • The Scala.js linker is now loaded by reflection into the sbt plugin, which solves issues with binary incompatible transitive dependencies such as Guava.

Read more

Announcing Scala.js 1.0.0-RC1

Nov 26, 2019

There is a newer release candidate: 1.0.0-RC2.

We are thrilled to announce the release of Scala.js 1.0.0-RC1!

This release candidate is intended for testing purposes by as many users as possible, and as a synchronization point with library authors so that they can start upgrading in preparation for the final release. If no critical issue is found until the end of January 2020, this RC will become the final release.

We encourage all users who are able to do so to test their projects with this RC, and report any issue as soon as possible.

As the change in “major” version number witnesses, this release is not binary compatible with 0.6.x, nor with the previous milestones of the 1.x series. Libraries need to be recompiled and republished using this RC to be compatible. Moreover, this release is not entirely source compatible with 0.6.x either.

These release notes contain cumulative changes with respect to 0.6.31. Compared to 1.0.0-M8, the following changes are noteworthy:

  • Drop support for sbt 0.13.x
  • Drop support for Scala 2.11.{0-11} (2.11.12 is supported)
  • x eq y now more closely matches the JVM behavior: +0.0 ne -0.0 and NaN eq NaN
  • Small tweaks in the JSEnv API
  • The Scala.js linker is now loaded by reflection into the sbt plugin, which solves issues with binary incompatible transitive dependencies such as Guava.

We would also like to remind readers of the following important change that happened in 1.0.0-M5 and 1.0.0-M7, respectively:

  • Drop compatibility with sbt-crossproject v0.4.x and earlier (v0.5.0 or later is required)
  • With the default module kind NoModule, top-level exports are now exposed to JavaScript as top-level vars, rather than assigned as properties of the global object

Read more

Announcing Scala.js 0.6.31

Nov 21, 2019

We are pleased to announce the release of Scala.js 0.6.31!

This release upgrades the version of the Scala standard library to 2.12.10 and 2.13.1. The upgrade to 2.13.1 notably fixed a number of issues. The release also contains the definitions for BigInt and its typed arrays BigInt64Array and BigUint64Array, thanks to @exoego, as well as the implementation of java.util.IdentityHashMap, thanks to @ekrich.

If you are wondering where v0.6.30 went, it was severely broken and hence was never announced.

Read on for more details.

Read more

Announcing Scala.js 0.6.29

Sep 18, 2019

We are excited to announce the release of Scala.js 0.6.29!

We highly recommend to all users that they upgrade to this new version. It contains:

  • a fix for a major bug in incremental compilation with sbt 1.x, and
  • a major performance improvement, notably for pattern matching.

It also introduces js.import(moduleName), equivalent to JavaScript’s dynamic import() calls.

Read on for more details.

Read more