SystemJS 0.20.0

@guybedford guybedford released this Jan 24, 2017

SystemJS 0.20 is a rewrite of SystemJS on top of the 2.0 release of es-module-loader.
It remains as backwards-compatible as possible, while also tracking the changes of direction
that have been happening at the specification level.

There are a number of breaking changes and deprecations as listed below.

To upgrade, first run SystemJS 0.19 with System.config({ warn: true }) and fix all the deprecation
warnings first before running SystemJS 0.20.

The corresponding release of SystemJS Builder is available at https://github.com/systemjs/builder/releases/tag/0.16.0.

New Features:

  • Improved performance and reduced file size.
  • Supports the dynamic import('./module.js') syntax in modules, when transpiled with the Babel system module format with the babel-plugin-syntax-dynamic-import plugin enabled (alternatively this support is also provided by the SystemJS babel plugin).
  • Supports automatically loading Web Assembly when enabled via the flag System.config({ wasm: true })
  • New small optimized production build (5KB) for just loading System.register modules with baseURL, paths, map, contextual map, bundles, depCache and wasm support.
  • Normalization is now fully idempotent
  • format: 'system' is supported as an alternative to format: 'register'

Breaking Changes:

  • Removes the ability to use named imports from non-ES modules (eg import {readFile} from 'fs' should be import fs from 'fs'; fs.readFile). This is in order to align with the NodeJS ES module directions (https://github.com/nodejs/CTC/pull/60/files#diff-2b572743d67d8a47685ae4bcb9bec651R217).
  • Removes support for defaultJSExtensions
  • Default transpiler loading is removed. It is no longer possible to transpile sources without configuring one of the transpiler plugins.
  • Setting baseURL directly is no longer supported - use System.config({ baseURL: 'x' }) over System.baseURL = x.
  • No longer possible to set System.map['x'] = 'asdf'. Must use System.config({ map: { x: 'asdf' } }).
  • Hooks no longer exist (just resolve and instantiate as in es-module-loader). Hooks via plugins still work fine.
  • Supports IE9+ but scriptLoad support is only included in IE11+
  • deps is no longer supported for System.register / System.registerDynamic / script load
  • Global exports metadata as an array will no longer export the default as the first global.
  • format: 'esm' must now be used instead of format: 'es6'
  • A bundle with a single named System.register statement will no longer give an anonymous module value
  • No more special handling of trailing slash in CJS
  • System.load now does normalization, to match WhatWG spec. This method may well be deprecated as idempotent normalization should make this no longer necessary.
  • AMD define no longer set by default when using scriptLoad, requires manually setting window.define = System.amdDefine for scriptLoad support of AMD.
  • The separate SystemCSP and register builds are no longer available
  • Disables a previous experimental functional return variation of System.register
  • Alias feature is removed

Bug Fixes

  • depCache now uses link preloading instead of partial execution techniques which have been unreliable.

Downloads

SystemJS 0.20.0-rc.8

@guybedford guybedford released this Jan 24, 2017 · 3 commits to master since this release

Updates ES Module Loader build to retain identical System.registerDynamic API instead of making breaking changes to this API.

Downloads

SystemJS 0.19.43

@guybedford guybedford released this Jan 20, 2017 · 88 commits to master since this release

Fixes polyfill build to include Promise polyfill still (#1545)

Downloads

SystemJS 0.20.0-rc.7

@guybedford guybedford released this Jan 18, 2017 · 91 commits to master since this release

Fix to ensure __esModule is fully supported (ModuleLoader/es-module-loader@9118a0f)

Downloads

SystemJS 0.20.0-rc.6

@guybedford guybedford released this Jan 17, 2017 · 91 commits to master since this release

Simplification to __esModule handling to use direct namespace (91b120f)

Downloads

SystemJS 0.20.0-rc.5

@guybedford guybedford released this Jan 17, 2017 · 91 commits to master since this release

Fixes namespace handling to still treat objects as ES modules when using the __esModule flag.

Downloads

SystemJS 0.19.42

@guybedford guybedford released this Jan 17, 2017 · 89 commits to master since this release

  • Fix to ensure URL resolution converts \ into / for windows path support (0008aa5)
  • Fixes minified builds for IE8 support (#1467)

Downloads

SystemJS 0.20.0-rc.4

@guybedford guybedford released this Jan 14, 2017 · 91 commits to master since this release

  • Fixes plugin system to ensure instantiate plugins return exact object (7cf29d7)

Downloads

SystemJS 0.20.0-rc.3

@guybedford guybedford released this Jan 13, 2017 · 91 commits to master since this release

Upgrades the production loader to match the import of dynamic modules returning the default as described in rc.2 (4d462b3)

Downloads

SystemJS 0.20.0-rc.2

@guybedford guybedford released this Jan 13, 2017 · 91 commits to master since this release

Breaking Changes

  • Removes the ability to use named imports from non-ES modules (eg import {readFile} from 'fs' should be import fs from 'fs'; fs.readFile). This is in order to align with the NodeJS ES module directions (https://github.com/nodejs/CTC/pull/60/files#diff-2b572743d67d8a47685ae4bcb9bec651R217).
  • Reverts the previous breaking change from the alpha release, where System.import did not return the default export for legacy modules, in order to counter the lack of namespace population on the upgrade path.
  • Removes an experimental functional return variation of System.register (595a1df)

Bug Fixes

  • Updates the depCache prefetching approach to also work in Safari using an old web hack (2b64def)

Downloads