News

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

Announcing Scala.js 1.0.0-M7

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 vars, 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 JSEnvs: 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

Announcing Scala.js 0.6.27

Apr 8, 2019

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

The highlight of this release is the support for Scala 2.13.0-RC1. It also fixes a few issues, and introduces a way to limit the number of concurrent linking operations in the sbt plugin.

Read on for more details.

Read more

Announcing Scala.js 0.6.26

Nov 29, 2018

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

The highlight of this release is the support for ECMAScript modules. It also fixes a few issues.

Starting from 0.6.26 in the 0.6.x branch, Scala.js has been relicensed under the Apache License 2.0, following the corresponding relicensing of Scala upstream. Scala.js 1.x milestones have also been relicensed since version 1.0.0-M6.

Read on for more details.

Read more