News

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

Announcing Scala.js 1.0.0-M8

Jun 3, 2019

We are very excited to announce the release of Scala.js 1.0.0-M8!

This development release is mostly intended for testing purposes, and as a synchronization point with library authors so that they can start upgrading in preparation for the final release.

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 milestone to be compatible.

Moreover, this release is not entirely source compatible with 0.6.x either. We expect, however, that further milestones for 1.0.0 will stay backward source compatible with this milestone.

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

  • Add support for Scala 2.13.0-RC3, and hopefully for Scala 2.13.0 final
  • Overall bring up-to-date with improvements and bug fixes available in 0.6.28
  • Scala.js now emits ECMAScript 2015 code by default
  • The JSEnv API has been refactored to use java.nio.file.Paths instead of custom virtual files
  • The linker API is now fully asynchronous; clean separation into different compatibility layers is pending (#3656)

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.28

May 24, 2019

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

This release drops support for building on JDK 6 and 7! In exchange, it adds support for using the Google Closure Compiler when emitting ECMAScript 2015 code.

This release also prepares for Scala 2.13.0 final. Older releases will not support that version.

Read on for more details.

Read more