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 var
s, rather than assigned as properties of the global object
Read more
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
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
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.Path
s 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 var
s, rather than assigned as properties of the global object
Read more
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
Apr 15, 2019
We are very excited to announce the release of Scala.js 1.0.0-M7!
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.27.
Compared to 1.0.0-M6, the following changes are noteworthy:
- Add support for Scala 2.13.0-RC1
- Overall bring up-to-date with improvements and bug fixes available in 0.6.27, notably support for ECMAScript modules
- Namespaced top-level exports are no longer supported (they were deprecated in 0.6.26)
- Integer division by 0 (or
0L
) now, by spec, reliably throws an ArithmeticException
, following the JVM behavior
- The sbt task
jsExecutionFiles
has been replaced with a jsEnvInput
which encodes not only the set of files, but also their module kind and hence how they should be loaded by JS environments
- With the default module kind
NoModule
, top-level exports are now exposed to JavaScript as top-level var
s, rather than assigned as properties of the global object
- The Google Closure Compiler has been upgraded to v20181210, and is now also used with ECMAScript 2015 features
- Support for the magic global variable
__ScalaJSEnv
has been removed, with the following consequences:
System.exit()
is no longer supported
- Java system properties, while they are still supported per se and filled with essential properties, are no longer populated with the contents of
__ScalaJSEnv.javaSystemProperties
- For authors of
JSEnv
s: the test kit configuration option withTerminateVMJSCode
, which had beend replaced by withSupportsExit
in 1.0.0-M6, is coming back under the name withExitJSStatement
- The linker API has been refactored to be asynchronous in nature
We would also like to remind readers of the following important change that happened in 1.0.0-M5:
- Drop compatibility with sbt-crossproject v0.4.x and earlier (v0.5.0 or later is required)
Read more