Announcing Scala.js 0.5.4
Aug 29, 2014.
We are excited to announce the release of Scala.js 0.5.4!
This release contains various bug fixes and enhancements to both the compiler and the sbt plugin.
Scala.js 0.5.4 is backward binary compatible with older versions of the 0.5.x branch. However, it is not forward binary compatible. This means:
- You don’t need to re-publish libraries
- You must upgrade to Scala.js 0.5.4 if any library you depend on uses Scala.js 0.5.4
If you choose to re-publish a library, make sure to bump its version.
Please report any issues on GitHub.
Upgrading from 0.5.3 an below
Simply change the version number in
project/plugins.sbt, as usual.
If you use uTest, you need to upgrade it to version 0.2.3 or later. This is due to a binary incompatible change in the sbt plugin.
Improvements in the 0.5.4 release
A few improvements have been made to
- Export methods with named arguments
- Automatically export all public members of a class/object
- Export fields declared as constructor parameters
The interface to the PhantomJS interpreter has been enhanced with two features:
- Passing command-line arguments to PhantomJS
- Configuring PhantomJS not to terminate automatically when the
- You can use
java.lang.System.exit(exitCode)to explicitly terminate the PhantomJS environment
Source maps for fullOptJS
Source maps are now generated for
fullOptJS as well.
To support this, we have changed the way we integrate the Google Closure Compiler. Should you experience any regression, please file an issue, and use the following fallback to revert to the old mechanism (which will not generate source maps):
%%% Cross versioning
%%% operator used to build library dependencies for Scala.js has been enhanced.
It is now able to determine whether it is used inside a Scala.js project or a Scala/JVM project.
In the latter, it will be equivalent to
This allows to use
%%% consistently for cross-compiling projects.
Auto-detect whether the DOM is required
requiresDOM will now default to
true if the special
RuntimeDOM dependency is listed in the (transitive)
jsDependencies of your project.
To specify that your library or program depends on the DOM, use the following setting:
It is still possible to override this behavior by explicitly setting
requiresDOM, as before.
Our tools API now cross-compiles for Scala/JVM and Scala.js. It can therefore be used in Scala.js, for example to link and optimize Scala.js IR on the client.
The following bugs have been fixed since 0.5.3:
- #897 fastOptJS crash: Invalid lhs for Assign: This()
- #898 PhantomJS polyfill doesn’t work
- #899 Compiler should always unbox arguments to reflective calls
- #904 Stack overflow in fast optimizer
- #906 Assignment to exported var gives “Unhandled type class” warning
- #907 fastOptJS crash: statements before Dictionary.delete() in exported functions
- #908 Calling Dictionary.delete() with js.Object property throws RuntimeException
- #919 sbt: Inspecting does not work with scalaJSSettings
- #920 Return type lifting for JSExports fails on RefinedTypes
- #940 Compiler crash on strange pattern match