'
31 | end
32 | end
33 | end
34 |
35 | Liquid::Template.register_tag('columns', Tags::ColumnsBlock)
36 | Liquid::Template.register_tag('column', Tags::ColumnBlock)
37 |
--------------------------------------------------------------------------------
/_plugins/doclinks.rb:
--------------------------------------------------------------------------------
1 | module Tags
2 | class ScalaDoc < Liquid::Tag
3 | def initialize(tag_name, params, tokens)
4 | args = params.split(' ')
5 | if args.length == 1
6 | @ref = args.last.gsub(/^scala./, '')
7 | @content = args[0].split('.').last
8 | else
9 | @ref = args.last.gsub(/^scala./, '')
10 | @content = args[0...-1].join(' ')
11 | end
12 | end
13 |
14 | def render(context)
15 | '' + Liquid::Template.parse(@content).render(context) + ''
16 | end
17 | end
18 |
19 | class ScalaJSDoc < Liquid::Tag
20 | def initialize(tag_name, params, tokens)
21 | args = params.split(' ')
22 | if args.length == 1
23 | @ref = args.last.gsub(/^scala.scalajs./, '')
24 | @content = args[0].split('.').last
25 | else
26 | @ref = args.last.gsub(/^scala.scalajs./, '')
27 | @content = args[0...-1].join(' ')
28 | end
29 | end
30 |
31 | def render(context)
32 | '' + Liquid::Template.parse(@content).render(context) + ''
33 | end
34 | end
35 |
36 | class DOMDoc < Liquid::Tag
37 | def initialize(tag_name, params, tokens)
38 | args = params.split(' ')
39 | if args.length == 1
40 | @ref = args.last.gsub(/^org.scalajs.dom./, '')
41 | @content = args[0].split('.').last
42 | else
43 | @ref = args.last.gsub(/^org.scalajs.dom./, '')
44 | @content = args[0...-1].join(' ')
45 | end
46 | end
47 |
48 | def render(context)
49 | '' + Liquid::Template.parse(@content).render(context) + ''
50 | end
51 | end
52 |
53 | class JSDoc < Liquid::Tag
54 | def initialize(tag_name, params, tokens)
55 | args = params.split(' ')
56 | if args.length == 1
57 | @ref = args.last.gsub('.', '/')
58 | @content = args[0].split('.').last
59 | else
60 | @ref = args.last.gsub('.', '/')
61 | @content = args[0...-1].join(' ')
62 | end
63 | end
64 |
65 | def render(context)
66 | '' + Liquid::Template.parse(@content).render(context) + ''
67 | end
68 | end
69 | end
70 |
71 | Liquid::Template.register_tag('scaladoc', Tags::ScalaDoc)
72 | Liquid::Template.register_tag('scalajsdoc', Tags::ScalaJSDoc)
73 | Liquid::Template.register_tag('domdoc', Tags::DOMDoc)
74 | Liquid::Template.register_tag('jsdoc', Tags::JSDoc)
75 |
--------------------------------------------------------------------------------
/_plugins/tokenize.rb:
--------------------------------------------------------------------------------
1 | module TextFilter
2 | def tokenize(input)
3 | input.downcase.gsub(/\s+/, ' ').gsub(/[^-\w.']+/, ' ').gsub(/ \S\S?(?= )/, ' ').gsub(/ \W+/, ' ').gsub(/\W+ /, ' ')
4 | end
5 | end
6 |
7 | require 'execjs'
8 |
9 | module Tags
10 | class IndexBlock < Liquid::Block
11 | def initialize(tag_name, params, tokens)
12 | super
13 | end
14 |
15 | def render(context)
16 | content = super.strip
17 | data = ExecJS.eval('[' + content + ']')
18 | js = ExecJS.compile(open('_assets/js/lunr.js').read)
19 | js.call("buildIndex", data)
20 | end
21 | end
22 | end
23 |
24 | Liquid::Template.register_tag('lunrindex', Tags::IndexBlock)
25 | Liquid::Template.register_filter(TextFilter)
26 |
--------------------------------------------------------------------------------
/_posts/news/2014-06-30-announcing-scalajs-0.5.1.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: Announcing Scala.js 0.5.1
4 | category: news
5 | tags: [releases]
6 | permalink: /news/2014/06/30/announcing-scalajs-0.5.1/
7 | ---
8 |
9 |
10 | We are excited to announce the release of Scala.js 0.5.1!
11 |
12 | This version features bug fixes and improvements while remaining binary compatible with Scala.js 0.5.0. Therefore,
13 | Scala.js libraries may, but need not be republished with Scala.js 0.5.1.
14 |
15 |
16 | Please report any issues [on GitHub](https://github.com/scala-js/scala-js/issues).
17 |
18 | ## Improvements in the 0.5.1 release
19 |
20 | For changes introduced in 0.5.0, how to upgrade, getting started etc. have a look at the [0.5.0 announcement]({{ BASE_PATH }}/news/2014/06/13/announcing-scalajs-0.5.0/).
21 |
22 | #### Additions to the Java library
23 |
24 | The following two are now implemented according to spec:
25 |
26 | - `java.util.Date`
27 | - `java.util.Random`
28 |
29 | #### Wrappers for JavaScript Arrays and Dictionaries
30 |
31 | Thanks to `js.WrappedArray` and `js.WrappedDictionary` (and some implicit conversions), `js.Array` and `js.Dictionary` can now be passed to Scala code that expects `mutable.Seq` and `mutable.Map` respectively:
32 |
33 | {% highlight scala %}
34 | def setHead(x: mutable.Seq[Int]): Unit = x(0) = 42
35 | val array = js.Array(1, 2, 3)
36 | setHead(array)
37 | println(array) // -> 42,2,3
38 | {% endhighlight %}
39 |
40 | Further, this allows to call methods defined on `Map` on `js.Dictionary` (`foreach`, `map`, `filter`, etc.)
41 |
42 | #### Filter `jsDependencies` when executing JavaScript code
43 |
44 | The new sbt setting `jsDependencyFilter` can be used to modify the dependencies used when running/testing:
45 |
46 | jsDependencyFilter := (_.filter(_.resourceName != "jquery.js"))
47 |
48 | The above would prevent "jquery.js" from being included by the sbt runners. See [FlatJSDependency]({{ site.production_url }}/api/scalajs-tools/0.5.1/#scala.scalajs.tools.jsdep.FlatJSDependency) for fields that you can use.
49 |
50 | #### Ordered testing output
51 |
52 | When testing in the `fastOptStage` or the `fullOptStage`, test output sometimes appeared interleaved. This has been fixed this release.
53 |
54 | ## Contributors
55 |
56 | Thanks to all the code contributors:
57 |
58 | - [Sébastien Doeraene](https://github.com/sjrd/)
59 | - [Tobias Schlatter](https://github.com/gzm0/)
60 | - [Alexander Myltsev](https://github.com/alexander-myltsev)
61 | - [Matt Seddon](https://github.com/mseddon)
62 |
--------------------------------------------------------------------------------
/_posts/news/2014-07-09-announcing-scalajs-0.5.2.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: Announcing Scala.js 0.5.2
4 | category: news
5 | tags: [releases]
6 | permalink: /news/2014/07/09/announcing-scalajs-0.5.2/
7 | ---
8 |
9 |
10 | We are excited to announce the release of Scala.js 0.5.2!
11 |
12 |
13 | Scala.js 0.5.2 is backward binary compatible with older versions of the 0.5.x branch. However, it is *not* forward binary compatible. This means:
14 |
15 | - You don't need to re-publish libraries
16 | - You must upgrade to Scala.js 0.5.2 if any library you depend on uses Scala.js 0.5.2
17 |
18 | If you choose to re-publish a library, make sure to bump its version.
19 |
20 | Please report any issues [on GitHub](https://github.com/scala-js/scala-js/issues).
21 |
22 | ## Improvements in the 0.5.2 release
23 |
24 | For changes introduced in 0.5.0, how to upgrade, getting started etc. have a look at the [0.5.0 announcement]({{ BASE_PATH }}/news/2014/06/13/announcing-scalajs-0.5.0/) (and maybe the [0.5.1 announcement]({{ BASE_PATH }}/news/2014/06/30/announcing-scalajs-0.5.1/)).
25 |
26 | #### TypedArrays
27 |
28 | The new package `scala.scalajs.js.typedarray` contains facade types
29 | for JavaScript TypedArrays. It introduces compiler support to convert
30 | `scala.Array`s to their TypedArray equivalent and vice versa.
31 |
32 | Note that TypedArrays are **not** part of the ECMAScript 5
33 | specification. You need to make sure your target platform supports
34 | TypedArrays in addition to ECMAScript 5, if you decide to use them. Scala.js'
35 | [TypedArray test suite](https://github.com/scala-js/scala-js/tree/v0.5.2/test-suite/src/test/scala/scala/scalajs/test/typedarray)
36 | covers the full typed API and should be sufficient to verify whether a
37 | given JavaScript runtime supports TypedArrays.
38 |
39 | #### Bugfixes
40 |
41 | The following bugs have been fixed in 0.5.2:
42 |
43 | - [#789](https://github.com/scala-js/scala-js/issues/789) `fastOptStage::run` fails with Node.js
44 | - [#791](https://github.com/scala-js/scala-js/issues/791) Default arguments in the constructor of facade classes fail if the companion object doesn't extend `js.Any`
45 | - [#796](https://github.com/scala-js/scala-js/issues/796) Extending `js.Any` directly gives strange error messages
46 |
47 | #### Changes to the IR
48 |
49 | Some minor changes have been made to the IR to better accommodate the incremental optimizer in the pipeline for 0.5.3. This is the reason for the lack of forward binary compatibility.
50 |
--------------------------------------------------------------------------------
/_posts/news/2015-03-16-announcing-scalajs-0.6.2.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: Announcing Scala.js 0.6.2
4 | category: news
5 | tags: [releases]
6 | permalink: /news/2015/03/16/announcing-scalajs-0.6.2/
7 | ---
8 |
9 |
10 | We are excited to announce the release of Scala.js 0.6.2!
11 |
12 | This release mostly contains bug fixes, among which the lack of support of `java.net.URI` for Unicode characters.
13 | It also brings code size reduction and performance improvements to fastOpt code (although nothing changes in fullOpt).
14 |
15 | We are also happy to share that Scala.js is now part of [Scala's community build](https://github.com/scala/community-builds).
16 |
17 |
18 | ## Getting started
19 |
20 | If you are new to Scala.js, head over to
21 | [the tutorial]({{ BASE_PATH }}/tutorial/).
22 |
23 | ## Release notes
24 |
25 | For changes in the 0.6.x series compared to 0.5.x, read [the announcement of 0.6.0]({{ BASE_PATH }}/news/2015/02/05/announcing-scalajs-0.6.0/).
26 |
27 | As a minor release, 0.6.2 is backward source and binary compatible with previous releases in the 0.6.x series.
28 | Libraries compiled with earlier versions can be used with 0.6.2 without change.
29 |
30 | We would like to remind you that libraries compiled with 0.6.0 will suffer from [bug #1506](https://github.com/scala-js/scala-js/issues/1506), which will cause `fastOptJS` in dependent projects to perform more work than necessary.
31 | It is therefore recommended for library authors to upgrade to Scala.js >= 0.6.1 and publish new versions of their libraries, if they haven't done so yet.
32 | Scala.js 0.6.0 can read binaries compiled with 0.6.1 and 0.6.2, so you need not be afraid to force an upgrade of all the users of your libraries.
33 |
34 | Please report any issues [on GitHub](https://github.com/scala-js/scala-js/issues).
35 |
36 | ## Improvements
37 |
38 | * [A better translation to JavaScript](https://github.com/scala-js/scala-js/pull/1535) reduces the size of the `-fastopt.js` files by a few percent, and speeds up their execution.
39 |
40 | ## Bug fixes
41 |
42 | * [#1520](https://github.com/scala-js/scala-js/issues/1520) `java.net.URI` does not support Unicode
43 | * [#1521](https://github.com/scala-js/scala-js/issues/1521) `new java.net.URI("#foo").getSchemeSpecificPart()` should return the empty String
44 | * [#1532](https://github.com/scala-js/scala-js/issues/1532) `TypedArrayByteBuffer.asDoubleBuffer` results in a "RangeError: Invalid typed array length"
45 | * [#1546](https://github.com/scala-js/scala-js/issues/1546) Error "Node.js isn't connected" when running on Travis (tentative fix)
46 |
--------------------------------------------------------------------------------
/_posts/news/2015-11-23-new-website.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: A new website for Scala.js
4 | category: news
5 | permalink: /news/2015/11/23/new-website/
6 | ---
7 |
8 | After a couple months of design, content writing, and a lot of discussions, we
9 | are pleased to finally release our new website for Scala.js! Most if not all of
10 | the credit for this huge task goes to [Otto Chrons](https://github.com/ochrons).
11 | Big round of thanks to him!
12 |
13 | [Go and see the front page!]({{ BASE_PATH }}/)
14 |
15 | This new website is structured and designed specifically for front-end
16 | developers, highlighting the benefits of Scala.js over JavaScript itself, but
17 | also ECMAScript 6 or other languages targeting JavaScript, such as TypeScript.
18 |
19 | We hope you will like it. Come and tell us in
20 | [the Scala.js Gitter chat room](https://gitter.im/scala-js/scala-js)!
21 | We would love to hear your feedback.
22 |
--------------------------------------------------------------------------------
/_posts/news/2016-02-12-announcing-scalajs-0.6.7.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: Announcing Scala.js 0.6.7
4 | category: news
5 | tags: [releases]
6 | permalink: /news/2016/02/12/announcing-scalajs-0.6.7/
7 | ---
8 |
9 |
10 | We are pleased to announce the release of Scala.js 0.6.7!
11 |
12 | This release is almost exclusively a bugfix release, after some critical regressions regarding the sbt plugin in Scala.js 0.6.6.
13 | In particular, it fixes:
14 |
15 | * [#2195](https://github.com/scala-js/scala-js/issues/2195) Source maps to the Scala standard library are broken
16 | * [#2198](https://github.com/scala-js/scala-js/issues/2198) "Illegal classpath entry: " after upgrading from 0.6.5 to 0.6.6
17 | * [#2202](https://github.com/scala-js/scala-js/issues/2202) and [#2219](https://github.com/scala-js/scala-js/issues/2219) `NullPointerException` or `AssertionError` while linking in client/server projects
18 | * [#2222](https://github.com/scala-js/scala-js/issues/2222) Huge performance regression of the optimizer
19 |
20 | Besides bug fixes, this release brings a few improvements:
21 |
22 | * [`js.Promise`]({{ site.production_url }}/api/scalajs-library/0.6.7/#scala.scalajs.js.Promise) and its conversions to/from `Future`
23 | * Proper stack traces for `Throwable`s in Node.js
24 | * Support for Scala cross-version source directories in `shared/`
25 |
26 |
27 |
28 | ## Getting started
29 |
30 | If you are new to Scala.js, head over to
31 | [the tutorial]({{ BASE_PATH }}/tutorial/).
32 |
33 | ## Release notes
34 |
35 | If upgrading from 0.6.5 or earlier, please also read the [release notes of 0.6.6]({{ BASE_PATH }}/news/2016/01/25/announcing-scalajs-0.6.6/), which contains some breaking changes.
36 |
37 | As a minor release, 0.6.7 is backward source and binary compatible with previous releases in the 0.6.x series.
38 | Libraries compiled with earlier versions can be used with 0.6.7 without change.
39 | 0.6.7 is also forward binary compatible with 0.6.6, but not with earlier releases: libraries compiled with 0.6.7 cannot be used by projects using 0.6.{0-5}.
40 |
41 | Please report any issues [on GitHub](https://github.com/scala-js/scala-js/issues).
42 |
43 | ## Bug fixes
44 |
45 | In addition to the important bug fixes mentioned above, the following bugs have been fixed:
46 |
47 | * [#2228](https://github.com/scala-js/scala-js/issues/2228) `BigInt("+100000000")` crashes
48 | * [#2220](https://github.com/scala-js/scala-js/issues/2220) Compiler crash in 2.12 with a lambda inside a Scala.js-defined JS class
49 | * [#2217](https://github.com/scala-js/scala-js/issues/2217) `this["require"]()` and fastOptJS
50 | * [#2197](https://github.com/scala-js/scala-js/issues/2197) `@JSName` fails for field in trait
51 |
52 | You can find the full list [on GitHub](https://github.com/scala-js/scala-js/issues?q=is%3Aissue+milestone%3Av0.6.7+is%3Aclosed).
53 |
--------------------------------------------------------------------------------
/_posts/news/2016-03-18-announcing-scalajs-0.6.8.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: Announcing Scala.js 0.6.8
4 | category: news
5 | tags: [releases]
6 | permalink: /news/2016/03/18/announcing-scalajs-0.6.8/
7 | ---
8 |
9 |
10 | We are pleased to announce the release of Scala.js 0.6.8!
11 |
12 | This release is mostly a bugfix release.
13 | The most important changes are:
14 |
15 | * Fixed [#2243](https://github.com/scala-js/scala-js/issues/2243): `-jsdeps.min.js` not produced anymore after upgrading from 0.6.5 to 0.6.6 and 0.6.7
16 | * Upgrade the implementation of the standard library to Scala 2.11.8
17 | * [#2238](https://github.com/scala-js/scala-js/issues/2238) Drop support for ES6 Strong Mode
18 |
19 | This release also contains important although invisible changes to prepare for Scala 2.12.0-M4, which [will start using default methods](https://github.com/scala/scala/pull/5003) to encode traits.
20 | This required substantial changes in Scala.js.
21 | Although most of the work was done in earlier releases of Scala.js, 0.6.8 is the first version that should be able to support Scala 2.12.0-M4.
22 |
23 |
24 |
25 | ## Getting started
26 |
27 | If you are new to Scala.js, head over to
28 | [the tutorial]({{ BASE_PATH }}/tutorial/).
29 |
30 | ## Release notes
31 |
32 | If upgrading from 0.6.5 or earlier, please also read the [release notes of 0.6.6]({{ BASE_PATH }}/news/2016/01/25/announcing-scalajs-0.6.6/), which contains some breaking changes.
33 |
34 | As a minor release, 0.6.8 is backward source and binary compatible with previous releases in the 0.6.x series.
35 | Libraries compiled with earlier versions can be used with 0.6.8 without change.
36 | However, it is not forward compatible: libraries compiled with 0.6.8 cannot be used by projects using 0.6.{0-7}.
37 |
38 | Please report any issues [on GitHub](https://github.com/scala-js/scala-js/issues).
39 |
40 | ### Drop support for ES6 Strong Mode
41 |
42 | In [Scala.js 0.6.3]({{ BASE_PATH }}/news/2015/05/12/announcing-scalajs-0.6.3/), we had introduced experimental support for [ES6 Strong Mode](https://developers.google.com/v8/experiments), a proposal of the V8 team.
43 | Since the Strong Mode experiment [has been discontinued by V8](https://groups.google.com/forum/#!topic/strengthen-js/ojj3TDxbHpQ), we have removed the Strong Mode support from Scala.js 0.6.8.
44 |
45 | The sbt setting
46 |
47 | scalaJSOutputMode := OutputMode.ECMAScript6StrongMode
48 |
49 | is therefore deprecated, and has the same behavior as `ECMAScript6`.
50 |
51 | ### New Java libraries
52 |
53 | * `java.util.Properties`
54 | * `System.getProperties()` and friends, along with support for `-D` options in the sbt setting `javaOptions`
55 |
56 | ## Bug fixes
57 |
58 | Among others, the following bugs have been fixed in this release:
59 |
60 | * [#2226](https://github.com/scala-js/scala-js/issues/2226) JSEnv timeouts start too early
61 | * [#2243](https://github.com/scala-js/scala-js/issues/2243): `-jsdeps.min.js` not produced anymore after upgrading from 0.6.5 to 0.6.6 and 0.6.7
62 |
63 | You can find the full list [on GitHub](https://github.com/scala-js/scala-js/issues?q=is%3Aissue+milestone%3Av0.6.8+is%3Aclosed).
64 |
--------------------------------------------------------------------------------
/_posts/news/2016-06-17-announcing-scalajs-0.6.10.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: Announcing Scala.js 0.6.10
4 | category: news
5 | tags: [releases]
6 | permalink: /news/2016/06/17/announcing-scalajs-0.6.10/
7 | ---
8 |
9 |
10 | We are pleased to announce the release of Scala.js 0.6.10!
11 |
12 | This release is mostly a bug-fix release.
13 | It also contains further adaptations to support the upcoming Scala 2.12.0-M5.
14 |
15 | The most important improvement is that the sbt plugin can now generate HTML pages to run your test suites in browsers (with any testing framework), so that you can use your browser's debugger to step through your tests.
16 |
17 |
18 |
19 | ## Getting started
20 |
21 | If you are new to Scala.js, head over to
22 | [the tutorial]({{ BASE_PATH }}/tutorial/).
23 |
24 | ## Release notes
25 |
26 | If upgrading from 0.6.5 or earlier, please also read the [release notes of 0.6.6]({{ BASE_PATH }}/news/2016/01/25/announcing-scalajs-0.6.6/), which contains some breaking changes.
27 |
28 | As a minor release, 0.6.10 is backward source and binary compatible with previous releases in the 0.6.x series.
29 | Libraries compiled with earlier versions can be used with 0.6.10 without change.
30 | 0.6.10 is also forward binary compatible with 0.6.8 and 0.6.9, but not with earlier releases: libraries compiled with 0.6.10 cannot be used by projects using 0.6.{0-7}.
31 |
32 | Please report any issues [on GitHub](https://github.com/scala-js/scala-js/issues).
33 |
34 | ## HTML test runners
35 |
36 | You already know that you can use the `test` task of sbt to run your unit tests in Rhino, Node.js, PhantomJS or even Selenium.
37 | All these runners however lack friendly, graphical debbugers.
38 | In Scala.js 0.6.10, we have enhanced the sbt plugin with two new tasks `testHtmlFastOpt` and `testHtmlFullOpt`.
39 | These tasks generate an HTML file which, when opened in a web browser, will run your test suite within the browser.
40 | From there, you can use your browser's debugger.
41 |
42 | ## Bug fixes
43 |
44 | Among others, the following bugs have been fixed:
45 |
46 | * [#2314](https://github.com/scala-js/scala-js/issues/2314) Infinite loop in `BigDecimal.isValidLong` (again)
47 | * [#2376](https://github.com/scala-js/scala-js/issues/2376) PhantomJSEnv does not properly escape JS code in webpage (duplicate [#2279](https://github.com/scala-js/scala-js/issues/2279), [#2322](https://github.com/scala-js/scala-js/issues/2322))
48 | * [#2368](https://github.com/scala-js/scala-js/issues/2368) RhinoJSEnv does not support setTimeout without second argument
49 | * [#2333](https://github.com/scala-js/scala-js/issues/2333) The JUnit runner does not report failures as events, causing `sbt test` to erroneously succeed
50 | * [#2392](https://github.com/scala-js/scala-js/issues/2392) java.util.Date should have method getTimezoneOffset
51 | * [#2400](https://github.com/scala-js/scala-js/issues/2400) java.util.Arrays.sort is not stable
52 | * [#2401](https://github.com/scala-js/scala-js/issues/2401) Allow native objects in package objects without @JSName
53 | * A number of discrepancies with the way our implementation of JUnit was logging its output wrt. the JVM reference
54 |
55 | You can find the full list [on GitHub](https://github.com/scala-js/scala-js/issues?q=is%3Aissue+milestone%3Av0.6.10+is%3Aclosed).
56 |
--------------------------------------------------------------------------------
/_posts/news/2016-09-01-announcing-scalajs-0.6.12.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: Announcing Scala.js 0.6.12
4 | category: news
5 | tags: [releases]
6 | permalink: /news/2016/09/01/announcing-scalajs-0.6.12/
7 | ---
8 |
9 |
10 | We are pleased to announce the release of Scala.js 0.6.12!
11 |
12 | This release exclusively contains bug fixes, and a few internal changes to support the upcoming Scala 2.12.0-RC1.
13 |
14 |
15 |
16 | ## Getting started
17 |
18 | If you are new to Scala.js, head over to
19 | [the tutorial]({{ BASE_PATH }}/tutorial/).
20 |
21 | ## Release notes
22 |
23 | If upgrading from 0.6.5 or earlier, please also read the [release notes of 0.6.6]({{ BASE_PATH }}/news/2016/01/25/announcing-scalajs-0.6.6/), which contains some breaking changes.
24 |
25 | As a minor release, 0.6.12 is backward source and binary compatible with previous releases in the 0.6.x series.
26 | Libraries compiled with earlier versions can be used with 0.6.12 without change.
27 | 0.6.12 is also forward binary compatible with 0.6.8 through 0.6.11, but not with earlier releases: libraries compiled with 0.6.12 cannot be used by projects using 0.6.{0-7}.
28 |
29 | Please report any issues [on GitHub](https://github.com/scala-js/scala-js/issues).
30 |
31 | ## Potentially breaking change
32 |
33 | This release fixes [#2573](https://github.com/scala-js/scala-js/issues/2573), which potentially constitutes a breaking change, if you relied on the previously buggy behavior.
34 | Until Scala.js 0.6.11, the behavior of `java.util.regex.Pattern.split()` (and consequently `String.split()`) was aligned with the behavior of the JDK 7.
35 | The fix for [#2573](https://github.com/scala-js/scala-js/issues/2573) changes this behavior to align with the JDK 8.
36 | This will change the result of `split()` when a zero-width separator is matched at the beginning of the string.
37 |
38 | ## Bug fixes
39 |
40 | The following bugs have been fixed in 0.6.12:
41 |
42 | * [#2547](https://github.com/scala-js/scala-js/issues/2547) Overriding a JS native method with default parameters leads to `AssertionError` in the compiler
43 | * [#2553](https://github.com/scala-js/scala-js/issues/2553) Constructing a `String` from a large byte array throws "Maximum call stack size exceeded"
44 | * [#2554](https://github.com/scala-js/scala-js/issues/2554) Wrong codegen in the presence of pattern match + boxed value class
45 | * [#2559](https://github.com/scala-js/scala-js/issues/2559) `Throwable` constructor with cause should use the cause's message
46 | * [#2565](https://github.com/scala-js/scala-js/issues/2565) `java.util.Date.toString()` result is missing dd part
47 | * [#2573](https://github.com/scala-js/scala-js/issues/2573) `split("")` is not identical to JVM split
48 |
49 | You can find the full list [on GitHub](https://github.com/scala-js/scala-js/issues?q=is%3Aissue+milestone%3Av0.6.12+is%3Aclosed).
50 |
--------------------------------------------------------------------------------
/_posts/news/2017-04-29-announcing-scalajs-0.6.16.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: Announcing Scala.js 0.6.16
4 | category: news
5 | tags: [releases]
6 | permalink: /news/2017/04/29/announcing-scalajs-0.6.16/
7 | ---
8 |
9 |
10 | We are excited to announce the release of Scala.js 0.6.16!
11 |
12 | This release is mostly a bug-fix release.
13 | It also adds support for jsdom v10.x (which contains breaking changes wrt. jsdom v9.x) and Scala 2.13.0-M1.
14 |
15 | Read on for more details.
16 |
17 |
18 |
19 | ## Getting started
20 |
21 | If you are new to Scala.js, head over to
22 | [the tutorial]({{ BASE_PATH }}/tutorial/).
23 |
24 | ## Release notes
25 |
26 | If upgrading from Scala.js 0.6.14 or earlier, make sure to read [the release notes of 0.6.15]({{ BASE_PATH }}/news/2017/03/21/announcing-scalajs-0.6.15/), which contain important migration information.
27 |
28 | As a minor release, 0.6.16 is backward source and binary compatible with previous releases in the 0.6.x series.
29 | Libraries compiled with earlier versions can be used with 0.6.16 without change.
30 | It is also forward binary compatible with 0.6.15, but not with earlier releases: libraries compiled with 0.6.16 cannot be used by projects using 0.6.{0-14}.
31 |
32 | Please report any issues [on GitHub](https://github.com/scala-js/scala-js/issues).
33 |
34 | ## New JDK parts
35 |
36 | * [#2906](https://github.com/scala-js/scala-js/issues/2906) `java.lang.Math.next{Up,Down,After}` for `Float`s, as well as `nextDown` for `Double`
37 |
38 | ## Bug fixes
39 |
40 | Among others, the following bugs have been fixed in 0.6.16:
41 |
42 | * [#2821](https://github.com/scala-js/scala-js/issues/2821) Source Maps bug - wrong column in the generated file (thanks to [@Gralfim](https://github.com/Gralfim))
43 | * [#2902](https://github.com/scala-js/scala-js/issues/2902) JSDOM API change breaks virtual console in tests
44 |
45 | You can find the full list [on GitHub](https://github.com/scala-js/scala-js/issues?q=is%3Aissue+milestone%3Av0.6.16+is%3Aclosed).
46 |
--------------------------------------------------------------------------------
/_posts/news/2017-07-29-announcing-scalajs-0.6.19.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: Announcing Scala.js 0.6.19
4 | category: news
5 | tags: [releases]
6 | permalink: /news/2017/07/29/announcing-scalajs-0.6.19/
7 | ---
8 |
9 |
10 | We are pleased to announce the release of Scala.js 0.6.19!
11 |
12 | This release brings support for [sbt 1.0.0-RC2](http://www.scala-sbt.org/1.0/docs/sbt-1.0-Release-Notes.html#sbt+1.0.0-RC2) and following.
13 | In addition, it fixes a few compiler issues.
14 |
15 | Read on for more details.
16 |
17 |
18 |
19 | ## Getting started
20 |
21 | If you are new to Scala.js, head over to
22 | [the tutorial]({{ BASE_PATH }}/tutorial/).
23 |
24 | ## Release notes
25 |
26 | If upgrading from Scala.js 0.6.14 or earlier, make sure to read [the release notes of 0.6.15]({{ BASE_PATH }}/news/2017/03/21/announcing-scalajs-0.6.15/), which contain important migration information.
27 |
28 | As a minor release, 0.6.19 is backward source and binary compatible with previous releases in the 0.6.x series.
29 | Libraries compiled with earlier versions can be used with 0.6.19 without change.
30 | 0.6.19 is also forward binary compatible with 0.6.{17-18}, but not with earlier releases: libraries compiled with 0.6.19 cannot be used by projects using 0.6.{0-16}.
31 |
32 | Please report any issues [on GitHub](https://github.com/scala-js/scala-js/issues).
33 |
34 | ## New features
35 |
36 | ### Support for sbt 1.0.0-RC2 and following
37 |
38 | You can now use Scala.js 0.6.19 with [sbt 1.0.0-RC2](http://www.scala-sbt.org/1.0/docs/sbt-1.0-Release-Notes.html#sbt+1.0.0-RC2), and following releases of sbt.
39 | Nothing changes in sbt-scalajs between sbt 0.13.x and sbt 1.x.
40 |
41 | ## Bug fixes
42 |
43 | Among others, the following bugs have been fixed in 0.6.19:
44 |
45 | * [#3053](https://github.com/scala-js/scala-js/issues/3053) "`java.util.NoSuchElementException`: key not found: null" while optimizing (root cause: [#3055](https://github.com/scala-js/scala-js/issues/3055))
46 | * [#3050](https://github.com/scala-js/scala-js/issues/3050) No linking error reported for conflicting export names with `@JSExportTopLevel object`.
47 | * [#3047](https://github.com/scala-js/scala-js/issues/3047) Two methods with the same JS name must not compile
48 |
49 | You can find the full list [on GitHub](https://github.com/scala-js/scala-js/issues?q=is%3Aissue+milestone%3Av0.6.19+is%3Aclosed).
50 |
--------------------------------------------------------------------------------
/_posts/news/2017-11-06-announcing-scalajs-0.6.21.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: Announcing Scala.js 0.6.21
4 | category: news
5 | tags: [releases]
6 | permalink: /news/2017/11/06/announcing-scalajs-0.6.21/
7 | ---
8 |
9 |
10 | We are pleased to announce the release of Scala.js 0.6.21!
11 |
12 | This release is almost exclusively a bug-fix release.
13 |
14 | Read on for more details.
15 |
16 |
17 |
18 | ## Getting started
19 |
20 | If you are new to Scala.js, head over to
21 | [the tutorial]({{ BASE_PATH }}/tutorial/).
22 |
23 | ## Release notes
24 |
25 | If upgrading from Scala.js 0.6.14 or earlier, make sure to read [the release notes of 0.6.15]({{ BASE_PATH }}/news/2017/03/21/announcing-scalajs-0.6.15/), which contain important migration information.
26 |
27 | As a minor release, 0.6.21 is backward source and binary compatible with previous releases in the 0.6.x series.
28 | Libraries compiled with earlier versions can be used with 0.6.21 without change.
29 | 0.6.21 is also forward binary compatible with 0.6.{17-20}, but not with earlier releases: libraries compiled with 0.6.21 cannot be used by projects using 0.6.{0-16}.
30 |
31 | Please report any issues [on GitHub](https://github.com/scala-js/scala-js/issues).
32 |
33 | ## New features
34 |
35 | ### JDK APIs
36 |
37 | The following JDK API methods have been added:
38 |
39 | * `java.lang.StringBuilder.delete`
40 | * `java.lang.StringBuffer.delete`
41 |
42 | ## Bug fixes
43 |
44 | The following bugs have been fixed in 0.6.21:
45 |
46 | * [#3125](https://github.com/scala-js/scala-js/issues/3125) `println("\u0007")` renders as the character `"a"`
47 | * [#3128](https://github.com/scala-js/scala-js/issues/3128) Scala.js 0.6.20 breaks Java 7 builds (`NoSuchMethodError: java.util.concurrent.ConcurrentHashMap.keySet`)
48 | * [#3134](https://github.com/scala-js/scala-js/issues/3134) `regex.Matcher.start(group)` and friends report wrong positions
49 | * [#3135](https://github.com/scala-js/scala-js/issues/3135) Relative path to source file in sourcemap is sometimes broken
50 |
51 | You can find the full list [on GitHub](https://github.com/scala-js/scala-js/issues?q=is%3Aissue+milestone%3Av0.6.21+is%3Aclosed).
52 |
--------------------------------------------------------------------------------
/_posts/news/2018-01-24-announcing-scalajs-0.6.22.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: Announcing Scala.js 0.6.22
4 | category: news
5 | tags: [releases]
6 | permalink: /news/2018/01/24/announcing-scalajs-0.6.22/
7 | ---
8 |
9 |
10 | We are pleased to announce the release of Scala.js 0.6.22!
11 |
12 | This release is almost exclusively a bug-fix release.
13 | It also features an improvement in terms of memory consumption and execution performance while running tests.
14 |
15 | Read on for more details.
16 |
17 |
18 |
19 | ## Getting started
20 |
21 | If you are new to Scala.js, head over to
22 | [the tutorial]({{ BASE_PATH }}/tutorial/).
23 |
24 | ## Release notes
25 |
26 | If upgrading from Scala.js 0.6.14 or earlier, make sure to read [the release notes of 0.6.15]({{ BASE_PATH }}/news/2017/03/21/announcing-scalajs-0.6.15/), which contain important migration information.
27 |
28 | As a minor release, 0.6.22 is backward source and binary compatible with previous releases in the 0.6.x series.
29 | Libraries compiled with earlier versions can be used with 0.6.22 without change.
30 | 0.6.22 is also forward binary compatible with 0.6.{17-21}, but not with earlier releases: libraries compiled with 0.6.22 cannot be used by projects using 0.6.{0-16}.
31 |
32 | Please report any issues [on GitHub](https://github.com/scala-js/scala-js/issues).
33 |
34 | ## New features
35 |
36 | ### JDK APIs
37 |
38 | The following JDK API methods have been added:
39 |
40 | * `java.nio.Charset.aliases()`
41 |
42 | ## Bug fixes
43 |
44 | Among others, the following bugs have been fixed in 0.6.22:
45 |
46 | * [#3206](https://github.com/scala-js/scala-js/issues/3206) Standard error of Scala.js is erroneously sent to `logger.error`, instead of to stderr
47 | * [#3218](https://github.com/scala-js/scala-js/issues/3218) main() in test scope is executed twice when using test framework and a main module initializer in Test
48 | * [#3219](https://github.com/scala-js/scala-js/issues/3219) Methods exported under a scalac name starting with `$` are not exported
49 | * [#3264](https://github.com/scala-js/scala-js/issues/3264) NPE while compiling an LMF-capable SAM inside an anonymous JS class
50 |
51 | You can find the full list [on GitHub](https://github.com/scala-js/scala-js/issues?q=is%3Aissue+milestone%3Av0.6.22+is%3Aclosed).
52 |
--------------------------------------------------------------------------------
/_posts/news/2018-05-22-announcing-scalajs-0.6.23.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: Announcing Scala.js 0.6.23
4 | category: news
5 | tags: [releases]
6 | permalink: /news/2018/05/22/announcing-scalajs-0.6.23/
7 | ---
8 |
9 |
10 | We are pleased to announce the release of Scala.js 0.6.23!
11 |
12 | This release is almost exclusively a bug-fix release.
13 | It also adds support for Scala 2.13.0-M4 and its new collections, thanks to the hard work of [**@julienrf**](https://github.com/julienrf).
14 |
15 | Read on for more details.
16 |
17 |
18 |
19 | ## Getting started
20 |
21 | If you are new to Scala.js, head over to
22 | [the tutorial]({{ BASE_PATH }}/tutorial/).
23 |
24 | ## Release notes
25 |
26 | If upgrading from Scala.js 0.6.14 or earlier, make sure to read [the release notes of 0.6.15]({{ BASE_PATH }}/news/2017/03/21/announcing-scalajs-0.6.15/), which contain important migration information.
27 |
28 | As a minor release, 0.6.23 is backward binary compatible with previous releases in the 0.6.x series.
29 | Libraries compiled with earlier versions can be used with 0.6.23 without change.
30 | 0.6.23 is also forward binary compatible with 0.6.{17-22}, but not with earlier releases: libraries compiled with 0.6.23 cannot be used by projects using 0.6.{0-16}.
31 |
32 | There is one source breaking change if you use `.scala` files for your sbt build.
33 |
34 | Please report any issues [on GitHub](https://github.com/scala-js/scala-js/issues).
35 |
36 | ## Breaking changes
37 |
38 | Usages of `%%%` in `.scala` files of an sbt build (under `project/`) need a new import:
39 |
40 | {% highlight scala %}
41 | import org.portablescala.sbtplatformdeps.PlatformDepsPlugin.autoImport._
42 | {% endhighlight %}
43 |
44 | For `.sbt` files, this import is automatically added, so nothing changes.
45 |
46 | ## Deprecations
47 |
48 | ### Built-in `crossProject`
49 |
50 | The built-in `crossProject` feature has been deprecated.
51 | You should use [sbt-crossproject](https://github.com/portable-scala/sbt-crossproject) instead.
52 | Please follow [the migration instructions](https://github.com/portable-scala/sbt-crossproject#migration-from-scalajs-default-crossproject) in its readme.
53 |
54 | ### `withOutputMode`
55 |
56 | The notion of `OutputMode` has been replaced by that of `ESFeatures`.
57 | Instead of
58 |
59 | {% highlight scala %}
60 | import org.scalajs.core.tools.linker.backend.OutputMode
61 | scalaJSOutputMode := OutputMode.ECMAScript2015
62 | {% endhighlight %}
63 |
64 | or
65 |
66 | {% highlight scala %}
67 | import org.scalajs.core.tools.linker.standard._
68 | scalaJSLinkerConfig ~= { _.withOutputMode(OutputMode.ECMAScript2015) }
69 | {% endhighlight %}
70 |
71 | you should now use
72 |
73 | {% highlight scala %}
74 | // no import needed
75 | scalaJSLinkerConfig ~= { _.withESFeatures(_.withUseECMAScript2015(true)) }
76 | {% endhighlight %}
77 |
78 | ## New features
79 |
80 | ### JDK APIs
81 |
82 | The following JDK API methods have been added:
83 |
84 | * `java.lang.Character.isSurrogate()`
85 |
86 | ## Bug fixes
87 |
88 | Among others, the following bugs have been fixed in 0.6.23:
89 |
90 | * [#3227](https://github.com/scala-js/scala-js/issues/3227) Linking error for an `@EnableReflectiveInstantiation` class inside a lambda in Scala 2.11 and 2.10
91 | * [#3267](https://github.com/scala-js/scala-js/issues/3267) Linking error with `@tailrec` method inside a trait with a self-type, on Scala 2.12+
92 | * [#3285](https://github.com/scala-js/scala-js/issues/3285) Run-time error in Scala.js-defined classes with multiple parameter lists and default args
93 |
94 | You can find the full list [on GitHub](https://github.com/scala-js/scala-js/issues?q=is%3Aissue+milestone%3Av0.6.23+is%3Aclosed).
95 |
--------------------------------------------------------------------------------
/_posts/news/2018-06-29-announcing-scalajs-0.6.24.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: Announcing Scala.js 0.6.24
4 | category: news
5 | tags: [releases]
6 | permalink: /news/2018/06/29/announcing-scalajs-0.6.24/
7 | ---
8 |
9 |
10 | We are pleased to announce the release of Scala.js 0.6.24!
11 |
12 | This release contains a number of fixes for small bugs that have been lingering in our issue tracker for ages.
13 | The version of the Scala standard library for 2.12 has also been upgraded to 2.12.6.
14 |
15 | Read on for more details.
16 |
17 |
18 |
19 | ## Getting started
20 |
21 | If you are new to Scala.js, head over to
22 | [the tutorial]({{ BASE_PATH }}/tutorial/).
23 |
24 | ## Release notes
25 |
26 | If you use `.scala` build files in `project/` and are upgrading from Scala.js 0.6.22 or earlier, do read [the release notes of 0.6.23]({{ BASE_PATH }}/news/2018/05/22/announcing-scalajs-0.6.23/), which contain a source breaking change in that situation.
27 |
28 | If upgrading from Scala.js 0.6.14 or earlier, make sure to read [the release notes of 0.6.15]({{ BASE_PATH }}/news/2017/03/21/announcing-scalajs-0.6.15/), which contain important migration information.
29 |
30 | As a minor release, 0.6.24 is backward binary compatible with previous releases in the 0.6.x series.
31 | Libraries compiled with earlier versions can be used with 0.6.24 without change.
32 | 0.6.24 is also forward binary compatible with 0.6.{17-23}, but not with earlier releases: libraries compiled with 0.6.24 cannot be used by projects using 0.6.{0-16}.
33 |
34 | Please report any issues [on GitHub](https://github.com/scala-js/scala-js/issues).
35 |
36 | ## Changes with compatibility concerns
37 |
38 | Following a breaking dependency change on Rhino in recent versions of sbt-web and sbt-js-engine which [caused some issues when combined with Scala.js](https://github.com/sbt/sbt-less/issues/95), we have upgraded our own dependency on Rhino to
39 |
40 | {% highlight scala %}
41 | "org.mozilla" % "rhino" % "1.7.6"
42 | {% endhighlight %}
43 |
44 | Although we do not foresee any issue in practice, there exists a possibility that this will break your build if another sbt plugin relies on apigee's fork of Rhino.
45 | If this causes an issue for you, you can fall back on the old dependency by adding the following to `project/plugins.sbt`:
46 |
47 | {% highlight scala %}
48 | excludeDependencies += "org.mozilla" % "rhino"
49 | libraryDependencies += "io.apigee" % "rhino" % "1.7R5pre4"
50 | {% endhighlight %}
51 |
52 | ## Bug fixes
53 |
54 | Among others, the following bugs have been fixed in 0.6.24:
55 |
56 | * [#3393](https://github.com/scala-js/scala-js/issues/3393) When a JSEnv fails on startup (e.g., due to a lack of `jsdom`), sbt reports success
57 | * [#1619](https://github.com/scala-js/scala-js/issues/1619) `String.format` does not support thousands grouping
58 | * [#2935](https://github.com/scala-js/scala-js/issues/2935) `Integer.parseInt` and similar don't support non-ASCII scripts
59 | * [#3348](https://github.com/scala-js/scala-js/issues/3348) Doubles in hex notation fail to parse
60 | * [#3368](https://github.com/scala-js/scala-js/issues/3368) Scala.js' JUnit emits weird comparison for strings that fail `assertEquals`
61 |
62 | You can find the full list [on GitHub](https://github.com/scala-js/scala-js/issues?q=is%3Aissue+milestone%3Av0.6.24+is%3Aclosed).
63 |
--------------------------------------------------------------------------------
/_posts/news/2018-09-03-announcing-scalajs-0.6.25.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: Announcing Scala.js 0.6.25
4 | category: news
5 | tags: [releases]
6 | permalink: /news/2018/09/03/announcing-scalajs-0.6.25/
7 | ---
8 |
9 |
10 | We are pleased to announce the release of Scala.js 0.6.25!
11 |
12 | This release brings support for Scala 2.13.0-M5, as well as jsdom v12.x.
13 | It also fixes a number of issues.
14 |
15 | Read on for more details.
16 |
17 |
18 |
19 | ## Getting started
20 |
21 | If you are new to Scala.js, head over to
22 | [the tutorial]({{ BASE_PATH }}/tutorial/).
23 |
24 | ## Release notes
25 |
26 | If you use `.scala` build files in `project/` and are upgrading from Scala.js 0.6.22 or earlier, do read [the release notes of 0.6.23]({{ BASE_PATH }}/news/2018/05/22/announcing-scalajs-0.6.23/), which contain a source breaking change in that situation.
27 |
28 | If upgrading from Scala.js 0.6.14 or earlier, make sure to read [the release notes of 0.6.15]({{ BASE_PATH }}/news/2017/03/21/announcing-scalajs-0.6.15/), which contain important migration information.
29 |
30 | As a minor release, 0.6.25 is backward binary compatible with previous releases in the 0.6.x series.
31 | Libraries compiled with earlier versions can be used with 0.6.25 without change.
32 | 0.6.25 is also forward binary compatible with 0.6.{17-24}, but not with earlier releases: libraries compiled with 0.6.25 cannot be used by projects using 0.6.{0-16}.
33 |
34 | Please report any issues [on GitHub](https://github.com/scala-js/scala-js/issues).
35 |
36 | ## Bug fixes
37 |
38 | Among others, the following bugs have been fixed in 0.6.25:
39 |
40 | * [#3426](https://github.com/scala-js/scala-js/issues/3426) and [#3422](https://github.com/scala-js/scala-js/issues/3422) `lazy val`s within non-native JS classes are now supported
41 | - Caveat: `override lazy val`s do not behave correctly when they override another `lazy val`.
42 | This issue is not fixable in 0.6.x for binary compatibility reasons, but will be fixed in Scala.js 1.x.
43 | * [#3433](https://github.com/scala-js/scala-js/issues/3433) UTF-8 `CharsetDecoder` doesn't handle incomplete character ranges correctly
44 | * [#3417](https://github.com/scala-js/scala-js/issues/3417) Crash in `jsDependencies` resolution on Windows due to some path issue
45 | * [#3415](https://github.com/scala-js/scala-js/issues/3415) Optimizer stack-overflows, inlining a method within a closure inside that method
46 | * [#3408](https://github.com/scala-js/scala-js/issues/3408) Sporadic test failures in `org.scalajs.testcommon.RPCCore` (`NullPointerException`)
47 | * [#3401](https://github.com/scala-js/scala-js/issues/3401) Groups are broken for regexes with in-line flags since 0.6.21
48 |
49 | You can find the full list [on GitHub](https://github.com/scala-js/scala-js/issues?q=is%3Aissue+milestone%3Av0.6.25+is%3Aclosed).
50 |
--------------------------------------------------------------------------------
/_posts/news/2019-04-08-announcing-scalajs-0.6.27.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: Announcing Scala.js 0.6.27
4 | category: news
5 | tags: [releases]
6 | permalink: /news/2019/04/08/announcing-scalajs-0.6.27/
7 | ---
8 |
9 |
10 | We are pleased to announce the release of Scala.js 0.6.27!
11 |
12 | The highlight of this release is the support for Scala 2.13.0-RC1.
13 | It also fixes a few issues, and introduces a way to limit the number of concurrent linking operations in the sbt plugin.
14 |
15 | Read on for more details.
16 |
17 |
18 |
19 | ## Getting started
20 |
21 | If you are new to Scala.js, head over to
22 | [the tutorial]({{ BASE_PATH }}/tutorial/).
23 |
24 | ## Release notes
25 |
26 | If you use `.scala` build files in `project/` and are upgrading from Scala.js 0.6.22 or earlier, do read [the release notes of 0.6.23]({{ BASE_PATH }}/news/2018/05/22/announcing-scalajs-0.6.23/), which contain a source breaking change in that situation.
27 |
28 | If upgrading from Scala.js 0.6.14 or earlier, make sure to read [the release notes of 0.6.15]({{ BASE_PATH }}/news/2017/03/21/announcing-scalajs-0.6.15/), which contain important migration information.
29 |
30 | As a minor release, 0.6.27 is backward binary compatible with previous releases in the 0.6.x series.
31 | Libraries compiled with earlier versions can be used with 0.6.27 without change.
32 | 0.6.27 is also forward binary compatible with 0.6.{17-26}, but not with earlier releases: libraries compiled with 0.6.27 cannot be used by projects using 0.6.{0-16}.
33 |
34 | Please report any issues [on GitHub](https://github.com/scala-js/scala-js/issues).
35 |
36 | ## Limit how many Scala.js linker tasks can concurrently run in sbt
37 |
38 | Linker tasks (`fastOptJS` and `fullOptJS`), which are transitively called by `run` and `test` tasks, use a lot of memory.
39 | In some environments, and in particular on CI machines, this can lead to memory exhaustion and fail builds.
40 | You can now use the following sbt setting to limit how many such tasks can concurrently run:
41 |
42 | {% highlight scala %}
43 | concurrentRestrictions in Global += Tags.limit(ScalaJSTags.Link, 2)
44 | {% endhighlight %}
45 |
46 | You may want to systematically enable that setting in your CI jobs.
47 |
48 | ## Bug fixes
49 |
50 | Among others, the following bugs have been fixed in 0.6.27:
51 |
52 | * [#3575](https://github.com/scala-js/scala-js/issues/3575) Wrong optimizations on floating point comparisons, e.g. `!(x <= 0)` ⟶ `x > 0`
53 | * [#3538](https://github.com/scala-js/scala-js/issues/3538) Incorrect codegen for `@JSExport` on method with variable arguments in trait
54 | * [#3528](https://github.com/scala-js/scala-js/issues/3528) `NodeJSEnv` does not propagate error output from Node.js
55 |
56 | You can find the full list [on GitHub](https://github.com/scala-js/scala-js/issues?q=is%3Aissue+milestone%3Av0.6.27+is%3Aclosed).
57 |
--------------------------------------------------------------------------------
/_posts/news/2019-05-24-announcing-scalajs-0.6.28.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: Announcing Scala.js 0.6.28
4 | category: news
5 | tags: [releases]
6 | permalink: /news/2019/05/24/announcing-scalajs-0.6.28/
7 | ---
8 |
9 |
10 | We are pleased to announce the release of Scala.js 0.6.28!
11 |
12 | **This release drops support for building on JDK 6 and 7!**
13 | In exchange, it adds support for using the Google Closure Compiler when emitting ECMAScript 2015 code.
14 |
15 | This release also prepares for Scala 2.13.0 final.
16 | Older releases will not support that version.
17 |
18 | Read on for more details.
19 |
20 |
21 |
22 | ## Getting started
23 |
24 | If you are new to Scala.js, head over to
25 | [the tutorial]({{ BASE_PATH }}/tutorial/).
26 |
27 | ## Release notes
28 |
29 | If you use `.scala` build files in `project/` and are upgrading from Scala.js 0.6.22 or earlier, do read [the release notes of 0.6.23]({{ BASE_PATH }}/news/2018/05/22/announcing-scalajs-0.6.23/), which contain a source breaking change in that situation.
30 |
31 | If upgrading from Scala.js 0.6.14 or earlier, make sure to read [the release notes of 0.6.15]({{ BASE_PATH }}/news/2017/03/21/announcing-scalajs-0.6.15/), which contain important migration information.
32 |
33 | As a minor release, 0.6.28 is backward binary compatible with previous releases in the 0.6.x series.
34 | Libraries compiled with earlier versions can be used with 0.6.28 without change.
35 | 0.6.28 is also forward binary compatible with 0.6.{17-27}, but not with earlier releases: libraries compiled with 0.6.28 cannot be used by projects using 0.6.{0-16}.
36 |
37 | Please report any issues [on GitHub](https://github.com/scala-js/scala-js/issues).
38 |
39 | ## Drop support for building on JDK 6 and JDK 7
40 |
41 | This was long overdue.
42 | Keeping support for JDK 6 and JDK 7 was holding us back from significant improvements, notably the ability to upgrade GCC and enable it for ES 2015 code (see below).
43 |
44 | ## Support for using the Google Closure Compiler with the ES 2015 output
45 |
46 | When emitting ECMAScript 2015 code, using the sbt setting
47 |
48 | {% highlight scala %}
49 | scalaJSLinkerConfig ~= { _.withESFeatures(_.withUseECMAScript2015(true)) }
50 | {% endhighlight %}
51 |
52 | previously Scala.js would disable the Google Closure Compiler even in fullOpt mode, because we used an old version of GCC that did not support ES 2015.
53 | We have now upgraded GCC to a recent release, and starting with Scala.js 0.6.28, GCC is enabled in fullOpt mode when using ES 2015.
54 |
55 | ## Bug fixes
56 |
57 | Among others, the following bugs have been fixed in 0.6.28:
58 |
59 | * [#3612](https://github.com/scala-js/scala-js/issues/3612) and [#3622](https://github.com/scala-js/scala-js/issues/3622) Spurious failures and warnings of Scaladoc with Scala 2.13.0-RC1+
60 | * [#3611](https://github.com/scala-js/scala-js/issues/3611) Test failures are ignored when filename is null in the stack trace
61 |
62 | You can find the full list [on GitHub](https://github.com/scala-js/scala-js/issues?q=is%3Aissue+milestone%3Av0.6.28+is%3Aclosed).
63 |
--------------------------------------------------------------------------------
/_posts/news/2020-01-24-announcing-scalajs-0.6.32.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: Announcing Scala.js 0.6.32
4 | category: news
5 | tags: [releases]
6 | permalink: /news/2020/01/24/announcing-scalajs-0.6.32/
7 | ---
8 |
9 |
10 | We are pleased to announce the release of Scala.js 0.6.32!
11 |
12 | This is mostly a bugfix release, including a fix for a regression in regular expressions that appeared in 0.6.31 ([#3901](https://github.com/scala-js/scala-js/issues/3901)).
13 | This release also adds the definitions for some recent methods of `js.Object`, thanks to [@exoego](https://github.com/exoego), and the JDK interface `java.util.function.Consumer`, thanks to [mliarakos](https://github.com/mliarakos).
14 |
15 | Read on for more details.
16 |
17 |
18 |
19 | ## Getting started
20 |
21 | If you are new to Scala.js, head over to
22 | [the tutorial]({{ BASE_PATH }}/tutorial/).
23 |
24 | ## Release notes
25 |
26 | If you use `.scala` build files in `project/` and are upgrading from Scala.js 0.6.22 or earlier, do read [the release notes of 0.6.23]({{ BASE_PATH }}/news/2018/05/22/announcing-scalajs-0.6.23/), which contain a source breaking change in that situation.
27 |
28 | If upgrading from Scala.js 0.6.14 or earlier, make sure to read [the release notes of 0.6.15]({{ BASE_PATH }}/news/2017/03/21/announcing-scalajs-0.6.15/), which contain important migration information.
29 |
30 | As a minor release, 0.6.32 is backward binary compatible with previous releases in the 0.6.x series.
31 | Libraries compiled with earlier versions can be used with 0.6.32 without change.
32 | 0.6.32 is also forward binary compatible with 0.6.{29-31}, but not with earlier releases: libraries compiled with 0.6.32 cannot be used by projects using 0.6.{0-28}.
33 |
34 | Please report any issues [on GitHub](https://github.com/scala-js/scala-js/issues).
35 |
36 | ## Miscellaneous
37 |
38 | ### New JDK APIs
39 |
40 | The interface `java.util.function.Consumer` is now available, thanks to a contribution by [mliarakos](https://github.com/mliarakos).
41 |
42 | ## Bug fixes
43 |
44 | Among others, the following bugs have been fixed in 0.6.32:
45 |
46 | * [#3901](https://github.com/scala-js/scala-js/issues/3901) `TypeError` in regular expressions (regression from Scala.js 0.6.29)
47 | * [#3888](https://github.com/scala-js/scala-js/issues/3888) Linking errors on Scala 2.11 if an `object` is named `class`
48 | * [#3913](https://github.com/scala-js/scala-js/issues/3913) `java.io.ByteArrayInputStream` behaves differently between JS and JVM
49 | * [#3922](https://github.com/scala-js/scala-js/issues/3922) Wrong `maxBytesPerChar` for `CharsetEncoder`
50 |
51 | You can find the full list [on GitHub](https://github.com/scala-js/scala-js/issues?q=is%3Aissue+milestone%3Av0.6.32+is%3Aclosed).
52 |
--------------------------------------------------------------------------------
/_posts/news/2020-03-10-announcing-scalajs-1.0.1.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: Announcing Scala.js 1.0.1
4 | category: news
5 | tags: [releases]
6 | permalink: /news/2020/03/10/announcing-scalajs-1.0.1/
7 | ---
8 |
9 |
10 | We are pleased to announce the release of Scala.js 1.0.1!
11 |
12 | This is mostly a bugfix release, including a fix for a regression affecting extensions of the JDK ([#3950](https://github.com/scala-js/scala-js/issues/3950)).
13 |
14 | Read on for more details.
15 |
16 |
17 |
18 | ## Getting started
19 |
20 | If you are new to Scala.js, head over to [the tutorial]({{ BASE_PATH }}/tutorial/).
21 |
22 | 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).
23 |
24 | Bug reports can be filed [on GitHub](https://github.com/scala-js/scala-js/issues).
25 |
26 | ## Release notes
27 |
28 | 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 it contains a host of important information, including breaking changes.
29 |
30 | As a patch release, 1.0.1 is backward and forward binary compatible with 1.0.0.
31 | Libraries compiled with 1.0.0 can be used with 1.0.1 without change, and conversely.
32 | 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.
33 |
34 | ## Miscellaneous
35 |
36 | ### Upgrade to GCC v20200101
37 |
38 | The Google Closure Compiler used internally by Scala.js for `fullOptJS` has been upgraded to v20200101.
39 |
40 | ## Bug fixes
41 |
42 | Among others, the following bugs have been fixed in 1.0.1:
43 |
44 | * [#3950](https://github.com/scala-js/scala-js/issues/3950) Static forwarders are not generated for static nested objects
45 | * [#3984](https://github.com/scala-js/scala-js/issues/3984) `(-0.0).getClass()` returns `classOf[Integer]` instead of `classOf[Float]`
46 | * [#3983](https://github.com/scala-js/scala-js/issues/3983) With strict floats, `someDouble.getClass()` erroneously returns `Float`
47 |
48 | You can find the full list [on GitHub](https://github.com/scala-js/scala-js/issues?q=is%3Aissue+milestone%3Av1.0.1+is%3Aclosed).
49 |
--------------------------------------------------------------------------------
/_posts/news/2020-05-13-announcing-scalajs-0.6.33.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: Announcing Scala.js 0.6.33
4 | category: news
5 | tags: [releases]
6 | permalink: /news/2020/05/13/announcing-scalajs-0.6.33/
7 | ---
8 |
9 |
10 | We are pleased to announce the release of Scala.js 0.6.33!
11 |
12 | This is mostly a bugfix release, including a fix for a bad interaction with React.js' development mode and the `jsdom` JS env.
13 | In addition, we have upgraded to the standard libraries of Scala 2.12.11 and 2.13.2.
14 |
15 | Read on for more details.
16 |
17 |
18 |
19 | ## Getting started
20 |
21 | If you are new to Scala.js, head over to
22 | [the tutorial]({{ BASE_PATH }}/tutorial/).
23 |
24 | ## Release notes
25 |
26 | If you use `.scala` build files in `project/` and are upgrading from Scala.js 0.6.22 or earlier, do read [the release notes of 0.6.23]({{ BASE_PATH }}/news/2018/05/22/announcing-scalajs-0.6.23/), which contain a source breaking change in that situation.
27 |
28 | If upgrading from Scala.js 0.6.14 or earlier, make sure to read [the release notes of 0.6.15]({{ BASE_PATH }}/news/2017/03/21/announcing-scalajs-0.6.15/), which contain important migration information.
29 |
30 | As a minor release, 0.6.33 is backward binary compatible with previous releases in the 0.6.x series.
31 | Libraries compiled with earlier versions can be used with 0.6.33 without change.
32 | 0.6.33 is also forward binary compatible with 0.6.{29-32}, but not with earlier releases: libraries compiled with 0.6.33 cannot be used by projects using 0.6.{0-28}.
33 |
34 | Please report any issues [on GitHub](https://github.com/scala-js/scala-js/issues).
35 |
36 | ## New warnings
37 |
38 | In Scala.js 0.6.33, the Scala.js compiler will start reporting warnings when trying to override `equals` and `hashCode` in a JS type (extending `js.Any`).
39 | For example:
40 |
41 | {% highlight scala %}
42 | class A extends js.Object {
43 | override def hashCode(): Int = 1
44 | override def equals(obj: Any): Boolean = false
45 | }
46 | {% endhighlight %}
47 |
48 | will report the following warnings:
49 |
50 | {% highlight none %}
51 | Test.scala:6: warning: Overriding hashCode in a JS class does not change its hash code.
52 | To silence this warning, change the name of the method and optionally add @JSName("hashCode").
53 | override def hashCode(): Int = 1
54 | ^
55 | Test.scala:7: warning: Overriding equals in a JS class does not change how it is compared.
56 | To silence this warning, change the name of the method and optionally add @JSName("equals").
57 | override def equals(obj: Any): Boolean = false
58 | ^
59 | {% endhighlight %}
60 |
61 | Overriding `equals` and `hashCode` never *worked*, in the sense that it would not affect `==` and `##`.
62 | The new warnings make it clear.
63 |
64 | ## Bug fixes
65 |
66 | Among others, the following bugs have been fixed in 0.6.33:
67 |
68 | * [#4034](https://github.com/scala-js/scala-js/issues/4034) Incorrect result for `-x` when `x` is `+0.0`
69 | * [#3998](https://github.com/scala-js/scala-js/issues/3998) Self-types in non-native JS traits cause confusing error message
70 | * [#3458](https://github.com/scala-js/scala-js/issues/3458) Bad interactions in `JSDOMNodeJSEnv` error handling with React.js dev mode
71 | * [#3818](https://github.com/scala-js/scala-js/issues/3818) Linking error for `Future.never` from Scala 2.13
72 | * [#3939](https://github.com/scala-js/scala-js/issues/3939) Compile error on a method with `@JSName("finalize")` in a non-native JS class
73 |
74 | You can find the full list [on GitHub](https://github.com/scala-js/scala-js/issues?q=is%3Aissue+milestone%3Av0.6.33+is%3Aclosed).
75 |
--------------------------------------------------------------------------------
/_posts/news/2022-06-25-announcing-scalajs-1.10.1.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: Announcing Scala.js 1.10.1
4 | category: news
5 | tags: [releases]
6 | permalink: /news/2022/06/25/announcing-scalajs-1.10.1/
7 | ---
8 |
9 |
10 | We are pleased to announce the release of Scala.js 1.10.1!
11 |
12 | This release mostly contains bug fixes and optimizations.
13 | It also updates the version of the Scala standard library to 2.12.16 for 2.12.x versions.
14 |
15 | Read on for more details.
16 |
17 |
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 [in `#scala-js` on Discord](https://discord.com/invite/scala) 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 through 1.10.0 can be used with 1.10.1 without change.
34 | * It is forward binary compatible with 1.10.0: libraries compiled with 1.10.1 can be used with 1.10.0 without change.
35 | * It is backward source compatible with 1.10.0: source code that used to compile with 1.10.0 should compile as is when upgrading to 1.10.1.
36 |
37 | In addition, like Scala.js 1.10.0:
38 |
39 | * It is forward binary compatible with 1.8.x and 1.9.x, but *not* 1.7.x: libraries compiled with 1.10.1 can be used with 1.8.x and later, but not with 1.7.x or earlier.
40 | * It is *not* entirely backward source compatible with 1.9.x: it is not guaranteed that a codebase will compile *as is* when upgrading from 1.9.x or earlier (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 | ### Optimizations
47 |
48 | Scala.js 1.10.0 brought some optimizations with respect to closures.
49 | Scala.js 1.10.1 expands on these optimizations with the following improvements:
50 |
51 | * When a closure captures a variable that ends up being constant-folded, the constant is propagated inside the closure, and the capture parameter is removed.
52 | * Most closures that are not declared within a loop do not need an IIFE (Immediately Invoked Function Expression) anymore, even when they actually capture some variables.
53 |
54 | ## Bug fixes
55 |
56 | Among others, the following bugs have been fixed in 1.10.1:
57 |
58 | * [#4684](https://github.com/scala-js/scala-js/issues/4684) Unit JS default param makes compiler crash with "Found a dangling UndefinedParam"
59 | * [#4675](https://github.com/scala-js/scala-js/issues/4675) ES2021 not supported in fullLinkJS
60 |
61 | You can find the full list [on GitHub](https://github.com/scala-js/scala-js/issues?q=is%3Aissue+milestone%3Av1.10.1+is%3Aclosed).
62 |
--------------------------------------------------------------------------------
/_posts/news/2023-04-10-announcing-scalajs-1.13.1.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: Announcing Scala.js 1.13.1
4 | category: news
5 | tags: [releases]
6 | permalink: /news/2023/04/10/announcing-scalajs-1.13.1/
7 | ---
8 |
9 |
10 | We are pleased to announce the release of Scala.js 1.13.1!
11 |
12 | This release mostly contains bug fixes and optimizations.
13 |
14 | Read on for more details.
15 |
16 |
17 |
18 | ## Getting started
19 |
20 | If you are new to Scala.js, head over to [the tutorial]({{ BASE_PATH }}/tutorial/).
21 |
22 | If you need help with anything related to Scala.js, you may find our community [in `#scala-js` on Discord](https://discord.com/invite/scala) and [on Stack Overflow](https://stackoverflow.com/questions/tagged/scala.js).
23 |
24 | Bug reports can be filed [on GitHub](https://github.com/scala-js/scala-js/issues).
25 |
26 | ## Release notes
27 |
28 | 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.
29 |
30 | This is a **patch** release:
31 |
32 | * It is backward binary compatible with all earlier versions in the 1.x series: libraries compiled with 1.0.x through 1.13.0 can be used with 1.13.1 without change.
33 | * It is forward binary compatible with 1.13.0: libraries compiled with 1.13.1 can be used with 1.13.0 without change.
34 | * It is backward source compatible with 1.13.0: source code that used to compile with 1.13.0 should compile as is when upgrading to 1.13.1.
35 |
36 | In addition, like Scala.js 1.13.0:
37 |
38 | * It is *not* forward binary compatible with 1.12.x: libraries compiled with 1.13.1 cannot be used with 1.12.x or earlier.
39 | * It is *not* entirely backward source compatible with 1.12.x: it is not guaranteed that a codebase will compile *as is* when upgrading from 1.12.x or earlier (in particular in the presence of `-Xfatal-warnings`).
40 |
41 | 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.
42 |
43 | ## Miscellaneous
44 |
45 | ### New JDK APIs
46 |
47 | This release adds support for the following JDK methods:
48 |
49 | * In the classes `java.util.concurrent.atomic.Atomic{Integer,Long,Reference}`, the methods `getAndUpdate`, `updateAndGet`, `getAndAccumulate` and `accumulateAndGet`.
50 |
51 | ### Optimizations
52 |
53 | Scala.js 1.13.1 brings significant improvements to the performance of the linker (the `fastLinkJS` task).
54 | Most of these improvements apply to incremental scenarios, starting from the second invocation of `fastLinkJS` for a given project in the same build tool session.
55 | As a result, repeated invocations of `fastLinkJS` (possibly in watch mode, like `~fastLinkJS` in sbt) should feel much snappier than with previous versions.
56 |
57 | ## Bug fixes
58 |
59 | Among others, the following bugs have been fixed in 1.13.1:
60 |
61 | * [#4801](https://github.com/scala-js/scala-js/issues/4801) Delegating to the implementation of a calculated super class causes Internal error
62 | * [#4841](https://github.com/scala-js/scala-js/issues/4841) Repeat calls of `fastLinkJS` sometimes cause `IllegalStateException` on Windows and JDK 17+
63 | * [#4833](https://github.com/scala-js/scala-js/issues/4833) High memory consumption during linking when using `ModuleSplitStyle.SmallModulesFor(...)`
64 | * [#4835](https://github.com/scala-js/scala-js/issues/4835) `SmallModulesFor` splitting style can cause circular dependencies between emitted modules
65 |
66 | You can find the full list [on GitHub](https://github.com/scala-js/scala-js/issues?q=is%3Aissue+milestone%3Av1.13.1+is%3Aclosed).
67 |
--------------------------------------------------------------------------------
/_posts/news/2023-12-29-announcing-scalajs-1.15.0.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: Announcing Scala.js 1.15.0
4 | category: news
5 | tags: [releases]
6 | permalink: /news/2023/12/29/announcing-scalajs-1.15.0/
7 | ---
8 |
9 | We are pleased to announce the release of Scala.js 1.15.0!
10 |
11 | This release mainly brings a change in how the Scala 2 standard library is versioned in anticipation of [SIP 51][SIP-51].
12 | There is no user visible impact expected from this change at this point.
13 | Transition of the ecosystem will be handled as part of [SIP 51][SIP-51].
14 |
15 | Read on for more details.
16 |
17 |
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 [in `#scala-js` on Discord](https://discord.com/invite/scala) 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 **minor** release:
32 |
33 | * It is backward binary compatible with all earlier versions in the 1.x series: libraries compiled with 1.0.x through 1.14.x can be used with 1.15.0 without change.
34 | * Despite being a minor release, 1.15.0 is forward binary compatible with 1.13.x or later. It is *not* forward binary compatible with 1.12.x. Libraries compiled with 1.15.0 can be used with 1.13.x or later but not with 1.12.x or earlier.
35 | * It is *not* entirely backward source compatible: it is not guaranteed that a codebase will compile *as is* when upgrading from 1.13.x (in particular in the presence of `-Xfatal-warnings`).
36 |
37 | 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.
38 |
39 | ## Improvements
40 |
41 | * Add `java.io.FilterReader` to the javalib (thanks to @ekrich).
42 | * Reduce memory usage of the linker with more static string allocation.
43 | * Split the scalalib into a separate artifact (for [SIP 51][SIP-51]).
44 |
45 | [SIP-51]: https://docs.scala-lang.org/sips/drop-stdlib-forwards-bin-compat.html
46 |
--------------------------------------------------------------------------------
/_posts/news/2025-01-23-announcing-scalajs-1.18.2.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: post
3 | title: Announcing Scala.js 1.18.2
4 | category: news
5 | tags: [releases]
6 | permalink: /news/2025/01/23/announcing-scalajs-1.18.2/
7 | ---
8 |
9 |
10 | We are pleased to announce the release of Scala.js 1.18.2!
11 |
12 | This is mostly a hotfix release for a binary incompatibility present in 1.18.0 and 1.18.1 and affecting some libraries built with Scala.js < 1.11.
13 | It also upgrades the Scala standard library to versions 2.12.20 and 2.13.16.
14 |
15 | Note: Artifacts published with 1.18.0 and 1.18.1 are *not* polluted.
16 | Using these versions is not dangerous for the ecosystem.
17 | The binary compatibility issues that were fixed in 1.18.1 and 1.18.2 are only problematic if you run into them while upgrading.
18 | If you have already successfully published libraries built with these versions, there is no need to panic and republish them with 1.18.2.
19 |
20 | Read on for more details.
21 |
22 |
23 |
24 | ## Getting started
25 |
26 | If you are new to Scala.js, head over to [the tutorial]({{ BASE_PATH }}/tutorial/).
27 |
28 | If you need help with anything related to Scala.js, you may find our community [in `#scala-js` on Discord](https://discord.com/invite/scala) and [on Stack Overflow](https://stackoverflow.com/questions/tagged/scala.js).
29 |
30 | Bug reports can be filed [on GitHub](https://github.com/scala-js/scala-js/issues).
31 |
32 | ## Release notes
33 |
34 | 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.
35 |
36 | This is a **patch** release:
37 |
38 | * It is backward binary compatible with all earlier versions in the 1.x series: libraries compiled with 1.0.x through 1.18.1 can be used with 1.18.2 without change.
39 | * It is forward binary compatible with 1.18.0 and 1.18.1: libraries compiled with 1.18.2 can be used with previous 1.18.x versions without change.
40 | * It is backward source compatible with 1.18.0 and 1.18.1: source code that used to compile with previous 1.18.x versions should compile as is when upgrading to 1.18.2.
41 |
42 | In addition, like Scala.js 1.18.0 and 1.18.1:
43 |
44 | * It is *not* forward binary compatible with 1.17.x: libraries compiled with 1.18.2 cannot be used with 1.17.x or earlier.
45 | * It is *not* entirely backward source compatible with 1.17.x: it is not guaranteed that a codebase will compile *as is* when upgrading from 1.17.x or earlier (in particular in the presence of `-Xfatal-warnings`).
46 |
47 | 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.
48 |
49 | ## Enhancements
50 |
51 | ### Optimize `js.Dynamic.literal()` in Scala 2.13
52 |
53 | As described in [#5017](https://github.com/scala-js/scala-js/issues/5017), `js.Dynamic.literal(...)` produced good code when compiled with Scala 2.12, but not with Scala 2.13 or Scala 3.
54 | Scala.js 1.18.2 solves the issue for Scala 2.13.
55 | The issue remains for code compiled by Scala 3, at the moment.
56 |
57 | ## Bug fixes
58 |
59 | The following bugs were fixed in 1.18.2:
60 |
61 | * [#5115](https://github.com/scala-js/scala-js/issues/5115) fullLinkJS: Missing StoreModule right after the super constructor call
62 | * [#5112](https://github.com/scala-js/scala-js/issues/5112) "Found unknown label apply" crash during compilation with Scala 2.13.16
63 |
64 | You can find the full list [on GitHub](https://github.com/scala-js/scala-js/issues?q=is%3Aissue+milestone%3Av1.18.2+is%3Aclosed).
65 |
--------------------------------------------------------------------------------
/_site/.gitkeep:
--------------------------------------------------------------------------------
1 | This directory is required for the docker volume hackery (see Dockerfile) to work.
2 |
3 | https://stackoverflow.com/questions/37883895/can-i-have-a-writable-docker-volume-mounted-under-a-read-only-volume
4 |
--------------------------------------------------------------------------------
/assets/badges/scalajs-0.6.0.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/badges/scalajs-0.6.1.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/badges/scalajs-0.6.13.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/badges/scalajs-0.6.14.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/badges/scalajs-0.6.15.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/badges/scalajs-0.6.17.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/badges/scalajs-0.6.2.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/badges/scalajs-0.6.29.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/assets/badges/scalajs-0.6.3.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/badges/scalajs-0.6.4.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/badges/scalajs-0.6.5.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/badges/scalajs-0.6.6.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/badges/scalajs-0.6.8.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/badges/scalajs-1.0.0-M1.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/badges/scalajs-1.0.0-M2.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/badges/scalajs-1.0.0-M3.svg:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/assets/badges/scalajs-1.0.0-M5.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/assets/badges/scalajs-1.0.0-M6.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/assets/badges/scalajs-1.0.0-M7.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/assets/badges/scalajs-1.0.0-M8.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/assets/badges/scalajs-1.0.0-RC1.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/assets/badges/scalajs-1.0.0-RC2.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/assets/badges/scalajs-1.0.0.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/assets/badges/scalajs-1.1.0.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/assets/badges/scalajs-1.11.0.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/assets/badges/scalajs-1.12.0.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/assets/badges/scalajs-1.13.0.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/assets/badges/scalajs-1.16.0.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/assets/badges/scalajs-1.17.0.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/assets/badges/scalajs-1.18.0.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/assets/badges/scalajs-1.19.0.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/assets/badges/scalajs-1.2.0.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/assets/badges/scalajs-1.3.0.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/assets/badges/scalajs-1.4.0.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/assets/badges/scalajs-1.5.0.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/assets/badges/scalajs-1.6.0.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/assets/badges/scalajs-1.7.0.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/assets/badges/scalajs-1.8.0.svg:
--------------------------------------------------------------------------------
1 |
2 |
--------------------------------------------------------------------------------
/assets/fonts/FontAwesome.otf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/scala-js/scala-js-website/ff128506c20a1790fc77e34d09176f7f8c44c115/assets/fonts/FontAwesome.otf
--------------------------------------------------------------------------------
/assets/fonts/Lato-Black.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/scala-js/scala-js-website/ff128506c20a1790fc77e34d09176f7f8c44c115/assets/fonts/Lato-Black.ttf
--------------------------------------------------------------------------------
/assets/fonts/Lato-Black.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/scala-js/scala-js-website/ff128506c20a1790fc77e34d09176f7f8c44c115/assets/fonts/Lato-Black.woff
--------------------------------------------------------------------------------
/assets/fonts/Lato-Black.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/scala-js/scala-js-website/ff128506c20a1790fc77e34d09176f7f8c44c115/assets/fonts/Lato-Black.woff2
--------------------------------------------------------------------------------
/assets/fonts/Lato.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/scala-js/scala-js-website/ff128506c20a1790fc77e34d09176f7f8c44c115/assets/fonts/Lato.ttf
--------------------------------------------------------------------------------
/assets/fonts/Lato.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/scala-js/scala-js-website/ff128506c20a1790fc77e34d09176f7f8c44c115/assets/fonts/Lato.woff
--------------------------------------------------------------------------------
/assets/fonts/Lato.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/scala-js/scala-js-website/ff128506c20a1790fc77e34d09176f7f8c44c115/assets/fonts/Lato.woff2
--------------------------------------------------------------------------------
/assets/fonts/LatoExt-Black.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/scala-js/scala-js-website/ff128506c20a1790fc77e34d09176f7f8c44c115/assets/fonts/LatoExt-Black.woff2
--------------------------------------------------------------------------------
/assets/fonts/LatoExt.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/scala-js/scala-js-website/ff128506c20a1790fc77e34d09176f7f8c44c115/assets/fonts/LatoExt.woff2
--------------------------------------------------------------------------------
/assets/fonts/Raleway-Bold.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/scala-js/scala-js-website/ff128506c20a1790fc77e34d09176f7f8c44c115/assets/fonts/Raleway-Bold.ttf
--------------------------------------------------------------------------------
/assets/fonts/Raleway-Bold.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/scala-js/scala-js-website/ff128506c20a1790fc77e34d09176f7f8c44c115/assets/fonts/Raleway-Bold.woff
--------------------------------------------------------------------------------
/assets/fonts/Raleway-Bold.woff2:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/scala-js/scala-js-website/ff128506c20a1790fc77e34d09176f7f8c44c115/assets/fonts/Raleway-Bold.woff2
--------------------------------------------------------------------------------
/assets/fonts/Raleway.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/scala-js/scala-js-website/ff128506c20a1790fc77e34d09176f7f8c44c115/assets/fonts/Raleway.ttf
--------------------------------------------------------------------------------
/assets/fonts/fontawesome-webfont.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/scala-js/scala-js-website/ff128506c20a1790fc77e34d09176f7f8c44c115/assets/fonts/fontawesome-webfont.eot
--------------------------------------------------------------------------------
/assets/fonts/fontawesome-webfont.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/scala-js/scala-js-website/ff128506c20a1790fc77e34d09176f7f8c44c115/assets/fonts/fontawesome-webfont.ttf
--------------------------------------------------------------------------------
/assets/fonts/fontawesome-webfont.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/scala-js/scala-js-website/ff128506c20a1790fc77e34d09176f7f8c44c115/assets/fonts/fontawesome-webfont.woff
--------------------------------------------------------------------------------
/assets/fonts/glyphicons-halflings-regular.eot:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/scala-js/scala-js-website/ff128506c20a1790fc77e34d09176f7f8c44c115/assets/fonts/glyphicons-halflings-regular.eot
--------------------------------------------------------------------------------
/assets/fonts/glyphicons-halflings-regular.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/scala-js/scala-js-website/ff128506c20a1790fc77e34d09176f7f8c44c115/assets/fonts/glyphicons-halflings-regular.ttf
--------------------------------------------------------------------------------
/assets/fonts/glyphicons-halflings-regular.woff:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/scala-js/scala-js-website/ff128506c20a1790fc77e34d09176f7f8c44c115/assets/fonts/glyphicons-halflings-regular.woff
--------------------------------------------------------------------------------
/assets/img/HTML5_Badge.svg:
--------------------------------------------------------------------------------
1 |
8 |
--------------------------------------------------------------------------------
/assets/img/React.js_logo.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
22 |
--------------------------------------------------------------------------------
/assets/img/adopters/alvinalexander.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/scala-js/scala-js-website/ff128506c20a1790fc77e34d09176f7f8c44c115/assets/img/adopters/alvinalexander.png
--------------------------------------------------------------------------------
/assets/img/adopters/atalaprism.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/scala-js/scala-js-website/ff128506c20a1790fc77e34d09176f7f8c44c115/assets/img/adopters/atalaprism.png
--------------------------------------------------------------------------------
/assets/img/adopters/carrot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/scala-js/scala-js-website/ff128506c20a1790fc77e34d09176f7f8c44c115/assets/img/adopters/carrot.png
--------------------------------------------------------------------------------
/assets/img/adopters/cloudfarms.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/scala-js/scala-js-website/ff128506c20a1790fc77e34d09176f7f8c44c115/assets/img/adopters/cloudfarms.png
--------------------------------------------------------------------------------
/assets/img/adopters/ergo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/scala-js/scala-js-website/ff128506c20a1790fc77e34d09176f7f8c44c115/assets/img/adopters/ergo.png
--------------------------------------------------------------------------------
/assets/img/adopters/evolution.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/scala-js/scala-js-website/ff128506c20a1790fc77e34d09176f7f8c44c115/assets/img/adopters/evolution.png
--------------------------------------------------------------------------------
/assets/img/adopters/goodcover.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/scala-js/scala-js-website/ff128506c20a1790fc77e34d09176f7f8c44c115/assets/img/adopters/goodcover.png
--------------------------------------------------------------------------------
/assets/img/adopters/heartai.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/scala-js/scala-js-website/ff128506c20a1790fc77e34d09176f7f8c44c115/assets/img/adopters/heartai.png
--------------------------------------------------------------------------------
/assets/img/adopters/hivemindtechnologies.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/scala-js/scala-js-website/ff128506c20a1790fc77e34d09176f7f8c44c115/assets/img/adopters/hivemindtechnologies.png
--------------------------------------------------------------------------------
/assets/img/adopters/itvx.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/scala-js/scala-js-website/ff128506c20a1790fc77e34d09176f7f8c44c115/assets/img/adopters/itvx.png
--------------------------------------------------------------------------------
/assets/img/adopters/kidslog.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/scala-js/scala-js-website/ff128506c20a1790fc77e34d09176f7f8c44c115/assets/img/adopters/kidslog.png
--------------------------------------------------------------------------------
/assets/img/adopters/learnraga.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/scala-js/scala-js-website/ff128506c20a1790fc77e34d09176f7f8c44c115/assets/img/adopters/learnraga.png
--------------------------------------------------------------------------------
/assets/img/adopters/linguaforce.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/scala-js/scala-js-website/ff128506c20a1790fc77e34d09176f7f8c44c115/assets/img/adopters/linguaforce.png
--------------------------------------------------------------------------------
/assets/img/adopters/mibexsoftware.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/scala-js/scala-js-website/ff128506c20a1790fc77e34d09176f7f8c44c115/assets/img/adopters/mibexsoftware.png
--------------------------------------------------------------------------------
/assets/img/adopters/n-side.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/scala-js/scala-js-website/ff128506c20a1790fc77e34d09176f7f8c44c115/assets/img/adopters/n-side.png
--------------------------------------------------------------------------------
/assets/img/adopters/orbeon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/scala-js/scala-js-website/ff128506c20a1790fc77e34d09176f7f8c44c115/assets/img/adopters/orbeon.png
--------------------------------------------------------------------------------
/assets/img/adopters/priceloop.svg:
--------------------------------------------------------------------------------
1 |
5 |
--------------------------------------------------------------------------------
/assets/img/adopters/radiantfleet.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/scala-js/scala-js-website/ff128506c20a1790fc77e34d09176f7f8c44c115/assets/img/adopters/radiantfleet.png
--------------------------------------------------------------------------------
/assets/img/adopters/scalamandra.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/scala-js/scala-js-website/ff128506c20a1790fc77e34d09176f7f8c44c115/assets/img/adopters/scalamandra.png
--------------------------------------------------------------------------------
/assets/img/adopters/td.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/scala-js/scala-js-website/ff128506c20a1790fc77e34d09176f7f8c44c115/assets/img/adopters/td.png
--------------------------------------------------------------------------------
/assets/img/adopters/tiekinetix.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/scala-js/scala-js-website/ff128506c20a1790fc77e34d09176f7f8c44c115/assets/img/adopters/tiekinetix.png
--------------------------------------------------------------------------------
/assets/img/adopters/topos.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/scala-js/scala-js-website/ff128506c20a1790fc77e34d09176f7f8c44c115/assets/img/adopters/topos.png
--------------------------------------------------------------------------------
/assets/img/adopters/wiringbits.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/scala-js/scala-js-website/ff128506c20a1790fc77e34d09176f7f8c44c115/assets/img/adopters/wiringbits.png
--------------------------------------------------------------------------------
/assets/img/angular-logo.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
17 |
--------------------------------------------------------------------------------
/assets/img/clippy.svg:
--------------------------------------------------------------------------------
1 |
4 |
--------------------------------------------------------------------------------
/assets/img/css3.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
20 |
--------------------------------------------------------------------------------
/assets/img/github-logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/scala-js/scala-js-website/ff128506c20a1790fc77e34d09176f7f8c44c115/assets/img/github-logo.png
--------------------------------------------------------------------------------
/assets/img/ide-screenshot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/scala-js/scala-js-website/ff128506c20a1790fc77e34d09176f7f8c44c115/assets/img/ide-screenshot.png
--------------------------------------------------------------------------------
/assets/img/ide-screenshot.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/scala-js/scala-js-website/ff128506c20a1790fc77e34d09176f7f8c44c115/assets/img/ide-screenshot.psd
--------------------------------------------------------------------------------
/assets/img/ide-screenshot2.psd:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/scala-js/scala-js-website/ff128506c20a1790fc77e34d09176f7f8c44c115/assets/img/ide-screenshot2.psd
--------------------------------------------------------------------------------
/assets/img/implicitIDE.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/scala-js/scala-js-website/ff128506c20a1790fc77e34d09176f7f8c44c115/assets/img/implicitIDE.png
--------------------------------------------------------------------------------
/assets/img/js-logo-badge.svg:
--------------------------------------------------------------------------------
1 |
2 |
3 |
15 |
--------------------------------------------------------------------------------
/assets/img/scala-js-logo-128.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/scala-js/scala-js-website/ff128506c20a1790fc77e34d09176f7f8c44c115/assets/img/scala-js-logo-128.png
--------------------------------------------------------------------------------
/assets/img/scala-js-logo-256.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/scala-js/scala-js-website/ff128506c20a1790fc77e34d09176f7f8c44c115/assets/img/scala-js-logo-256.png
--------------------------------------------------------------------------------
/assets/img/scala-js-logo-32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/scala-js/scala-js-website/ff128506c20a1790fc77e34d09176f7f8c44c115/assets/img/scala-js-logo-32.png
--------------------------------------------------------------------------------
/assets/img/scala-js-logo-48.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/scala-js/scala-js-website/ff128506c20a1790fc77e34d09176f7f8c44c115/assets/img/scala-js-logo-48.png
--------------------------------------------------------------------------------
/assets/img/scala-js-logo.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/scala-js/scala-js-website/ff128506c20a1790fc77e34d09176f7f8c44c115/assets/img/scala-js-logo.ico
--------------------------------------------------------------------------------
/assets/img/scala-js-site-logo.ai:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/scala-js/scala-js-website/ff128506c20a1790fc77e34d09176f7f8c44c115/assets/img/scala-js-site-logo.ai
--------------------------------------------------------------------------------
/assets/img/supporters/yourkit.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/scala-js/scala-js-website/ff128506c20a1790fc77e34d09176f7f8c44c115/assets/img/supporters/yourkit.png
--------------------------------------------------------------------------------
/assets/img/twitter-logo-white.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/scala-js/scala-js-website/ff128506c20a1790fc77e34d09176f7f8c44c115/assets/img/twitter-logo-white.png
--------------------------------------------------------------------------------
/assets/img/web-logos.ai:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/scala-js/scala-js-website/ff128506c20a1790fc77e34d09176f7f8c44c115/assets/img/web-logos.ai
--------------------------------------------------------------------------------
/assets/img/web-logos.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/scala-js/scala-js-website/ff128506c20a1790fc77e34d09176f7f8c44c115/assets/img/web-logos.png
--------------------------------------------------------------------------------
/atom.xml:
--------------------------------------------------------------------------------
1 | ---
2 | title : Atom Feed
3 | ---
4 |
5 |
6 |
7 | {{ site.title }}
8 |
9 |
10 | {{ site.time | date_to_xmlschema }}
11 | {{ site.production_url }}
12 |
13 | {{ site.author.name }}
14 | {{ site.author.email }}
15 |
16 |
17 | {% for post in site.posts %}
18 |
19 | {{ post.title }}
20 |
21 | {{ post.date | date_to_xmlschema }}
22 | {{ site.production_url }}{{ post.id }}
23 | {{ post.content | xml_escape }}
24 |
25 | {% endfor %}
26 |
27 |
--------------------------------------------------------------------------------
/changelog.md:
--------------------------------------------------------------------------------
1 | ## Changelog
2 |
3 | Public releases are all root nodes.
4 | Incremental version bumps that were not released publicly are nested where appropriate.
5 |
6 | P.S. If there is a standard (popular) changelog format, please let me know.
7 |
8 | - **0.3.0 : 2013.02.24**
9 | - **Features**
10 | - Update twitter bootstrap to 2.2.2. Add responsiveness and update design a bit.
11 | - @techotaku fixes custom tagline support (finally made it in!)
12 | - @opie4624 adds ability to set tags from the command-line.
13 | - @lax adds support for RSS feed. Adds rss and atom html links for discovery.
14 | - Small typo fixes.
15 |
16 | - **Bug Fixes**
17 | - @xuhdev fixes theme:install bug which does not overwrite theme even if saying 'yes'.
18 |
19 | - **0.2.13 : 2012.03.24**
20 | - **Features**
21 | - 0.2.13 : @mjpieters Updates pages_list helper to only show pages having a title.
22 | - 0.2.12 : @sway recommends showing page tagline only if tagline is set.
23 | - 0.2.11 : @LukasKnuth adds 'description' meta-data field to post/page scaffold.
24 |
25 | - **Bug Fixes**
26 | - 0.2.10 : @koriroys fixes typo in atom feed
27 |
28 | - **0.2.9 : 2012.03.01**
29 | - **Bug Fixes**
30 | - 0.2.9 : @alishutc Fixes the error on post creation if date was not specified.
31 |
32 | - **0.2.8 : 2012.03.01**
33 | - **Features**
34 | - 0.2.8 : @metalelf0 Added option to specify a custom date when creating post.
35 | - 0.2.7 : @daz Updates twitter theme framework to use 2.x while still maintaining core layout. #50
36 | @philips and @treggats add support for page.tagline metadata. #31 & #48
37 | - 0.2.6 : @koomar Adds Mixpanel analytics provider. #49
38 | - 0.2.5 : @nolith Adds ability to load custom rake scripts. #33
39 | - 0.2.4 : @tommyblue Updated disqus comments provider to be compatible with posts imported from Wordpress. #47
40 |
41 | - **Bug Fixes**
42 | - 0.2.3 : @3martini Adds Windows MSYS Support and error checks for git system calls. #40
43 | - 0.2.2 : @sstar Resolved an issue preventing disabling comments for individual pages #44
44 | - 0.2.1 : Resolve incorrect HOME\_PATH/BASE\_PATH settings
45 |
46 | - **0.2.0 : 2012.02.01**
47 | Features
48 | - Add Theme Packages v 0.1.0
49 | All themes should be tracked and maintained outside of JB core.
50 | Themes get "installed" via the Theme Installer.
51 | Theme Packages versioning is done separately from JB core with
52 | the main intent being to make sure theme versions are compatible with the given installer.
53 |
54 | - 0.1.2 : @jamesFleeting adds facebook comments support
55 | - 0.1.1 : @SegFaultAX adds tagline as site-wide configuration
56 |
57 | - **0.1.0 : 2012.01.24**
58 | First major versioned release.
59 | Features
60 | - Standardize Public API
61 | - Use name-spacing and modulation where possible.
62 | - Ability to override public methods with custom code.
63 | - Publish the theme API.
64 | - Ship with comments, analytics integration.
65 |
66 | - **0.0.1 : 2011.12.30**
67 | First public release, lots of updates =p
68 | Thank you everybody for dealing with the fast changes and helping
69 | me work out the API to a manageable state.
70 |
71 |
--------------------------------------------------------------------------------
/community/halloffame.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: community
3 | title: Hall of Fame
4 | ---
5 |
6 | The Hall of Fame highlights occasions where the Scala.js project has contributed to other, larger projects.
7 |
8 | ### Node.js/V8: Integer Arithmetic Bug
9 |
10 | Prior to Node.js 0.10.29, comparing `Int.MaxValue` with `Int.MinValue` could yield a wrong result.
11 | Notably:
12 |
13 | {% highlight javascript %}
14 | $ node
15 | > 2147483647 > -2147483648
16 | false
17 | {% endhighlight %}
18 |
19 | This [Node.js bug](https://github.com/nodejs/node-v0.x-archive/issues/7528) was discovered by a [test](https://github.com/scala/scala/blob/v2.11.7/test/files/run/range-unit.scala) in Scala's partest suite that we run for Scala.js.
20 |
21 | ### Google Closure Compiler: Bad String Constant Folding
22 |
23 | The Google Closure Compiler (GCC) applied a wrong algorithm to convert number literals to strings during constant folding:
24 | Instead of a conversion conforming to the ECMAScript standard, GCC used Java's implementation of `toString`.
25 | For example, GCC constant folded the following code:
26 |
27 | {% highlight javascript %}
28 | alert('A number: ' + 1.2323919403474454e+21);
29 | {% endhighlight %}
30 |
31 | into:
32 |
33 | {% highlight javascript %}
34 | alert("A number: 1.2323919403474454E21");
35 | {% endhighlight %}
36 |
37 | Whereas the following would be correct:
38 |
39 | {% highlight javascript %}
40 | alert("A number: 1.2323919403474454e+21");
41 | {% endhighlight %}
42 |
43 | This [GCC bug](https://github.com/google/closure-compiler/issues/1262) was discovered while making [improvements](https://github.com/scala-js/scala-js/pull/2007) to Scala.js' constant folder.
44 |
45 | ### React: Dependency on Inheritance of Static Members
46 |
47 | In the initial plans for React 0.14, React checked for the static flag `isReactClass` on classes extending `React.Component`.
48 | In ECMAScript 6, such static members are inherited by subclasses:
49 |
50 | {% highlight javascript %}
51 | class Foo {}
52 | Foo.x = 5;
53 | class Bar extends Foo{}
54 | Bar.x // -> 5
55 | {% endhighlight %}
56 |
57 | While this behavior is specified in ECMAScript 6, there is no reliable way to reproduce it in pure ECMAScript 5.
58 | This would have essentially meant that React would not work on some fully ECMAScript 5 compliant platforms, a notable example being Internet Explorer 10 and earlier.
59 |
60 | After the discussion on the [Scala.js bug](https://github.com/scala-js/scala-js/issues/1900), the React team changed the design and is now using a [non-static method now](https://github.com/facebook/react/commit/83644185f4388834c0c482c7522a5f2f476d84a2).
61 |
--------------------------------------------------------------------------------
/community/presentations.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: community
3 | title: Presentation and videos
4 | ---
5 |
6 | ### Featured presentations
7 |
8 | * [Hands-on Scala.js](http://vimeo.com/111978847) at Pacific North-West Scala 2014, by Li Haoyi
9 | * [Cross-Platform Development in Scala.js](https://www.youtube.com/watch?v=Ksoi6AG9nbA) at Scala by
10 | the Bay 2014, by Li Haoyi
11 | * [Stockholm Syndrome Escape Velocity](https://www.youtube.com/watch?v=kLZr87CGY-U) at Functional Scala 2022, by Kit Langton
12 | * [A Practical Skeleton for Your Next Scala/Scala.js Web Application](https://www.youtube.com/watch?v=lrG5sYiJ5-I) at ScalaCon 2022, by Alexis Hernandez
13 | * [Scala.js As A Simple Entry Point To Get People Into Scala](https://www.youtube.com/watch?v=9ePQwMA_g_w) at Functional Scala 2022, by Alexis Hernandez
14 |
15 | ### For JavaScript developers
16 |
17 | * [Scala.js: Next generation front end development in Scala](https://www.youtube.com/watch?v=n1GgVWOThhY)
18 | at HelsinkiJS, Nov 2015, by Otto Chrons
19 | * [Scala.js: Safety and Sanity in the Wild West of Web Development](http://www.infoq.com/presentations/scalajs)
20 | at Philly ETE, Aug 2015, by Li Haoyi
21 |
22 | ### Scala.js user stories
23 |
24 | * [Scala from B to F - (B)ackend developer on (F)rontend](https://youtu.be/9aILJI_cLgo) at Scalar Conference 2023, by Filip Michalski
25 | * [Towards Browser and Server Utopia with Scala.JS: an example using CRDTs](https://www.parleys.com/tutorial/towards-browser-server-utopia-scala-js-example-using-crdts)
26 | at Scala Days Amsterdam 2015, by Richard Dallaway
27 | * [React to Scala-JS](https://www.youtube.com/watch?v=t7dJ1Dxc6mQ) at Voxxed Days Belgrade 2015, by
28 | Maciek Próchniak
29 | * [Full stack Scala](https://www.youtube.com/watch?v=zZUE8_usGAg) at Scala by the Bay 2015, by
30 | Ramnivas Laddad
31 | * [Scala.js: Confessions of a Backend Engineer](https://www.youtube.com/watch?v=PQuDD_EHM9I) at Scala
32 | by the Bay 2015, by Julie Pitt
33 | * [Convince Your Manager to Adopt Scala.js in Production](https://www.youtube.com/watch?v=RgSACo4PMQg) at Scala by the
34 | Bay 2015, by Katrin Shechtman and Dave Sugden
35 | * [Scala: Power and Versatility](https://www.youtube.com/watch?v=aMjyhjJ-pJc) at Scala by the Bay
36 | 2015, by Shadaj Laddad
37 | * [Bootstrapping the Scala.js Ecosystem](https://vimeo.com/113967983) at Scala eXchange 2014, by Li Haoyi
38 |
39 | ### Live coding presentations
40 |
41 | * [Why (you might like) Scala.js](https://vimeo.com/122611959) at Scaladays, March 2015, by Li Haoyi
42 | * [Live Coding ScalaJS](https://vimeo.com/87845442) at SF Scala, Feb 2014, by Li Haoyi
43 |
44 | ### In other languages
45 |
46 | * [Scala.js](https://www.youtube.com/watch?v=_ZqeoasCql0) at Warsaw Scala Fortyfives 2015, by
47 | Waldemar Wosiński (in Polish)
48 | * [Создание вебпроекта на основе семантического веба и Scala/Scalajs](https://www.youtube.com/watch?v=WekavZT1qE4), at
49 | WebCamp 2015, by Anton Kulaga (in Russian)
50 | * [Scala.js はじめました?](https://www.youtube.com/watch?v=btYBuUcQweM)
51 | ([slides](http://www.slideshare.net/kinzal/scalajs-50513842)), by @k_kinzal (in Japanese)
52 | * [Vorstellung Scala.js](https://www.youtube.com/watch?v=MC1clhppcnw), by Paul Horn (in German)
53 |
54 | ### Scala.js internals
55 |
56 | * [Semantics](https://www.parleys.com/tutorial/scala-js-semantics-how-support-performance-javascript-interop)
57 | at ScalaDays 2015 Amsterdam by Sébastien Doeraene
58 | * [Compilation Pipeline](https://www.youtube.com/watch?v=nRswfBJL0dQ) at Scala By the Bay 2015 by
59 | Tobias Schlatter
60 | * [Optimizations](https://www.youtube.com/watch?v=IvB1APFZK5Q) at VM Meetup 2015 by Sébastien Doeraene
61 |
--------------------------------------------------------------------------------
/doc/api.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: doc
3 | title: Scala.js API
4 | ---
5 |
6 | ## Scala.js
7 |
8 | ### Latest version ({{ site.versions.scalaJS }})
9 |
10 | * [scalajs-library]({{ site.production_url }}/api/scalajs-library/latest/scala/scalajs/js/index.html)
11 | * [scalajs-test-interface]({{ site.production_url }}/api/scalajs-test-interface/latest/)
12 | * [scalajs-javalib-intf]({{ site.production_url }}/api/scalajs-javalib-intf/latest/)
13 | * [scalajs-ir]({{ site.production_url }}/api/scalajs-ir/latest/org/scalajs/ir/index.html)
14 | * [scalajs-linker-interface]({{ site.production_url }}/api/scalajs-linker-interface/latest/org/scalajs/linker/interface/index.html) ([Scala.js version]({{ site.production_url }}/api/scalajs-linker-interface-js/latest/org/scalajs/linker/interface/index.html))
15 | * [scalajs-linker]({{ site.production_url }}/api/scalajs-linker/latest/org/scalajs/linker/index.html) ([Scala.js version]({{ site.production_url }}/api/scalajs-linker-js/latest/org/scalajs/linker/index.html))
16 | * [scalajs-test-adapter]({{ site.production_url }}/api/scalajs-sbt-test-adapter/latest/org/scalajs/testing/adapter/index.html)
17 | * [sbt-scalajs]({{ site.production_url }}/api/sbt-scalajs/latest/#org.scalajs.sbtplugin.package)
18 |
19 | ### Previous versions
20 |
21 | [See APIs for previous versions of Scala.js](all-api.html)
22 |
--------------------------------------------------------------------------------
/doc/hello-world.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: doc
3 | title: Quick Start
4 | ---
5 |
6 | This Quick Start will help you set up your system for developing with Scala.js and guide you through your
7 | first Scala.js application.
8 |
9 | # Installation
10 |
11 | All you need to get started is
12 |
13 | * recent version of Java JDK [(download)](http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html)
14 | * Typesafe Activator(*) [(download)](https://www.typesafe.com/activator/download)
15 |
16 | Once you have extracted Activator into a suitable folder, add the folder to your `PATH` to access it from the command line.
17 |
18 | For editing Scala.js projects you'll probably want to install one of the IDEs that support Scala.js, but you can do this
19 | also later. IDE is not required for compiling/running any of the tutorial projects.
20 |
21 | * [Scala IDE](http://scala-ide.org/) (the official IDE for Scala, based on Eclipse)
22 | * [IntelliJ IDEA](https://www.jetbrains.com/idea/download/) (a famous Java IDE with good support for Scala via a plugin)
23 |
24 | (*) if you already have SBT installed, you can use that instead of Activator, but then you'll need to download examples
25 | and tutorial projects manually.
26 |
27 | # Hello World in Scala.js
28 |
29 | Go to your command line shell and switch to the directory where you keep your development projects. Run `activator`
30 | (which should be on your `PATH` now) with the following command line to create a new Scala.js project from a template.
31 |
32 | {% highlight bash %}
33 | activator new hello-scalajs scalajs_hello_world
34 | {% endhighlight %}
35 |
36 | Change into the project directory and run the application.
37 |
38 | {% highlight bash %}
39 | cd hello_scalajs
40 | activator run
41 | {% endhighlight %}
42 |
43 | Note that this will take a while on the first time as `activator` downloads all required packages including the Scala
44 | compiler. The next time you run the application, it will start *much* faster!
45 |
46 | Once all packages have been download and the project compiled, you can navigate in your browser to
47 | to access the application. You should now see a welcome screen in your browser
48 |
49 | [ screenshot ]
50 |
51 | ## Making edits
52 |
53 | While the application is running, you can edit the source code and it will be automatically recompiled and refreshed in
54 | your browser.
55 |
56 | # What next?
57 |
58 | Check one of the [tutorials](../tutorial) to continue your journey!
59 |
--------------------------------------------------------------------------------
/doc/index.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: doc
3 | title: Documentation
4 | ---
5 |
6 | # Getting Started
7 |
8 | Follow our [Getting Started Tutorials](tutorial/).
9 |
10 | # Installation / Download
11 |
12 | To install Scala and Node.js, follow the [Prerequisites](tutorial/#prerequisites) section of the Getting Started Tutorials.
13 |
14 | Scala.js itself is managed by your Scala build tool of choice.
15 | You can follow [the Getting Started instructions](tutorial/scalajs-vite.html#introducing-scalajs) to enable it.
16 |
17 | # Other resources
18 |
19 | * [Presentation videos](../community/presentations.html)
20 | * [Tour of Scala.js for JavaScript developers](sjs-for-js/)
21 | * More in the column on the right of this page
22 |
23 | # Get help
24 |
25 | If you don't find what you're looking for, contact
26 | [the community](../community/) and ask for help.
27 |
--------------------------------------------------------------------------------
/doc/internals/index.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: doc
3 | title: Scala.js internals
4 | ---
5 |
6 | Internal stuff about Scala.js.
7 |
8 | * [Performance](./performance.html)
9 | * [Standalone distribution](./downloads.html)
10 | * [Version history](./version-history.html)
--------------------------------------------------------------------------------
/doc/internals/scalajs-0.6.x-eol.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: doc
3 | title: Scala.js 0.6.x End of Life
4 | ---
5 |
6 | The Scala.js 0.6.x series have been officially discontinued in June 2020, after [an RFC](https://github.com/scala-js/scala-js/issues/4045).
7 | The last release in the 0.6.x series is Scala.js 0.6.33.
8 |
9 | Scala.js 0.6.x being EOL means that:
10 |
11 | * The [0.6.x git branch](https://github.com/scala-js/scala-js/tree/0.6.x) is frozen.
12 | * Pull requests targeting the 0.6.x branch will be rejected.
13 | * Issues that can only be reproduced with Scala.js 0.6.x will be closed.
14 | * As long as Scala.js 0.6.33 works with newer versions of Scala 2.12.x and 2.13.x out of the box, we will publish its compiler plugins for those versions of Scala.
15 | Once they stop working out of the box, support for newer versions of Scala will be dropped.
16 |
17 | Please upgrade to Scala.js 1.x as soon as possible.
18 | See [the release notes of Scala.js 1.0.0]({{ BASE_PATH }}/news/2020/02/25/announcing-scalajs-1.0.0/) for important migration information.
19 |
20 | There are no plans to offer paid support for Scala.js 0.6.x.
21 |
22 | The last version of this website with 0.6.x documentation is at [9799280](https://github.com/scala-js/scala-js-website/tree/9799280483e3a21bb519e624b7fdb16e6a6af9c9).
23 |
--------------------------------------------------------------------------------
/doc/interoperability/exceptions.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: doc
3 | title: Handling Exceptions
4 | ---
5 |
6 | Both Scala and JavaScript feature exception handling, but Scala only allows
7 | instances of Throwable to be thrown/caught (which is enforced by the type
8 | checker). JavaScript can throw/catch any type of value.
9 |
10 | To reconcile the two worlds, Scala.js lifts all exceptions that are not
11 | instances of Throwable inside js.JavaScriptException. This lifting works both
12 | ways.
13 |
14 | Throwing an exception from Scala.js:
15 |
16 | * Scala.js throws an instance of `js.JavaScriptException` -> JS catches the wrapped value
17 | * Scala.js throws an instance of `Throwable` -> JS catches it as is
18 |
19 | Throwing an exception from JS:
20 |
21 | * JS throws an instance of Scala.js' `Throwable` -> Scala.js catches it as is
22 | * JS throws something else -> Scala.js catches it wrapped in a `js.JavaScriptException`
23 |
--------------------------------------------------------------------------------
/doc/interoperability/index.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: doc
3 | title: Interoperability
4 | ---
5 |
6 | A key feature of Scala.js is its interoperability with JavaScript code, which
7 | far exceeds that of many other languages targeting JavaScript. Except of course
8 | for languages that translate almost literally to JavaScript (e.g.,
9 | [TypeScript](http://www.typescriptlang.org/) and
10 | [CoffeeScript](http://coffeescript.org/)).
11 |
12 | See for yourself: on the right, Scala.js natively talks to the DOM API, and we
13 | can hardly notice the border between the two languages.
14 |
15 | {% columns %}
16 | {% column 6 ES6 %}
17 | {% highlight javascript %}
18 | var xhr = new XMLHttpRequest();
19 |
20 | xhr.open("GET",
21 | "https://api.twitter.com/1.1/search/" +
22 | "tweets.json?q=%23scalajs"
23 | );
24 | xhr.onload = (e) => {
25 | if (xhr.status === 200) {
26 | var r = JSON.parse(xhr.responseText);
27 | $("#tweets").html(parseTweets(r));
28 | }
29 | };
30 | xhr.send();
31 | {% endhighlight %}
32 | {% endcolumn %}
33 |
34 | {% column 6 Scala.js %}
35 | {% highlight scala %}
36 | val xhr = new XMLHttpRequest()
37 |
38 | xhr.open("GET",
39 | "https://api.twitter.com/1.1/search/" +
40 | "tweets.json?q=%23scalajs"
41 | )
42 | xhr.onload = { (e: Event) =>
43 | if (xhr.status == 200) {
44 | val r = JSON.parse(xhr.responseText)
45 | $("#tweets").html(parseTweets(r))
46 | }
47 | }
48 | xhr.send()
49 | {% endhighlight %}
50 | {% endcolumn %}
51 | {% endcolumns %}
52 |
53 | The following sections explain all the details:
54 |
55 | * [JavaScript types as seen from Scala.js](types.html)
56 | * [Write facade types for JavaScript APIs](facade-types.html)
57 | * [Access to the JavaScript global scope (1.x only)](global-scope.html)
58 | * [Export Scala.js APIs to JavaScript](export-to-javascript.html)
59 | * [Write JavaScript classes in Scala.js](sjs-defined-js-classes.html)
60 |
--------------------------------------------------------------------------------
/doc/planning.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: doc
3 | title: Planning
4 | ---
5 |
6 | ## TODO for MVP
7 |
8 | - hello-scalajs Activator template
9 | - hello-scalajs screenshot and link
10 | - add `latest` API mirror links
11 | - add media section, with image downloads etc
12 |
13 | ## Done
14 | - Scala.js for Scala developers, to be hidden for now
15 | - remove social media links from the template
16 | - Scala.js for JavaScript developers, intro text
17 | - libraries and skeleton index page content is missing
18 | - add "built with Scala.js" under community
19 | - add more intro text to community
20 | - front page icons for Correctness, Speed and Interoperability
21 | - Documentation landing page, more content
22 |
23 | ## Doc content/structure plan
24 |
25 | - Quick start
26 |
27 | Provide simple instructions to get started on developing with Scala.js (what to install, etc.)
28 | - Why Scala.js?
29 |
30 | Copy Hands-on "About Scala.js" almost as-is
31 | - Project setup
32 |
33 | Detailed instructions on setting up a Scala.js project
34 |
35 | - Using SBT commands
36 | - Dependencies
37 | - Cross-building
38 | - Client-server project
39 |
40 | Using Play as an example server (makes the build.sbt simple)
41 | - Eclipse and IntelliJ
42 |
43 | How to import projects into popular IDEs
44 | - Advanced features
45 |
46 | Documenting less often used SBT plugin features
47 | - Interactive web pages
48 | - HTML and DOM
49 | - Scalatags
50 | - Using Web services
51 |
52 | - Using JavaScript libraries
53 | - Using JS facades
54 | - Creating your own facades
55 | - Exposing Scala.js code to JavaScript
56 |
57 | - Using Scala libraries
58 | - Scala standard library
59 | - Third party libraries
60 | - Java libraries
61 | - Testing
62 |
63 | How to test Scala.js apps. Unit tests, DOM tests, etc.
64 |
65 | - Debugging
66 |
67 | Debugging in the browser. Source maps
68 |
69 | - Advanced
70 |
71 | Take mostly from Hands-on
72 |
73 | - Porting Scala and Java libraries to Scala.js
74 | - Publishing Scala.js libraries
75 | - JavaScript environments
76 |
--------------------------------------------------------------------------------
/doc/project/dependencies.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: doc
3 | title: Dependencies
4 | ---
5 |
6 |
7 | ## Depending on Scala.js libraries
8 |
9 | To be able to use a Scala library in Scala.js, it has to be separately compiled for Scala.js. You then can add it to your library dependencies as follows:
10 |
11 | {% highlight scala %}
12 | libraryDependencies += "org.scala-js" %%% "scalajs-dom" % "{{ site.versions.scalaJSDOM }}"
13 | {% endhighlight %}
14 |
15 | Note the `%%%` (instead of the usual `%%`) which will add the current Scala.js version to the artifact name. This allows to
16 |
17 | - Cross-publish libraries to different Scala.js versions
18 | - Disambiguate Scala.js artifacts from their JVM counterparts
19 |
20 | Some Scala.js core libraries (such as the Scala.js library itself) do not need the `%%%` since their version number *is* the Scala.js version number itself.
21 |
22 | Note that you can also use `%%%` in a Scala/JVM project, in which case it will be the same as `%%`. This allows you to use the same `libraryDependencies` settings when cross compiling Scala/JVM and Scala.js.
23 |
--------------------------------------------------------------------------------
/doc/project/index.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: doc
3 | title: Scala.js project structure
4 | ---
5 |
6 |
7 | Scala.js comes with an sbt plugin that facilitates compiling, running and testing with Scala.js. For a quick start,
8 | have a look at our [basic tutorial](../tutorial/basic/).
9 |
10 | Load the sbt plugin (`project/plugins.sbt`)
11 |
12 | {% highlight scala %}
13 | addSbtPlugin("org.scala-js" % "sbt-scalajs" % "{{ site.versions.scalaJS }}")
14 | {% endhighlight %}
15 |
16 | Enable the plugin on the sbt project (`build.sbt`):
17 |
18 | {% highlight scala %}
19 | lazy val root = project
20 | .in(file("."))
21 | .enablePlugins(ScalaJSPlugin)
22 | .settings(
23 | // for an application with a main method
24 | scalaJSUseMainModuleInitializer := true,
25 | )
26 | {% endhighlight %}
27 |
28 | If you are using a `Build.scala` definition, import the following:
29 |
30 | {% highlight scala %}
31 | import org.scalajs.sbtplugin.ScalaJSPlugin
32 | import org.scalajs.sbtplugin.ScalaJSPlugin.autoImport._
33 | {% endhighlight %}
34 |
35 | Next we'll look into the [building process](building.html) in more detail.
36 |
--------------------------------------------------------------------------------
/doc/quick-start.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: doc
3 | title: Quick Start
4 | ---
5 |
6 | This Quick Start will help you set up your system for developing with Scala.js.
7 |
8 | # Installation
9 |
10 | All you need to get started is
11 |
12 | * recent version of Java JDK [(download)](http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html)
13 | * SBT [(download)](http://www.scala-sbt.org/0.13/tutorial/Setup.html)
14 |
15 | # What next?
16 |
17 | Check out one of the [tutorials](../tutorial) to continue your journey!
18 |
--------------------------------------------------------------------------------
/doc/sjs-for-js/index.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: doc
3 | title: Scala.js for JavaScript developers
4 | ---
5 |
6 | Below you can see the same functionality implemented in JavaScript ES6 and Scala.js. See any differences?
7 |
8 | {% columns %}
9 | {% column 6 ES6 %}
10 | {% highlight javascript %}
11 | const xhr = new XMLHttpRequest();
12 |
13 | xhr.open("GET",
14 | "https://api.twitter.com/1.1/search/" +
15 | "tweets.json?q=%23scalajs"
16 | );
17 | xhr.onload = (e) => {
18 | if (xhr.status === 200) {
19 | const r = JSON.parse(xhr.responseText);
20 | $("#tweets").html(parseTweets(r));
21 | }
22 | };
23 | xhr.send();
24 | {% endhighlight %}
25 | {% endcolumn %}
26 |
27 | {% column 6 Scala.js %}
28 | {% highlight scala %}
29 | val xhr = new XMLHttpRequest()
30 |
31 | xhr.open("GET",
32 | "https://api.twitter.com/1.1/search/" +
33 | "tweets.json?q=%23scalajs"
34 | )
35 | xhr.onload = { (e: Event) =>
36 | if (xhr.status == 200) {
37 | val r = JSON.parse(xhr.responseText)
38 | $("#tweets").html(parseTweets(r))
39 | }
40 | }
41 | xhr.send()
42 | {% endhighlight %}
43 | {% endcolumn %}
44 | {% endcolumns %}
45 |
46 | Even though Scala language comes from a very different background than JavaScript, typical Scala code is quite understandable
47 | for JavaScript developers. This section will walk you through the differences and show you how to write basic Scala code. If you
48 | have fallen in love with the new features in ES6 like _arrow functions_ or _destructuring_, you can find them all in Scala as well!
49 |
50 | The walk-through has been split into three parts:
51 |
52 | - [basics](es6-to-scala-part1.html)
53 | - [collections](es6-to-scala-part2.html)
54 | - [advanced](es6-to-scala-part3.html)
55 |
56 | Each part has a lot of code examples comparing ES6 code to corresponding Scala code.
57 |
58 | You may also find some of the [presentation videos](../../community/presentations.html) a nice way to familiarize yourself with Scala.
59 |
--------------------------------------------------------------------------------
/doc/tutorial/index.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: doc
3 | title: Tutorials
4 | ---
5 |
6 | This series of tutorials teaches you how to use Scala.js together with modern development tools.
7 | They can be followed independently of each other.
8 |
9 | If you have time, reading and applying them in order will give you more in-depth knowledge about the development environment.
10 |
11 | If you are in a hurry, you can skip the ones you are not interested in.
12 | Each tutorial starts with a link to a repo that you can clone to get off the ground.
13 |
14 | In any case, make sure that you have the prerequisites listed below covered.
15 |
16 | 1. [Scala.js and Vite](./scalajs-vite.html):
17 | * Set up a hello world project ready for live reloading in the browser.
18 | * Generate minimized production assets.
19 | 2. [Laminar](./laminar.html):
20 | * Build UIs with Laminar using Functional Reactive Programming (FRP), a hybrid model between imperative and functional programming particularly well suited for UI development in Scala.
21 | 3. [ScalablyTyped](./scalablytyped.html):
22 | * Integrate JavaScript libraries using ScalablyTyped.
23 |
24 | ## Prerequisites
25 |
26 | In any case, make sure that you have the following tools installed first:
27 |
28 | * [Scala and its development tools](https://www.scala-lang.org/download/)
29 | * [Node.js](https://nodejs.org/en/download/)
30 |
31 | If in doubt, try the following commands in a terminal.
32 | They should all succeed, though the reported version numbers may differ.
33 |
34 | {% highlight shell %}
35 | $ node -v
36 | v16.13.0
37 | $ npm -v
38 | 8.1.0
39 | $ sbt -version
40 | sbt version in this project: 1.7.3
41 | sbt script version: 1.7.3
42 | {% endhighlight %}
43 |
44 | We also recommend that you use an IDE for Scala.
45 | If you do not know what to pick, we recommend [VS Code](https://code.visualstudio.com/download/) with [the Metals extension](https://scalameta.org/metals/docs/editors/vscode/).
46 |
47 | ## Older tutorials
48 |
49 | Here are some older tutorials, which may still provide value:
50 |
51 | * The old [basic tutorial](./basic/)
52 | * [Hands-on Scala.js](https://lihaoyi.github.io/hands-on-scala-js), an extensive tutorial in eBook format
53 | * [SPA tutorial](https://github.com/ochrons/scalajs-spa-tutorial) for writing a
54 | Single-Page-Application using React
55 |
56 | Additionally, take a look at the available [Project Skeletons](../../libraries/skeletons.html) to start with
57 | a pre-existing template.
58 |
--------------------------------------------------------------------------------
/docker-compose.yml:
--------------------------------------------------------------------------------
1 | version: '2'
2 |
3 | services:
4 | jekyll:
5 | build: .
6 | ports:
7 | - '127.0.0.1:4000:4000'
8 | volumes:
9 | - .:/srv/jekyll:ro
10 |
--------------------------------------------------------------------------------
/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/scala-js/scala-js-website/ff128506c20a1790fc77e34d09176f7f8c44c115/favicon.ico
--------------------------------------------------------------------------------
/libraries/facades.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: libraries
3 | title: JavaScript library facades
4 | ---
5 |
6 | ## JavaScript libraries for Scala.js
7 |
8 | These facades wrap existing JavaScript libraries, giving you type safe access to their functionality. Some of the
9 | facades may only partially expose the underlying JavaScript library functionality, so make sure to check out the
10 | details. To quickly start using one of these libraries, just click on the dependency clipboard button to get the
11 | relevant sbt dependency definition.
12 |
13 | {% include library.html lib=site.data.library.jsfacades %}
14 |
15 | [ScalablyTyped](https://github.com/oyvindberg/ScalablyTyped) have more open source Scala.js facades for some of your favorite JavaScript libraries, derived from DefinitelyTyped's TypeScript definitions.
16 |
17 | If you didn't find a facade for the library you'd like to use, it's quite easy to do one yourself. Check out the
18 | [facade documentation](../doc/interoperability/facade-types.html) and the
19 | [TypeScript conversion tool](https://github.com/sjrd/scala-js-ts-importer).
20 | You can also skip whole facade-business and just
21 | [call JavaScript APIs dynamically](../doc/interoperability/facade-types.html#calling-javascript-from-scalajs-with-dynamic-types),
22 | without type-checking, the same way you do it when programming in JavaScript itself.
23 |
24 | -------
25 |
26 | Additions and corrections to this section may be reported through
27 | [GitHub issues](https://github.com/scala-js/scala-js-website/issues). Please include Name, Url, Description and
28 | Dependency
29 |
--------------------------------------------------------------------------------
/libraries/index.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: libraries
3 | title: Libraries
4 | ---
5 |
6 | Great libraries make programming so much easier. With Scala.js you can use both Scala and JavaScript libraries in your code easily.
7 |
8 | ### [JavaScript facades](facades.html)
9 | Interact with JavaScript libraries in a safe, strongly-typed manner.
10 |
11 | ### [Scala libraries](libs.html)
12 | Libraries traditionally running on the JVM, now running on JS as well!
13 |
14 | ### [Testing](testing.html)
15 | Make sure your code starts correct and stays correct.
16 |
17 | ### [Project Skeletons](skeletons.html)
18 | Get started quickly.
19 |
20 | ### Add a Scala.js badge on your library site
21 |
22 | Show your true colors by adding a Scala.js badge on your site! Select the lowest Scala.js version your library is compatible with.
23 |
24 | If you don't find your version of Scala.js, that's probably because it is forward-compatible with its predecessor,
25 | in which case you should take the latest available version older than your version of Scala.js.
26 | For example, for Scala.js 1.9.x, use the 1.8.0+ badge.
27 |
28 | {% include badge-generator.html %}
29 |
30 | Badge images generated with shields.io
31 |
--------------------------------------------------------------------------------
/libraries/libs.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: libraries
3 | title: Scala libraries
4 | ---
5 |
6 | ## Compatible Scala libraries
7 |
8 | Many Scala libraries have been updated to be compatible with Scala.js. To quickly start using one of these libraries,
9 | just click on the dependency clipboard button to get the relevant SBT dependency definition.
10 |
11 | {% include library.html lib=site.data.library.scalalibs %}
12 |
13 | -------
14 |
15 | Additions and corrections to this section may be reported through
16 | [GitHub issues](https://github.com/scala-js/scala-js-website/issues). Please include Name, Url, Description and
17 | Dependency
18 |
--------------------------------------------------------------------------------
/libraries/skeletons.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: libraries
3 | title: Project Skeletons
4 | ---
5 |
6 | These application skeletons get you started in no time!
7 |
8 |
9 | ### [Play application with Scala.js](https://github.com/vmunier/play-with-scalajs-example)
10 |
11 | Example application showing how you can integrate [Play](https://www.playframework.com/) with Scala.js.
12 |
13 | ### [AWS Lambda with Scala.js](https://github.com/bgahagan/scalajs-lambda.g8)
14 |
15 | A skeleton to build an AWS Lambda handler using Scala.js 1.0. Uses sbt-scalajs-bundler to manage npm dependencies and sbt-native-packager to package lambda for deployment.
16 |
17 | ### [npm scalajs-starter](https://github.com/konradst/scalajs-starter)
18 |
19 | Scala.js Node.js skeleton app / library handled with ```npm start```, ```build```, ```test```, ```clean``` commands.
20 |
21 | ### [wiringbits scala-webapp-template](https://github.com/wiringbits/scala-webapp-template)
22 | Modern web app skeleton based in Play + Scala.js + React (powered by Slikny) + Material UI + Scalablytyped, including user registration, login, admin portal, and automatic deployments with Ansible.
23 |
24 |
25 | ## Scala.js 0.6.x
26 | These applications are outdated but could be useful as references if you happen to be involved in older Scala.js versions.
27 |
28 | ### [Example app with Docker and backend](https://gitlab.com/bullbytes/scala-js-example)
29 | A minimal but complete web application showing how to use Scala.js together with a server (Akka HTTP) and a database (Postgres). The app is dockerized and easy to set up.
30 |
31 | ### [workbench-example-app](https://github.com/lihaoyi/workbench-example-app)
32 | Skeleton application using [Scala.js workbench](https://github.com/lihaoyi/scala-js-workbench) for live-reloading in the
33 | browser, together with a collection of sample applications developed using it
34 |
35 | ### [Play | Scala.js | React - web application skeleton](https://github.com/Filemon279/play-scalajs-universal)
36 | It is made with Scala.js & [Play Framework](https://www.playframework.com/). Application is [dockerized](https://www.docker.com/), made with [React](https://github.com/japgolly/scalajs-react) components and has authentication system. Client - Server RPC API is based on [autowire](https://github.com/lihaoyi/autowire). This application is meant to be used as a start to create Scala.js & Play based web applications.
37 |
38 | ### [SPA tutorial with Scala.js and React](https://github.com/ochrons/scalajs-spa-tutorial)
39 | Simple Single Page Application tutorial built upon scalajs-react, Play and Bootstrap.
40 |
41 | ### [Play application with Scala.js and Workbench](https://github.com/aholland/play-scalajs-workbench-example)
42 | Example setup which, using the [Workbench plugin](https://github.com/lihaoyi/workbench), prevents any change made to client code from causing a compile error on the [Play](https://www.playframework.com/) server, which could otherwise slow down client development.
43 |
44 | ### [Scala Google Spreadsheets](https://github.com/sherpal/Scala-Google-Spreadsheets)
45 | Allows to create [Google custom functions](https://developers.google.com/apps-script/guides/sheets/functions) in [Google SpreadSheets](https://www.google.com/intl/en_UK/sheets/about/) with Scala.
46 |
47 |
48 | ## Archived
49 |
50 | These applications are not maintained anymore but could be useful as references.
51 |
52 | ### [Node.js module with Scala.js](https://github.com/rockymadden/scala-node-example)
53 |
54 | Proof of concept to determine if Scala.js could be leveraged to make a Node.js module.
55 |
56 |
57 | ### [Udash Generator](http://guide.udash.io/#/bootstrapping/generators)
58 |
59 | Project generator for the Udash framework - creates a customized, complete and runnable Udash based application.
60 |
61 |
--------------------------------------------------------------------------------
/libraries/testing.md:
--------------------------------------------------------------------------------
1 | ---
2 | layout: libraries
3 | title: Testing
4 | ---
5 |
6 | ## Testing Scala.js code
7 |
8 | Several Scala testing frameworks have been updated to be compatible with Scala.js. To quickly start using one of these
9 | libraries, just click on the dependency clipboard button to get the relevant SBT dependency definition.
10 |
11 | {% include library.html lib=site.data.library.testlibs %}
12 |
--------------------------------------------------------------------------------
/news/index.html:
--------------------------------------------------------------------------------
1 | ---
2 | layout: blog
3 | title: News
4 | ---
5 |
6 | {% for post in paginator.posts %}
7 |