|
| 1 | +--- |
| 2 | +layout: post |
| 3 | +title: Announcing Scala.js 1.1.1 |
| 4 | +category: news |
| 5 | +tags: [releases] |
| 6 | +permalink: /news/2020/07/02/announcing-scalajs-1.1.1/ |
| 7 | +--- |
| 8 | + |
| 9 | + |
| 10 | +We are pleased to announce the release of Scala.js 1.1.1! |
| 11 | + |
| 12 | +This is mostly a bugfix release. |
| 13 | +In addition, it adds support for the new `-Xasync` flag of Scala 2.13.3 and 2.12.12 (see [the release notes of Scala 2.13.3](https://github.com/scala/scala/releases/tag/v2.13.3)). |
| 14 | + |
| 15 | +Read on for more details. |
| 16 | + |
| 17 | +<!--more--> |
| 18 | + |
| 19 | +## Getting started |
| 20 | + |
| 21 | +If you are new to Scala.js, head over to [the tutorial]({{ BASE_PATH }}/tutorial/). |
| 22 | + |
| 23 | +If you need help with anything related to Scala.js, you may find our community [on Gitter](https://gitter.im/scala-js/scala-js) and [on Stack Overflow](https://stackoverflow.com/questions/tagged/scala.js). |
| 24 | + |
| 25 | +Bug reports can be filed [on GitHub](https://github.com/scala-js/scala-js/issues). |
| 26 | + |
| 27 | +## Release notes |
| 28 | + |
| 29 | +If upgrading from Scala.js 0.6.x, make sure to read [the release notes of Scala.js 1.0.0]({{ BASE_PATH }}/news/2020/02/25/announcing-scalajs-1.0.0/) first, as they contain a host of important information, including breaking changes. |
| 30 | + |
| 31 | +This is a **patch** release: |
| 32 | + |
| 33 | +* It is backward binary compatible with all earlier versions in the 1.x series: libraries compiled with 1.0.x and 1.1.0 can be used with 1.1.1 without change. |
| 34 | +* It is forward binary compatible with 1.1.0: libraries compiled with 1.1.1 can be used with 1.1.0 without change. |
| 35 | +* It is backward source compatible with 1.1.0: source code that used to compile with 1.1.0 should compile as is when upgrading to 1.1.1. |
| 36 | + |
| 37 | +From Scala.js 1.1.0, which was a **minor** release: |
| 38 | + |
| 39 | +* It is *not* forward binary compatible with 1.0.x: libraries compiled with 1.1.1 cannot be used with 1.0.x. |
| 40 | +* It is *not* entirely backward source compatible with 1.0.x: it is not guaranteed that a codebase will compile *as is* when upgrading from 1.0.x (in particular in the presence of `-Xfatal-warnings`). |
| 41 | + |
| 42 | +As a reminder, libraries compiled with 0.6.x cannot be used with Scala.js 1.x; they must be republished with 1.x first. |
| 43 | + |
| 44 | +## Miscellaneous |
| 45 | + |
| 46 | +### Upgrade to GCC v20200614 |
| 47 | + |
| 48 | +The Google Closure Compiler used internally by Scala.js for `fullOptJS` has been upgraded to v20200614. |
| 49 | + |
| 50 | +### Tools API reorganization |
| 51 | + |
| 52 | +Some artifacts in the "Tools API", i.e., the libraries used by build tools and other projects to programmatically link and run Scala.js code, have been reorganized: |
| 53 | + |
| 54 | +* `scalajs-logging`, `scalajs-js-envs`, `scalajs-js-envs-test-kit` and `scalajs-env-nodejs` have been extracted in separate repositories, with their own versioning. |
| 55 | + They have all been published as version 1.1.1, but will evolve independently of Scala.js in the future. |
| 56 | +* The Scala.js artifact for `scalajs-logging` has been discontinued, and its content absorbed by the Scala.js artifact for `scalajs-linker`. |
| 57 | + |
| 58 | +If you depend on `scalajs-js-envs` or `scalajs-env-nodejs`, you should hard-code their version as 1.1.1 instead of deriving it from the version of Scala.js (e.g., using the `scalaJSVersion` constant). |
| 59 | + |
| 60 | +## Bug fixes |
| 61 | + |
| 62 | +Among others, the following bugs have been fixed in 1.1.1: |
| 63 | + |
| 64 | +* [#4052](https://github.com/scala-js/scala-js/issues/4052) `@JSExportTopLevel` of `def` with default parameter causes IR checking error |
| 65 | +* [#4054](https://github.com/scala-js/scala-js/issues/4054) Empty `jsEnvInput` causes freeze (now eagerly reports an error instead) |
| 66 | +* [#4061](https://github.com/scala-js/scala-js/issues/4061) `@JSExportTopLevel("default")` generates invalid JS code on Scala.js 1.x (also see duplicate [#4099](https://github.com/scala-js/scala-js/issues/4099)) |
| 67 | +* [#4085](https://github.com/scala-js/scala-js/issues/4085) Failure to deserialize sjsir files in large projects |
| 68 | +* [#4086](https://github.com/scala-js/scala-js/issues/4086) Nested object within a top-level JS `object` not included in generated JavaScript |
| 69 | +* [#4088](https://github.com/scala-js/scala-js/issues/4088) `BigDecimal(1, -2147483648).toString` returns `"1E-2147483648"` |
| 70 | +* [#4089](https://github.com/scala-js/scala-js/issues/4089) Scala.js adds the `ExposedJSMember` annotation to `NoSymbol` (causing spurious recompilations in the incremental compiler) |
| 71 | +* [#4098](https://github.com/scala-js/scala-js/issues/4098) GCC crash in `fullOptJS` with `ju.HashSet.remove` |
| 72 | +* [#4105](https://github.com/scala-js/scala-js/issues/4105) Wrong codegen for switch with guards in statement position gives IR checking error |
| 73 | + |
| 74 | +You can find the full list [on GitHub](https://github.com/scala-js/scala-js/issues?q=is%3Aissue+milestone%3Av1.1.1+is%3Aclosed). |
0 commit comments