├── .asset-cache └── .gitkeep ├── .github └── workflows │ ├── ci.yml │ └── deploy.yml ├── .gitignore ├── .htaccess ├── Dockerfile ├── Gemfile ├── Gemfile.lock ├── README.md ├── Rakefile ├── _assets ├── css │ ├── bootstrap.css │ ├── bundle.css │ ├── font-awesome.min.css │ ├── highlight-custom.css │ ├── highlight.css │ └── style.scss └── js │ ├── bootstrap.min.js │ ├── bundle.js │ ├── clipboard.min.js │ ├── custom.js │ ├── highcharts.js │ ├── highlight.min.js │ ├── jquery.min.js │ └── lunr.js ├── _config.yml ├── _data ├── community.yml ├── doc.yml ├── libraries.yml ├── library │ ├── jsfacades.yml │ ├── scalalibs.yml │ ├── testlibs.yml │ └── versions.yml └── testimonials.yml ├── _includes ├── badge-generator.html ├── docnav.html ├── footer.html ├── head.html ├── header.html ├── js.html ├── library.html ├── meta.html ├── nav.html ├── ogp.html ├── sidebar.html ├── testimonials.html └── wrap.html ├── _layouts ├── base.html ├── blog.html ├── community.html ├── default.html ├── doc.html ├── index.html ├── libraries.html ├── post.html └── style.css ├── _plugins ├── columns.rb ├── doclinks.rb └── tokenize.rb ├── _posts └── news │ ├── 2014-06-13-announcing-scalajs-0.5.0.md │ ├── 2014-06-30-announcing-scalajs-0.5.1.md │ ├── 2014-07-09-announcing-scalajs-0.5.2.md │ ├── 2014-07-30-announcing-scalajs-0.5.3.md │ ├── 2014-08-29-announcing-scalajs-0.5.4.md │ ├── 2014-09-18-announcing-scalajs-0.5.5.md │ ├── 2014-11-19-announcing-scalajs-0.5.6.md │ ├── 2014-12-01-announcing-scalajs-0.6.0-M1.md │ ├── 2014-12-05-announcing-scalajs-0.6.0-M2.md │ ├── 2014-12-22-announcing-scalajs-0.6.0-M3.md │ ├── 2015-01-12-announcing-scalajs-0.6.0-RC1.md │ ├── 2015-01-23-announcing-scalajs-0.6.0-RC2.md │ ├── 2015-02-05-announcing-scalajs-0.6.0.md │ ├── 2015-03-03-announcing-scalajs-0.6.1.md │ ├── 2015-03-16-announcing-scalajs-0.6.2.md │ ├── 2015-05-12-announcing-scalajs-0.6.3.md │ ├── 2015-07-03-announcing-scalajs-0.6.4.md │ ├── 2015-08-31-announcing-scalajs-0.6.5.md │ ├── 2015-11-23-new-website.md │ ├── 2016-01-25-announcing-scalajs-0.6.6.md │ ├── 2016-02-12-announcing-scalajs-0.6.7.md │ ├── 2016-03-18-announcing-scalajs-0.6.8.md │ ├── 2016-04-30-announcing-scalajs-0.6.9.md │ ├── 2016-06-17-announcing-scalajs-0.6.10.md │ ├── 2016-07-27-announcing-scalajs-0.6.11.md │ ├── 2016-09-01-announcing-scalajs-0.6.12.md │ ├── 2016-10-17-announcing-scalajs-0.6.13.md │ ├── 2016-12-21-announcing-scalajs-0.6.14.md │ ├── 2017-03-21-announcing-scalajs-0.6.15.md │ ├── 2017-04-29-announcing-scalajs-0.6.16.md │ ├── 2017-06-04-announcing-scalajs-0.6.17.md │ ├── 2017-06-28-announcing-scalajs-0.6.18.md │ ├── 2017-07-03-announcing-scalajs-1.0.0-M1.md │ ├── 2017-07-29-announcing-scalajs-0.6.19.md │ ├── 2017-09-01-announcing-scalajs-0.6.20.md │ ├── 2017-11-06-announcing-scalajs-0.6.21.md │ ├── 2017-11-29-announcing-scalajs-1.0.0-M2.md │ ├── 2018-01-24-announcing-scalajs-0.6.22.md │ ├── 2018-02-01-announcing-scalajs-1.0.0-M3.md │ ├── 2018-05-22-announcing-scalajs-0.6.23.md │ ├── 2018-06-29-announcing-scalajs-0.6.24.md │ ├── 2018-08-13-announcing-scalajs-1.0.0-M5.md │ ├── 2018-09-03-announcing-scalajs-0.6.25.md │ ├── 2018-10-24-announcing-scalajs-1.0.0-M6.md │ ├── 2018-11-29-announcing-scalajs-0.6.26.md │ ├── 2019-04-08-announcing-scalajs-0.6.27.md │ ├── 2019-04-15-announcing-scalajs-1.0.0-M7.md │ ├── 2019-05-24-announcing-scalajs-0.6.28.md │ ├── 2019-06-03-announcing-scalajs-1.0.0-M8.md │ ├── 2019-09-18-announcing-scalajs-0.6.29.md │ ├── 2019-11-21-announcing-scalajs-0.6.31.md │ ├── 2019-11-26-announcing-scalajs-1.0.0-RC1.md │ ├── 2019-12-13-announcing-scalajs-1.0.0-RC2.md │ ├── 2020-01-24-announcing-scalajs-0.6.32.md │ ├── 2020-02-25-announcing-scalajs-1.0.0.md │ ├── 2020-03-10-announcing-scalajs-1.0.1.md │ ├── 2020-05-13-announcing-scalajs-0.6.33.md │ ├── 2020-05-18-announcing-scalajs-1.1.0.md │ ├── 2020-07-02-announcing-scalajs-1.1.1.md │ ├── 2020-09-09-announcing-scalajs-1.2.0.md │ ├── 2020-10-16-announcing-scalajs-1.3.0.md │ ├── 2020-11-16-announcing-scalajs-1.3.1.md │ ├── 2021-01-12-announcing-scalajs-1.4.0.md │ ├── 2021-02-12-announcing-scalajs-1.5.0.md │ ├── 2021-04-01-announcing-scalajs-1.5.1.md │ ├── 2021-06-09-announcing-scalajs-1.6.0.md │ ├── 2021-08-04-announcing-scalajs-1.7.0.md │ ├── 2021-10-07-announcing-scalajs-1.7.1.md │ ├── 2021-12-10-announcing-scalajs-1.8.0.md │ ├── 2022-02-14-announcing-scalajs-1.9.0.md │ ├── 2022-04-04-announcing-scalajs-1.10.0.md │ ├── 2022-06-25-announcing-scalajs-1.10.1.md │ ├── 2022-09-15-announcing-scalajs-1.11.0.md │ ├── 2022-11-23-announcing-scalajs-1.12.0.md │ ├── 2023-01-26-announcing-scalajs-1.13.0.md │ ├── 2023-04-10-announcing-scalajs-1.13.1.md │ ├── 2023-06-23-announcing-scalajs-1.13.2.md │ ├── 2023-09-25-announcing-scalajs.1.14.0.md │ ├── 2023-12-29-announcing-scalajs-1.15.0.md │ ├── 2024-03-19-announcing-scalajs-1.16.0.md │ ├── 2024-09-28-announcing-scalajs-1.17.0.md │ ├── 2025-01-09-announcing-scalajs-1.18.1.md │ ├── 2025-01-23-announcing-scalajs-1.18.2.md │ └── 2025-04-21-announcing-scalajs-1.19.0.md ├── _site └── .gitkeep ├── assets ├── badges │ ├── scalajs-0.6.0.svg │ ├── scalajs-0.6.1.svg │ ├── scalajs-0.6.13.svg │ ├── scalajs-0.6.14.svg │ ├── scalajs-0.6.15.svg │ ├── scalajs-0.6.17.svg │ ├── scalajs-0.6.2.svg │ ├── scalajs-0.6.29.svg │ ├── scalajs-0.6.3.svg │ ├── scalajs-0.6.4.svg │ ├── scalajs-0.6.5.svg │ ├── scalajs-0.6.6.svg │ ├── scalajs-0.6.8.svg │ ├── scalajs-1.0.0-M1.svg │ ├── scalajs-1.0.0-M2.svg │ ├── scalajs-1.0.0-M3.svg │ ├── scalajs-1.0.0-M5.svg │ ├── scalajs-1.0.0-M6.svg │ ├── scalajs-1.0.0-M7.svg │ ├── scalajs-1.0.0-M8.svg │ ├── scalajs-1.0.0-RC1.svg │ ├── scalajs-1.0.0-RC2.svg │ ├── scalajs-1.0.0.svg │ ├── scalajs-1.1.0.svg │ ├── scalajs-1.11.0.svg │ ├── scalajs-1.12.0.svg │ ├── scalajs-1.13.0.svg │ ├── scalajs-1.16.0.svg │ ├── scalajs-1.17.0.svg │ ├── scalajs-1.18.0.svg │ ├── scalajs-1.19.0.svg │ ├── scalajs-1.2.0.svg │ ├── scalajs-1.3.0.svg │ ├── scalajs-1.4.0.svg │ ├── scalajs-1.5.0.svg │ ├── scalajs-1.6.0.svg │ ├── scalajs-1.7.0.svg │ └── scalajs-1.8.0.svg ├── fonts │ ├── FontAwesome.otf │ ├── Lato-Black.ttf │ ├── Lato-Black.woff │ ├── Lato-Black.woff2 │ ├── Lato.ttf │ ├── Lato.woff │ ├── Lato.woff2 │ ├── LatoExt-Black.woff2 │ ├── LatoExt.woff2 │ ├── Raleway-Bold.ttf │ ├── Raleway-Bold.woff │ ├── Raleway-Bold.woff2 │ ├── Raleway.ttf │ ├── fontawesome-webfont.eot │ ├── fontawesome-webfont.svg │ ├── fontawesome-webfont.ttf │ ├── fontawesome-webfont.woff │ ├── glyphicons-halflings-regular.eot │ ├── glyphicons-halflings-regular.svg │ ├── glyphicons-halflings-regular.ttf │ └── glyphicons-halflings-regular.woff └── img │ ├── HTML5_Badge.svg │ ├── React.js_logo.svg │ ├── adopters │ ├── alvinalexander.png │ ├── atalaprism.png │ ├── carrot.png │ ├── cloudfarms.png │ ├── ergo.png │ ├── evolution.png │ ├── goodcover.png │ ├── heartai.png │ ├── hivemindtechnologies.png │ ├── itvx.png │ ├── kidslog.png │ ├── learnraga.png │ ├── linguaforce.png │ ├── mibexsoftware.png │ ├── n-side.png │ ├── orbeon.png │ ├── priceloop.svg │ ├── radiantfleet.png │ ├── scalamandra.png │ ├── td.png │ ├── tiekinetix.png │ ├── topos.png │ └── wiringbits.png │ ├── angular-logo.svg │ ├── clippy.svg │ ├── css3.svg │ ├── github-logo.png │ ├── ide-screenshot.png │ ├── ide-screenshot.psd │ ├── ide-screenshot2.psd │ ├── implicitIDE.png │ ├── js-logo-badge.svg │ ├── scala-js-logo-128.png │ ├── scala-js-logo-256.png │ ├── scala-js-logo-32.png │ ├── scala-js-logo-48.png │ ├── scala-js-logo.ico │ ├── scala-js-logo.svg │ ├── scala-js-site-logo.ai │ ├── scala-js-site-logo.svg │ ├── supporters │ └── yourkit.png │ ├── twitter-logo-white.png │ ├── web-logos.ai │ ├── web-logos.png │ └── web-logos.svg ├── atom.xml ├── changelog.md ├── community ├── halloffame.md ├── index.md └── presentations.md ├── doc ├── all-api.md ├── api.md ├── hello-world.md ├── index.md ├── internals │ ├── downloads.md │ ├── index.md │ ├── performance.md │ ├── scalajs-0.6.x-eol.md │ └── version-history.md ├── interoperability │ ├── exceptions.md │ ├── export-to-javascript.md │ ├── facade-types.md │ ├── global-scope.md │ ├── index.md │ ├── sjs-defined-js-classes.md │ └── types.md ├── planning.md ├── project │ ├── building.md │ ├── cross-build.md │ ├── dependencies.md │ ├── index.md │ ├── js-environments.md │ ├── linking-errors.md │ ├── module.md │ ├── testing.md │ └── webassembly.md ├── quick-start.md ├── regular-expressions.md ├── semantics.md ├── sjs-for-js │ ├── es6-to-scala-part1.md │ ├── es6-to-scala-part2.md │ ├── es6-to-scala-part3.md │ └── index.md └── tutorial │ ├── basic │ └── index.md │ ├── index.md │ ├── laminar.md │ ├── scalablytyped.md │ ├── scalajs-vite.md │ ├── vars-and-signals.graphml │ └── vars-and-signals.svg ├── docker-compose.yml ├── favicon.ico ├── index.html ├── libraries ├── facades.md ├── index.md ├── libs.md ├── skeletons.md └── testing.md ├── news └── index.html ├── rss.xml ├── search_data.json └── sitemap.txt /.asset-cache/.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 | -------------------------------------------------------------------------------- /.github/workflows/ci.yml: -------------------------------------------------------------------------------- 1 | name: CI 2 | on: 3 | push: 4 | branches: 5 | - main 6 | pull_request: 7 | branches: 8 | - main 9 | jobs: 10 | build: 11 | runs-on: ubuntu-latest 12 | steps: 13 | - uses: actions/checkout@v2 14 | - name: Set up Ruby 15 | uses: ruby/setup-ruby@v1 16 | with: 17 | ruby-version: 2.7.5 18 | bundler-cache: true # runs 'bundle install' and caches installed gems automatically 19 | - name: Build 20 | run: bundle exec jekyll build 21 | -------------------------------------------------------------------------------- /.github/workflows/deploy.yml: -------------------------------------------------------------------------------- 1 | name: Deploy 2 | on: 3 | push: 4 | branches: 5 | - main 6 | jobs: 7 | deploy: 8 | runs-on: ubuntu-latest 9 | steps: 10 | - uses: actions/checkout@v2 11 | - name: Set up Ruby 12 | uses: ruby/setup-ruby@v1 13 | with: 14 | ruby-version: 2.7.5 15 | bundler-cache: true # runs 'bundle install' and caches installed gems automatically 16 | - name: Build 17 | run: bundle exec jekyll build 18 | - name: Deploy 19 | uses: burnett01/rsync-deployments@4.1 20 | with: 21 | switches: -avz 22 | path: _site/ 23 | remote_path: www/ 24 | remote_host: ${{ secrets.DEPLOY_HOST }} 25 | remote_user: ${{ secrets.DEPLOY_USER }} 26 | remote_key: ${{ secrets.DEPLOY_KEY }} 27 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /_site 2 | /.jekyll-metadata 3 | /.asset-cache 4 | -------------------------------------------------------------------------------- /.htaccess: -------------------------------------------------------------------------------- 1 | --- 2 | --- 3 | 4 | {% comment %} 5 | Update this file if you have an entry that you are moving around. 6 | Don't update this file if you are adding a new entry. 7 | {% endcomment %} 8 | 9 | redirect 301 /doc/tutorial.html {{ BASE_PATH }}/doc/tutorial/basic/ 10 | redirect 301 /tutorial/basic/ {{ BASE_PATH }}/doc/tutorial/basic/ 11 | redirect 301 /tutorial/ {{ BASE_PATH }}/doc/tutorial/ 12 | redirect 410 /tutorial/boost/ 13 | redirect 410 /tutorial/firstapp/ 14 | 15 | redirect 301 /doc/calling-javascript.html {{ BASE_PATH }}/doc/interoperability/facade-types.html 16 | redirect 301 /doc/export-to-javascript.html {{ BASE_PATH }}/doc/interoperability/export-to-javascript.html 17 | redirect 301 /doc/sjs-defined-js-classes.html {{ BASE_PATH }}/doc/interoperability/sjs-defined-js-classes.html 18 | redirect 301 /doc/js-interoperability.html {{ BASE_PATH }}/doc/interoperability/types.html 19 | 20 | redirect 301 /doc/sbt/setup.html {{ BASE_PATH }}/doc/project/ 21 | redirect 301 /doc/sbt/run.html {{ BASE_PATH }}/doc/project/building.html 22 | redirect 301 /doc/sbt/depending.html {{ BASE_PATH }}/doc/project/dependencies.html 23 | redirect 301 /doc/sbt/js-envs.html {{ BASE_PATH }}/doc/project/js-environments.html 24 | redirect 301 /doc/sbt/cross-building.html {{ BASE_PATH }}/doc/project/cross-build.html 25 | redirect 301 /doc/sbt/ {{ BASE_PATH }}/doc/project/ 26 | 27 | redirect 301 /downloads.html {{ BASE_PATH }}/doc/internals/downloads.html 28 | 29 | redirect 301 /community/libraries/facades.html /libraries/facades.html 30 | redirect 301 /community/libraries/libs.html /libraries/libs.html 31 | redirect 301 /community/libraries/skeletons.html /libraries/skeletons.html 32 | redirect 301 /community/libraries/testing.html /libraries/testing.html 33 | redirect 301 /community/libraries/ /libraries/ 34 | 35 | redirect 301 /news/2020/11/16/announcing-scalajs-1.5.1/ {{ BASE_PATH }}/news/2021/04/01/announcing-scalajs-1.5.1/ 36 | redirect 301 /news/2021-10-07/announcing-scalajs-1.7.1/ {{ BASE_PATH }}/news/2021/10/07/announcing-scalajs-1.7.1/ 37 | redirect 301 /news/2022/09/15/announcing-scalajs-1.12.0/ {{ BASE_PATH }}/news/2022/11/23/announcing-scalajs-1.12.0/ 38 | -------------------------------------------------------------------------------- /Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ruby:2.7.5-bullseye 2 | 3 | # We need Node.js for the `execjs` gem, used by `_plugins/tokenize.rb` 4 | # Since it is a (sufficiently) standalone binary, we can just copy it from the node image. 5 | # Note that both the ruby and node docker images are based off buildpack-deps so they have 6 | # essentially the same base. 7 | COPY --from=node:18.14-bullseye /usr/local/bin/node /usr/local/bin/node 8 | 9 | RUN gem install bundler:2.3.10 10 | 11 | WORKDIR /srv/jekyll 12 | 13 | COPY Gemfile . 14 | COPY Gemfile.lock . 15 | 16 | RUN bundle install 17 | 18 | # jekyll serve will listen to port 4000 19 | EXPOSE 4000 20 | 21 | # declare volumes for jekyll output 22 | # Unfortunately jekyll 3.x isn't sufficiently configurable to not write to the 23 | # output directory. 24 | # 25 | # The docker-compose file will ro mount the sources to /srv/jekyll, 26 | # and then (implicitly) create anonymous volumes at these locations. 27 | # 28 | # A better approach (for jekyll 4.x) would be to set 29 | # --destination to a different location and also set 30 | # --disable-disk-cache to avoid creating .asset-cache. 31 | VOLUME ["/srv/jekyll/.asset-cache", "/srv/jekyll/_site"] 32 | 33 | CMD ["bundle", "exec", "jekyll", "serve", "--watch", "--host=0.0.0.0"] 34 | -------------------------------------------------------------------------------- /Gemfile: -------------------------------------------------------------------------------- 1 | source "https://rubygems.org" 2 | ruby '2.7.5' 3 | gem 'ruby_dep', '1.3.1' 4 | gem 'jekyll', '3.9.1' 5 | gem 'jekyll-paginate', '1.1.0' 6 | gem 'jekyll-assets', '2.1.2' 7 | gem 'sass', '3.4.20' 8 | gem 'execjs', '2.6.0' 9 | gem 'uglifier', '2.7.2' 10 | gem "kramdown-parser-gfm", "~> 1.1" 11 | -------------------------------------------------------------------------------- /Gemfile.lock: -------------------------------------------------------------------------------- 1 | GEM 2 | remote: https://rubygems.org/ 3 | specs: 4 | addressable (2.8.0) 5 | public_suffix (>= 2.0.2, < 5.0) 6 | colorator (1.1.0) 7 | concurrent-ruby (1.1.9) 8 | em-websocket (0.5.3) 9 | eventmachine (>= 0.12.9) 10 | http_parser.rb (~> 0) 11 | eventmachine (1.2.7) 12 | eventmachine (1.2.7-x64-mingw32) 13 | execjs (2.6.0) 14 | fastimage (1.8.1) 15 | addressable (~> 2.3, >= 2.3.5) 16 | ffi (1.15.5) 17 | ffi (1.15.5-x64-mingw32) 18 | forwardable-extended (2.6.0) 19 | http_parser.rb (0.8.0) 20 | i18n (0.9.5) 21 | concurrent-ruby (~> 1.0) 22 | jekyll (3.9.1) 23 | addressable (~> 2.4) 24 | colorator (~> 1.0) 25 | em-websocket (~> 0.5) 26 | i18n (~> 0.7) 27 | jekyll-sass-converter (~> 1.0) 28 | jekyll-watch (~> 2.0) 29 | kramdown (>= 1.17, < 3) 30 | liquid (~> 4.0) 31 | mercenary (~> 0.3.3) 32 | pathutil (~> 0.9) 33 | rouge (>= 1.7, < 4) 34 | safe_yaml (~> 1.0) 35 | jekyll-assets (2.1.2) 36 | fastimage (~> 1.8) 37 | jekyll (~> 3.0) 38 | sprockets (~> 3.3) 39 | sprockets-helpers (~> 1.2) 40 | tilt (~> 2.0) 41 | jekyll-paginate (1.1.0) 42 | jekyll-sass-converter (1.5.2) 43 | sass (~> 3.4) 44 | jekyll-watch (2.2.1) 45 | listen (~> 3.0) 46 | json (2.6.1) 47 | kramdown (2.3.1) 48 | rexml 49 | kramdown-parser-gfm (1.1.0) 50 | kramdown (~> 2.0) 51 | liquid (4.0.3) 52 | listen (3.7.1) 53 | rb-fsevent (~> 0.10, >= 0.10.3) 54 | rb-inotify (~> 0.9, >= 0.9.10) 55 | mercenary (0.3.6) 56 | pathutil (0.16.2) 57 | forwardable-extended (~> 2.6) 58 | public_suffix (4.0.6) 59 | rack (2.2.14) 60 | rb-fsevent (0.11.1) 61 | rb-inotify (0.10.1) 62 | ffi (~> 1.0) 63 | rexml (3.3.9) 64 | rouge (3.28.0) 65 | ruby_dep (1.3.1) 66 | safe_yaml (1.0.5) 67 | sass (3.4.20) 68 | sprockets (3.7.2) 69 | concurrent-ruby (~> 1.0) 70 | rack (> 1, < 3) 71 | sprockets-helpers (1.4.0) 72 | sprockets (>= 2.2) 73 | tilt (2.0.10) 74 | uglifier (2.7.2) 75 | execjs (>= 0.3.0) 76 | json (>= 1.8.0) 77 | 78 | PLATFORMS 79 | ruby 80 | x64-mingw32 81 | 82 | DEPENDENCIES 83 | execjs (= 2.6.0) 84 | jekyll (= 3.9.1) 85 | jekyll-assets (= 2.1.2) 86 | jekyll-paginate (= 1.1.0) 87 | kramdown-parser-gfm (~> 1.1) 88 | ruby_dep (= 1.3.1) 89 | sass (= 3.4.20) 90 | uglifier (= 2.7.2) 91 | 92 | RUBY VERSION 93 | ruby 2.7.5p203 94 | 95 | BUNDLED WITH 96 | 2.3.7 97 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Website for Scala.js 2 | 3 | This is the source code for the Scala.js website at 4 | [http://www.scala-js.org/](http://www.scala-js.org/). 5 | 6 | If you intended to look at the Scala.js source code itself, 7 | you can find it here: [github.com/scala-js/scala-js](https://github.com/scala-js/scala-js). 8 | 9 | # Contributing 10 | 11 | The key to contributing is being able to edit and 12 | preview your content. [Your pull requests are welcome](https://github.com/scala-js/scala-js-website/compare)! 13 | 14 | ## Set up 15 | 16 | ### With Docker 17 | 18 | You need to have [Docker Engine](https://docs.docker.com/engine/) and [Docker Compose](https://docs.docker.com/compose/) installed on your machine. 19 | Under Mac OS (Intel or Apple silicon), instead of installing [Docker Desktop](https://docs.docker.com/desktop/) you can also use [HomeBrew](https://brew.sh/) with [Colima](https://github.com/abiosoft/colima): `brew install colima docker docker-compose`. 20 | 21 | ``` 22 | docker compose up --build 23 | ``` 24 | 25 | On Linux you may have to prefix that command with `sudo`, depending on your Docker setup. 26 | 27 | The generated site is available at `http://localhost:4000`. 28 | 29 | When the website dependencies change (the content of the `Gemfile`), you have to kill and re-run the command. 30 | 31 | If you have problems with the Docker image or want to force the rebuild of the Docker image: 32 | 33 | ``` 34 | docker compose build --no-cache 35 | ``` 36 | 37 | ### Manually with Ruby tooling 38 | 39 | As this website is built with [Jekyll](http://jekyllrb.com/), 40 | we will need to set up some Ruby tooling. 41 | 42 | First, install RVM (Ruby Version Manager): https://rvm.io/rvm/install 43 | Then run the following commands: 44 | ```bash 45 | $ rvm use 2.7.5 --install 46 | 47 | # Set up Bundler, a Ruby package manager 48 | # It downloads dependencies specified in a Gemfile 49 | # but into a local path unlike gem 50 | $ gem install bundler 51 | # and if this fails, try installing libffi first (distro-specific): 52 | # sudo apt install libffi-dev 53 | 54 | # Install dependencies such as Jekyll and its plugins: 55 | $ bundle install 56 | 57 | # Do a full build: 58 | $ bundle exec jekyll build 59 | ``` 60 | 61 | #### Editing live 62 | 63 | This is what you would do after the initial installation: 64 | ```bash 65 | $ bundle exec jekyll serve --watch 66 | ``` 67 | -------------------------------------------------------------------------------- /_assets/css/bundle.css: -------------------------------------------------------------------------------- 1 | //= require bootstrap 2 | //= require highlight 3 | //= require font-awesome.min 4 | //= require style 5 | //= require highlight-custom 6 | -------------------------------------------------------------------------------- /_assets/css/highlight-custom.css: -------------------------------------------------------------------------------- 1 | code.hljs { 2 | background: none; 3 | } 4 | -------------------------------------------------------------------------------- /_assets/css/highlight.css: -------------------------------------------------------------------------------- 1 | pre code.hljs{display:block;overflow-x:auto;padding:1em}code.hljs{padding:3px 5px}.hljs{background:#fff;color:#000}.hljs-comment,.hljs-quote,.hljs-variable{color:green}.hljs-built_in,.hljs-keyword,.hljs-name,.hljs-selector-tag,.hljs-tag{color:#00f}.hljs-addition,.hljs-attribute,.hljs-literal,.hljs-section,.hljs-string,.hljs-template-tag,.hljs-template-variable,.hljs-title,.hljs-type{color:#a31515}.hljs-deletion,.hljs-meta,.hljs-selector-attr,.hljs-selector-pseudo{color:#2b91af}.hljs-doctag{color:grey}.hljs-attr{color:red}.hljs-bullet,.hljs-link,.hljs-symbol{color:#00b0e8}.hljs-emphasis{font-style:italic}.hljs-strong{font-weight:700} -------------------------------------------------------------------------------- /_assets/js/bundle.js: -------------------------------------------------------------------------------- 1 | //= require clipboard.min 2 | //= require jquery.min 3 | //= require bootstrap.min 4 | //= require highlight.min 5 | //= require lunr 6 | //= require highcharts 7 | //= require custom 8 | -------------------------------------------------------------------------------- /_config.yml: -------------------------------------------------------------------------------- 1 | ### GENERAL SETTINGS ### 2 | 3 | # Plugins 4 | plugins: [jekyll-paginate, jekyll-assets, sass, execjs, uglifier] 5 | 6 | # Site settings 7 | title: Scala.js 8 | description: "Harness the Scala and JavaScript ecosystems to develop robust apps for browsers, serverless, and Node.js." 9 | analytics: #Google analytics code in the format XX-nnnnnnnn-n 10 | # baseurl: "" 11 | baseurl: "" 12 | url: "https://www.scala-js.org" 13 | production_url: "https://www.scala-js.org" 14 | 15 | exclude: 16 | - "*.iml" 17 | - Gemfile 18 | - Gemfile.lock 19 | - README.md 20 | - Rakefile 21 | - vendor 22 | 23 | assets: 24 | prefix: "/assets" 25 | digest: true 26 | sources: 27 | - _assets/css 28 | - _assets/images 29 | - _assets/fonts 30 | - _assets/js 31 | 32 | # News 33 | paginate: 6 34 | paginate_path: "/news/page:num" 35 | excerpt_separator: "" 36 | future: true 37 | 38 | # Build settings 39 | markdown: kramdown 40 | defaults: 41 | - 42 | scope: 43 | type: pages 44 | values: 45 | permalink: /:path/:basename:output_ext 46 | - 47 | scope: 48 | type: posts 49 | values: 50 | permalink: /:categories/:title 51 | 52 | excerpt_separator: #use this in posts to define how long the excerpt of the post (that is shown on the Blog page) is 53 | 54 | colors: #in hex code if not noted else 55 | primary: "#0077bd" #"#F70031" 56 | primary_rgb: "0,179,254" #"247,0,49" #rgb of the primary. Needed in some places for the transparency effect. 57 | secondary: "#384452" #"#33004D" 58 | active: "#a44" 59 | link: "#428bca" 60 | link_hover: "#01b2fe" 61 | footer_heading: "#ffffff" 62 | footer_content: "#bfc9d3" 63 | 64 | 65 | ### VERSIONS ### 66 | versions: 67 | scalaJS: 1.19.0 68 | scalaJSBinary: 1 69 | scalaJS06x: 0.6.33 70 | scalaJS06xBinary: 0.6 71 | scalaJSDOM: 2.8.0 72 | -------------------------------------------------------------------------------- /_data/community.yml: -------------------------------------------------------------------------------- 1 | - text: Community 2 | url: /community/ 3 | - text: Presentations and videos 4 | url: /community/presentations.html 5 | - text: Hall of Fame 6 | url: /community/halloffame.html 7 | -------------------------------------------------------------------------------- /_data/doc.yml: -------------------------------------------------------------------------------- 1 | - text: Documentation 2 | url: /doc/ 3 | - text: Tutorials 4 | url: /doc/tutorial/ 5 | subitems: 6 | - text: Getting Started with Scala.js and Vite 7 | url: /doc/tutorial/scalajs-vite.html 8 | - text: Build UIs with Laminar 9 | url: /doc/tutorial/laminar.html 10 | - text: Integrate JavaScript libraries with ScalablyTyped 11 | url: /doc/tutorial/scalablytyped.html 12 | - text: Scala.js for JavaScript developers 13 | url: /doc/sjs-for-js/ 14 | subitems: 15 | - text: "From ES6 to Scala: Basics" 16 | url: /doc/sjs-for-js/es6-to-scala-part1.html 17 | - text: "From ES6 to Scala: Collections" 18 | url: /doc/sjs-for-js/es6-to-scala-part2.html 19 | - text: "From ES6 to Scala: Advanced" 20 | url: /doc/sjs-for-js/es6-to-scala-part3.html 21 | - text: Project setup 22 | url: /doc/project/ 23 | subitems: 24 | - text: Building the application 25 | url: /doc/project/building.html 26 | - text: Dependencies 27 | url: /doc/project/dependencies.html 28 | - text: Emitting modules 29 | url: /doc/project/module.html 30 | - text: JavaScript Environments 31 | url: /doc/project/js-environments.html 32 | - text: Emitting WebAssembly 33 | url: /doc/project/webassembly.html 34 | - text: Cross-building 35 | url: /doc/project/cross-build.html 36 | - text: Testing 37 | url: /doc/project/testing.html 38 | - text: Linking errors 39 | url: /doc/project/linking-errors.html 40 | - text: JavaScript interoperability 41 | url: /doc/interoperability/ 42 | subitems: 43 | - text: JavaScript types 44 | url: /doc/interoperability/types.html 45 | - text: Write facade types for JS APIs 46 | url: /doc/interoperability/facade-types.html 47 | - text: Access to the JavaScript global scope 48 | url: /doc/interoperability/global-scope.html 49 | - text: Export Scala.js APIs 50 | url: /doc/interoperability/export-to-javascript.html 51 | - text: Write JavaScript classes in Scala.js 52 | url: /doc/interoperability/sjs-defined-js-classes.html 53 | - text: Working with Exceptions 54 | url: /doc/interoperability/exceptions.html 55 | - text: Scala.js API 56 | url: /doc/api.html 57 | subitems: 58 | - text: APIs of previous versions 59 | url: /doc/all-api.html 60 | - text: Semantics of Scala.js 61 | url: /doc/semantics.html 62 | subitems: 63 | - text: Regular expressions 64 | url: /doc/regular-expressions.html 65 | - text: Internals 66 | url: /doc/internals/ 67 | subitems: 68 | - text: Performance 69 | url: /doc/internals/performance.html 70 | - text: Standalone distribution 71 | url: /doc/internals/downloads.html 72 | - text: Version history 73 | url: /doc/internals/version-history.html 74 | - text: Scala.js 0.6.x EOL 75 | url: /doc/internals/scalajs-0.6.x-eol.html 76 | -------------------------------------------------------------------------------- /_data/libraries.yml: -------------------------------------------------------------------------------- 1 | - text: Libraries 2 | url: /libraries/ 3 | - text: JavaScript libraries 4 | url: /libraries/facades.html 5 | - text: Scala libraries 6 | url: /libraries/libs.html 7 | - text: Testing frameworks 8 | url: /libraries/testing.html 9 | - text: Skeletons 10 | url: /libraries/skeletons.html 11 | -------------------------------------------------------------------------------- /_data/library/testlibs.yml: -------------------------------------------------------------------------------- 1 | - topic: Test frameworks 2 | libraries: 3 | - name: JUnit 4 | url: https://junit.org/junit4/ 5 | desc: A programmer-friendly Java testing framework 6 | dep: 'enablePlugins(ScalaJSJUnitPlugin)' 7 | - name: MUnit 8 | url: https://scalameta.org/munit/ 9 | desc: Scala testing library with actionable errors and extensible APIs 10 | dep: '"org.scalameta" %%% "munit" % "1.0.0" % "test"' 11 | - name: uTest 12 | url: https://github.com/lihaoyi/utest 13 | desc: Simple testing framework with good Scala.js support 14 | dep: '"com.lihaoyi" %%% "utest" % "0.3.1" % "test"' 15 | - name: ScalaTest 16 | url: http://www.scalatest.org/ 17 | desc: Extensive testing framework for Scala 18 | dep: '"org.scalatest" %%% "scalatest" % "3.0.0-M10" % "test"' 19 | - name: MiniTest 20 | url: https://github.com/monifu/minitest 21 | desc: A mini testing framework, cross-compiled for Scala and Scala.js 22 | dep: '"org.monifu" %%% "minitest" % "0.14" % "test"' 23 | - name: Greenlight 24 | url: https://github.com/greencatsoft/greenlight 25 | desc: BDD style testing framework for Scala and Scala.js. 26 | dep: '"com.greencatsoft" %%% "greenlight" % "0.2"' 27 | - name: Scala Test-State 28 | url: https://github.com/japgolly/test-state 29 | desc: Library to test stateful stuff statelessly, and reasonably. 30 | dep: '"com.github.japgolly.test-state" %%% "core" % "2.0.0" % "test"' 31 | - name: AirSpec 32 | url: https://wvlet.org/airframe/docs/airspec 33 | desc: Scala-friendly testing framework, compiled for Scala and Scala.js 34 | dep: '"org.wvlet.airframe" %%% "airspec" % "19.12.3" % "test"' 35 | 36 | - topic: Property testing 37 | libraries: 38 | - name: Scalacheck 39 | url: http://scalacheck.org/ 40 | desc: Property testing for Scala 41 | dep: '"org.scalacheck" %%% "scalacheck" % "1.12.5" % "test"' 42 | - name: Nyaya 43 | url: https://github.com/japgolly/nyaya 44 | desc: Property testing and assertion. 45 | dep: '' 46 | - name: Scalaprops 47 | url: https://github.com/scalaprops/scalaprops 48 | desc: Property based testing library for Scala 49 | dep: '"com.github.scalaprops" %%% "scalaprops" % "0.3.0" % "test"' 50 | -------------------------------------------------------------------------------- /_data/library/versions.yml: -------------------------------------------------------------------------------- 1 | - 0.6.0 2 | - 0.6.1 3 | - 0.6.2 4 | - 0.6.3 5 | - 0.6.4 6 | - 0.6.5 7 | - 0.6.6 8 | - 0.6.8 9 | - 0.6.13 10 | - 0.6.14 11 | - 0.6.15 12 | - 0.6.17 13 | - 0.6.29 14 | - 1.0.0-M1 15 | - 1.0.0-M2 16 | - 1.0.0-M3 17 | - 1.0.0-M5 18 | - 1.0.0-M6 19 | - 1.0.0-M7 20 | - 1.0.0-M8 21 | - 1.0.0-RC1 22 | - 1.0.0-RC2 23 | - 1.0.0 24 | - 1.1.0 25 | - 1.2.0 26 | - 1.3.0 27 | - 1.4.0 28 | - 1.5.0 29 | - 1.6.0 30 | - 1.7.0 31 | - 1.8.0 32 | - 1.11.0 33 | - 1.12.0 34 | - 1.13.0 35 | - 1.16.0 36 | - 1.17.0 37 | - 1.18.0 38 | - 1.19.0 39 | -------------------------------------------------------------------------------- /_data/testimonials.yml: -------------------------------------------------------------------------------- 1 | - text: Coming from JS/Coffee/TypeScript, I think Scala.js is an absolute game changer for us. And as more and more 2 | Scala libraries get ported over to Scala.js, I believe this is just the start. 3 | author: Binh Nguyen 4 | position: Director of Engineering / Anduin Transactions, Inc. 5 | img: https://media-exp1.licdn.com/dms/image/C4E03AQESOlSP4RjIng/profile-displayphoto-shrink_400_400/0?e=1607558400&v=beta&t=XroYkZvcIThHvg_jEFJZAYYD6_nEWs0bUO1242blohw 6 | - text: The Scala.js experience was great! Thanks to the compiler and better IDE support, I was immensely more productive 7 | writing Scala for the browser than I am with plain JS and, say, Angular. 8 | author: Clint Gilbert 9 | position: Harvard Medical School 10 | - text: Being able to leverage our existing build and test infrastructure for Scala.js has been a great productivity and 11 | reliability boost compared to bringing in an entirely different stack such as TypeScript. We have a number of 12 | computation libraries that have been ported to a shared module and can be used on both the front-end and the backend, 13 | which in and of themselves have made investment worthwhile. 14 | author: Erik LaBianca 15 | position: Seventh Sense 16 | img: https://media-exp1.licdn.com/dms/image/C4D03AQH4bMJ4qbHZlQ/profile-displayphoto-shrink_400_400/0?e=1607558400&v=beta&t=j0pF0YoDstemcCJh6rOarHssN7iDe-PPTgUNyERWfGw 17 | - text: Scala's type safety is essential to manage the complexity of these business rules. Scala.js gives us Scala's 18 | technical advantages and let us make a pleasingly responsive interface for our users. 19 | author: Gabriel Bezerra 20 | position: Co-founder of MF Metabolic Analyzer 21 | img: https://media-exp1.licdn.com/dms/image/C4E03AQHORY-BO9_oCA/profile-displayphoto-shrink_400_400/0?e=1607558400&v=beta&t=bLB0F5TSBp9Mj8vHgMFmSNzU6SEVWNUYn8xZ9sZ8cjU 22 | 23 | 24 | -------------------------------------------------------------------------------- /_includes/badge-generator.html: -------------------------------------------------------------------------------- 1 |
2 |
3 | 4 |
5 | 10 |
11 |
12 |
13 | 14 |
15 | 19 |
20 |
21 |
22 | 23 |
24 | 25 |
26 |
27 |
28 | 29 |
30 | 31 |
32 |
33 |
34 | 37 |
38 |
39 |
40 |
41 | 58 | -------------------------------------------------------------------------------- /_includes/docnav.html: -------------------------------------------------------------------------------- 1 | {% assign navurl = page.url | remove: 'index.html' %} 2 | 19 | -------------------------------------------------------------------------------- /_includes/footer.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 |
5 |

LEARN

6 | 7 |
8 | Documentation
9 | Tutorial
10 |
11 |
12 |

COMMUNITY

13 | 14 |
15 | #scala-js on Discord
16 | Stackoverflow
17 | Mastodon
18 | Twitter
19 | GitHub 20 |
21 |
22 |
23 |
24 |
25 |
26 | -------------------------------------------------------------------------------- /_includes/head.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | {% if page.title %} {{ page.title }} - {% endif %}{{ site.title }} 11 | 12 | {% include ogp.html %} 13 | 14 | {% css bundle %} 15 | 16 | 19 | 23 | 24 | -------------------------------------------------------------------------------- /_includes/header.html: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/scala-js/scala-js-website/ff128506c20a1790fc77e34d09176f7f8c44c115/_includes/header.html -------------------------------------------------------------------------------- /_includes/js.html: -------------------------------------------------------------------------------- 1 | {% capture javascriptTag %}{% javascript bundle %}{% endcapture %} 2 | ', '' }}"; 7 | document.body.appendChild(element); 8 | } 9 | if (window.addEventListener) 10 | window.addEventListener("load", downloadJSAtOnload, false); 11 | else if (window.attachEvent) 12 | window.attachEvent("onload", downloadJSAtOnload); 13 | else window.onload = downloadJSAtOnload; 14 | 15 | 16 | {% if jekyll.environment == "production" %} 17 | 26 | {% endif %} 27 | -------------------------------------------------------------------------------- /_includes/library.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | {% for item in include.lib %} 4 | 5 | 6 | 7 | {% if forloop.index == 1 %} 8 | 9 | 10 | 11 | 12 | 13 | {% endif %} 14 | {% for library in item.libraries %} 15 | 16 | 17 | 18 | 27 | 28 | {% endfor %} 29 | {% endfor %} 30 | 31 |

{{ item.topic }}

NameDescriptionDependency
{{ library.name }}{{ library.desc | markdownify | remove: '

' | remove: '

'}}
19 | {% if library.dep != nil and library.dep != "" %} 20 |
21 | 24 |
25 | {% endif %} 26 |
32 | 35 | -------------------------------------------------------------------------------- /_includes/meta.html: -------------------------------------------------------------------------------- 1 | {% if include.content %} 2 | 3 | {% endif %} 4 | -------------------------------------------------------------------------------- /_includes/nav.html: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /_includes/ogp.html: -------------------------------------------------------------------------------- 1 | {% capture header %} 2 | 3 | {% if page.title %} 4 | 5 | {% else %} 6 | 7 | {% endif %} 8 | 9 | {% if page.category == "news" %} 10 | 11 | {% else %} 12 | 13 | {% endif %} 14 | 15 | {% if page.description %} 16 | 17 | {% else %} 18 | 19 | {% endif %} 20 | 21 | {% include meta.html property="og:site_name" content=site.title %} 22 | 23 | {% capture image_url %}{{ site.url | append: '/assets/img/scala-js-logo-256.png'}}{% endcapture %} 24 | {% include meta.html content=image_url property="og:image" %} 25 | 26 | {% if page.date %} 27 | {% capture page_date %}{{page.date | date_to_xmlschema}}{% endcapture %} 28 | {% include meta.html property="article:published_time" content=page_date %} 29 | {% endif %} 30 | 31 | {% if page.author.url %} 32 | 33 | 34 | {% elsif site.owner_link %} 35 | 36 | 37 | {% endif %} 38 | 39 | {% if page.tags %} 40 | {% for tag in page.tags %} 41 | {% include meta.html content=tag property="article:tag" %} 42 | {% endfor %} 43 | {% endif %} 44 | 45 | {% endcapture %}{{ header | strip_newlines }} 46 | -------------------------------------------------------------------------------- /_includes/sidebar.html: -------------------------------------------------------------------------------- 1 |
2 | 9 |

Subscribe

10 |
11 |

12 |

Subscribe to this blog via RSS.

13 |

14 |
15 |

Categories

16 |
17 | {% for category in site.categories %}{% unless category.first == "blog" or category.first == "project" or category.first == "question" %} 18 |

19 | {{ category | first | capitalize }} 20 | {{ category | last | size }} 21 |

22 | {% endunless %}{% endfor %} 23 | 24 |
25 | 26 |

Recent Posts

27 |
28 | 37 | 38 |
39 | 40 |

Popular Tags

41 |
42 |

43 | {% for category in site.categories %}{% unless category.first == "blog" or category.first == "project" or category.first == "question" %} 44 | {{ category | first | capitalize }} ({{ category | last | size }}) 45 | {% endunless %}{% endfor %} 46 |

47 |
-------------------------------------------------------------------------------- /_includes/testimonials.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 | {% for item in site.data.testimonials %} 5 |
6 |

{{ item.text }}

7 | 16 |
17 | {% endfor %} 18 |
19 |
20 |
-------------------------------------------------------------------------------- /_includes/wrap.html: -------------------------------------------------------------------------------- 1 |
2 |
3 |
4 |

{% if page.wrap_title %}{{ page.wrap_title }}{% else %}{{ page.title }}{% endif %}

5 |
6 |
7 |
-------------------------------------------------------------------------------- /_layouts/base.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | --- 4 | 5 | {% include wrap.html %} 6 | 7 |
8 |
9 |
10 | {{ content }} 11 |
12 |
13 |
14 |
15 | -------------------------------------------------------------------------------- /_layouts/blog.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | --- 4 | {% include wrap.html %} 5 | 6 |
7 |
8 |
9 | {{ content }} 10 |
11 |
12 |
13 |
14 | -------------------------------------------------------------------------------- /_layouts/community.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | --- 4 | 5 | {% include wrap.html %} 6 | 7 |
8 |
9 |
10 | {{ content }} 11 |
12 |
13 |
14 | 17 |
18 |
19 |
20 | -------------------------------------------------------------------------------- /_layouts/default.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | {% include head.html %} 4 | 5 | {% include nav.html %} 6 |
7 | 11 |
12 |
13 |
14 | {{ content }} 15 |
16 |
17 | {% include footer.html %} 18 | {% include js.html %} 19 | 20 | -------------------------------------------------------------------------------- /_layouts/doc.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | --- 4 | 5 | {% include wrap.html %} 6 | 7 |
8 |
9 |
10 | {{ content }} 11 |
12 |
13 |
14 | 17 |
18 |
19 |
20 | -------------------------------------------------------------------------------- /_layouts/index.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | --- 4 | {{ content }} 5 | 6 | -------------------------------------------------------------------------------- /_layouts/libraries.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | --- 4 | 5 | {% include wrap.html %} 6 | 7 |
8 |
9 |
10 | {{ content }} 11 |
12 |
13 |
14 | 17 |
18 |
19 |
20 | -------------------------------------------------------------------------------- /_layouts/post.html: -------------------------------------------------------------------------------- 1 | --- 2 | layout: default 3 | wrap_title: News 4 | --- 5 | 6 | {% include wrap.html %} 7 | 8 |
9 |
10 |
11 |

12 | {{ page.date | date: "%b %-d, %Y" }}. 13 |

14 | {{ content }} 15 |
16 | 32 |
33 |
34 |
35 | -------------------------------------------------------------------------------- /_layouts/style.css: -------------------------------------------------------------------------------- 1 | {% include css/style.css %} -------------------------------------------------------------------------------- /_plugins/columns.rb: -------------------------------------------------------------------------------- 1 | module Tags 2 | class ColumnsBlock < Liquid::Block 3 | def render(context) 4 | '
' + super + '
' 5 | end 6 | end 7 | 8 | class ColumnBlock < Liquid::Block 9 | SYNTAX = /^([0-9]+)\s+(.*)$/ 10 | def initialize(tag_name, width, tokens) 11 | super 12 | @header = '' 13 | if width.strip =~ SYNTAX 14 | @width = $1 15 | @header = $2 16 | end 17 | end 18 | 19 | def render(context) 20 | return "" if @width.empty? 21 | 22 | site = context.registers[:site] 23 | converter = site.find_converter_instance(Jekyll::Converters::Markdown) 24 | 25 | content = super.strip 26 | content = converter.convert(content) 27 | if @header != '' 28 | content = '
' + @header + '
' + content 29 | end 30 | '
' + content + '
' 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 | scala.jsscala.js0.6.0+0.6.0+ -------------------------------------------------------------------------------- /assets/badges/scalajs-0.6.1.svg: -------------------------------------------------------------------------------- 1 | scala.jsscala.js0.6.1+0.6.1+ -------------------------------------------------------------------------------- /assets/badges/scalajs-0.6.13.svg: -------------------------------------------------------------------------------- 1 | scala.jsscala.js0.6.13+0.6.13+ -------------------------------------------------------------------------------- /assets/badges/scalajs-0.6.14.svg: -------------------------------------------------------------------------------- 1 | scala.jsscala.js0.6.14+0.6.14+ -------------------------------------------------------------------------------- /assets/badges/scalajs-0.6.15.svg: -------------------------------------------------------------------------------- 1 | scala.jsscala.js0.6.15+0.6.15+ -------------------------------------------------------------------------------- /assets/badges/scalajs-0.6.17.svg: -------------------------------------------------------------------------------- 1 | scala.jsscala.js0.6.17+0.6.17+ -------------------------------------------------------------------------------- /assets/badges/scalajs-0.6.2.svg: -------------------------------------------------------------------------------- 1 | scala.jsscala.js0.6.2+0.6.2+ -------------------------------------------------------------------------------- /assets/badges/scalajs-0.6.29.svg: -------------------------------------------------------------------------------- 1 | scala.jsscala.js0.6.29+0.6.29+ 2 | -------------------------------------------------------------------------------- /assets/badges/scalajs-0.6.3.svg: -------------------------------------------------------------------------------- 1 | scala.jsscala.js0.6.3+0.6.3+ -------------------------------------------------------------------------------- /assets/badges/scalajs-0.6.4.svg: -------------------------------------------------------------------------------- 1 | scala.jsscala.js0.6.4+0.6.4+ -------------------------------------------------------------------------------- /assets/badges/scalajs-0.6.5.svg: -------------------------------------------------------------------------------- 1 | scala.jsscala.js0.6.5+0.6.5+ -------------------------------------------------------------------------------- /assets/badges/scalajs-0.6.6.svg: -------------------------------------------------------------------------------- 1 | scala.jsscala.js0.6.6+0.6.6+ -------------------------------------------------------------------------------- /assets/badges/scalajs-0.6.8.svg: -------------------------------------------------------------------------------- 1 | scala.jsscala.js0.6.8+0.6.8+ -------------------------------------------------------------------------------- /assets/badges/scalajs-1.0.0-M1.svg: -------------------------------------------------------------------------------- 1 | scala.jsscala.js1.0.0-M11.0.0-M1 -------------------------------------------------------------------------------- /assets/badges/scalajs-1.0.0-M2.svg: -------------------------------------------------------------------------------- 1 | scala.jsscala.js1.0.0-M21.0.0-M2 -------------------------------------------------------------------------------- /assets/badges/scalajs-1.0.0-M3.svg: -------------------------------------------------------------------------------- 1 | scala.jsscala.js1.0.0-M31.0.0-M3 -------------------------------------------------------------------------------- /assets/badges/scalajs-1.0.0-M5.svg: -------------------------------------------------------------------------------- 1 | scala.jsscala.js1.0.0-M51.0.0-M5 2 | -------------------------------------------------------------------------------- /assets/badges/scalajs-1.0.0-M6.svg: -------------------------------------------------------------------------------- 1 | scala.jsscala.js1.0.0-M61.0.0-M6 2 | -------------------------------------------------------------------------------- /assets/badges/scalajs-1.0.0-M7.svg: -------------------------------------------------------------------------------- 1 | scala.jsscala.js1.0.0-M71.0.0-M7 2 | -------------------------------------------------------------------------------- /assets/badges/scalajs-1.0.0-M8.svg: -------------------------------------------------------------------------------- 1 | scala.jsscala.js1.0.0-M81.0.0-M8 2 | -------------------------------------------------------------------------------- /assets/badges/scalajs-1.0.0-RC1.svg: -------------------------------------------------------------------------------- 1 | scala.jsscala.js1.0.0-RC11.0.0-RC1 2 | -------------------------------------------------------------------------------- /assets/badges/scalajs-1.0.0-RC2.svg: -------------------------------------------------------------------------------- 1 | scala.jsscala.js1.0.0-RC21.0.0-RC2 2 | -------------------------------------------------------------------------------- /assets/badges/scalajs-1.0.0.svg: -------------------------------------------------------------------------------- 1 | scala.js: 1.0.0+scala.js1.0.0+ 2 | -------------------------------------------------------------------------------- /assets/badges/scalajs-1.1.0.svg: -------------------------------------------------------------------------------- 1 | scala.js: 1.1.0+scala.js1.1.0+ 2 | -------------------------------------------------------------------------------- /assets/badges/scalajs-1.11.0.svg: -------------------------------------------------------------------------------- 1 | scala.js: 1.11.0+scala.js1.11.0+ 2 | -------------------------------------------------------------------------------- /assets/badges/scalajs-1.12.0.svg: -------------------------------------------------------------------------------- 1 | scala.js: 1.12.0+scala.js1.12.0+ 2 | -------------------------------------------------------------------------------- /assets/badges/scalajs-1.13.0.svg: -------------------------------------------------------------------------------- 1 | scala.js: 1.13.0+scala.js1.13.0+ 2 | -------------------------------------------------------------------------------- /assets/badges/scalajs-1.16.0.svg: -------------------------------------------------------------------------------- 1 | scala.js: 1.16.0+scala.js1.16.0+ 2 | -------------------------------------------------------------------------------- /assets/badges/scalajs-1.17.0.svg: -------------------------------------------------------------------------------- 1 | scala.js: 1.17.0+scala.js1.17.0+ 2 | -------------------------------------------------------------------------------- /assets/badges/scalajs-1.18.0.svg: -------------------------------------------------------------------------------- 1 | scala.js: 1.18.0+scala.js1.18.0+ 2 | -------------------------------------------------------------------------------- /assets/badges/scalajs-1.19.0.svg: -------------------------------------------------------------------------------- 1 | scala.js: 1.19.0+scala.js1.19.0+ 2 | -------------------------------------------------------------------------------- /assets/badges/scalajs-1.2.0.svg: -------------------------------------------------------------------------------- 1 | scala.js: 1.2.0+scala.js1.2.0+ 2 | -------------------------------------------------------------------------------- /assets/badges/scalajs-1.3.0.svg: -------------------------------------------------------------------------------- 1 | scala.js: 1.3.0+scala.js1.3.0+ 2 | -------------------------------------------------------------------------------- /assets/badges/scalajs-1.4.0.svg: -------------------------------------------------------------------------------- 1 | scala.js: 1.4.0+scala.js1.4.0+ 2 | -------------------------------------------------------------------------------- /assets/badges/scalajs-1.5.0.svg: -------------------------------------------------------------------------------- 1 | scala.js: 1.5.0+scala.js1.5.0+ 2 | -------------------------------------------------------------------------------- /assets/badges/scalajs-1.6.0.svg: -------------------------------------------------------------------------------- 1 | scala.js: 1.6.0+scala.js1.6.0+ 2 | -------------------------------------------------------------------------------- /assets/badges/scalajs-1.7.0.svg: -------------------------------------------------------------------------------- 1 | scala.js: 1.7.0+scala.js1.7.0+ 2 | -------------------------------------------------------------------------------- /assets/badges/scalajs-1.8.0.svg: -------------------------------------------------------------------------------- 1 | scala.js: 1.8.0+scala.js1.8.0+ 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 | 2 | HTML5 Logo Badge 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /assets/img/React.js_logo.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 5 | 6 | 7 | 11 | 16 | 21 | 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 | 2 | 3 | 4 | 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 | 7 | 8 | 9 | 10 | 11 | 13 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /assets/img/clippy.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /assets/img/css3.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 6 | Slice 1 7 | Created with Sketch (http://www.bohemiancoding.com/sketch) 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 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 | 5 | HTML5 Logo Badge 6 | 7 | 8 | 9 | 10 | 11 | 13 | 14 | 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 |

{{ post.title }}

8 |

9 | {{ post.date | date: "%b %-d, %Y" }} 10 |

11 |
12 | {{ post.excerpt }} 13 |

Read more

14 |
15 | {% endfor %} 16 | 17 | 18 | {% if paginator.total_pages > 1 %} 19 | 68 | {% endif %} 69 | -------------------------------------------------------------------------------- /rss.xml: -------------------------------------------------------------------------------- 1 | --- 2 | title : RSS Feed 3 | --- 4 | 5 | 6 | 7 | 8 | {{ site.title }} 9 | {{ site.title }} - {{ site.author.name }} 10 | {{ site.production_url }}{{ site.rss_path }} 11 | {{ site.production_url }} 12 | {{ site.time | date_to_xmlschema }} 13 | {{ site.time | date_to_xmlschema }} 14 | 1800 15 | 16 | {% for post in site.posts %} 17 | 18 | {{ post.title }} 19 | {{ post.content | xml_escape }} 20 | {{ site.production_url }}{{ post.url }} 21 | {{ site.production_url }}{{ post.id }} 22 | {{ post.date | date_to_xmlschema }} 23 | 24 | {% endfor %} 25 | 26 | 27 | 28 | -------------------------------------------------------------------------------- /search_data.json: -------------------------------------------------------------------------------- 1 | --- 2 | layout: null 3 | --- 4 | {% lunrindex %} 5 | {% for page in site.pages %} 6 | {% if page.url contains '.html' %} 7 | {% unless page.url contains '/news/' %} 8 | { 9 | "href": "{{ page.url }}", 10 | "title": "{{ page.title | xml_escape }}", 11 | "body": "{{ page.content | replace: '><', '> <' | strip_html | tokenize }}" 12 | }, 13 | {% endunless %} 14 | {% endif %} 15 | {% endfor %} 16 | {% for post in site.posts %} 17 | { 18 | "href": "{{ post.url }}", 19 | "title": "{{ post.title | xml_escape }}", 20 | "news": "{{ post.content | replace: '><', '> <' | strip_html | tokenize }}" 21 | } 22 | {% unless forloop.last %},{% endunless %} 23 | {% endfor %} 24 | {% endlunrindex %} 25 | -------------------------------------------------------------------------------- /sitemap.txt: -------------------------------------------------------------------------------- 1 | --- 2 | # Remember to set production_url in your _config.yml file! 3 | title : Sitemap 4 | --- 5 | {% for page in site.pages %} 6 | {{site.production_url}}{{ page.url }}{% endfor %} 7 | {% for post in site.posts %} 8 | {{site.production_url}}{{ post.url }}{% endfor %} --------------------------------------------------------------------------------