BT

Facilitating the Spread of Knowledge and Innovation in Professional Software Development

Write for InfoQ

Topics

Choose your language

InfoQ Homepage News Deno 1.10 Released with Shared Wasm Memory and Web Storage Support

Deno 1.10 Released with Shared Wasm Memory and Web Storage Support

Lire ce contenu en français

Bookmarks

The Deno team recently released Deno 1.10 with shared WASM memory support, implementation of Web Storage API, remote import maps, improvements to the built-in test runner, and more.

Deno 1.10 now supports WebAssembly atomics and shared memory, following the path of Chrome and Firefox, which enable the previous features by default:

const memory = new WebAssembly.Memory({
  initial: 1,
  maximum: 10,
  // enables atomics and allows for shared array buffers as WASM memory the backing store
  shared: true,
});
console.assert(memory.buffer instanceof SharedArrayBuffer);

The new Deno release additionally supports the browser Web Storage API. The Web Storage API provides alternative mechanisms to cookies that allow persisting a small quantity of key/value pairs (up to 5 MB for local storage). These mechanisms are available in the browser via the Window.sessionStorage and Window.localStorage properties. In Deno, localStorage and sessionStorage can be used directly, without permissions as follows:

// kv.ts

const key = Deno.args[0];

if (key === undefined) {
  // if user passes no args, display number of entries
  console.log(localStorage.length);
} else {
  const value = Deno.args[1];

  if (value === undefined) {
    // if no value is specified, return value of the key
    console.log(localStorage.getItem(key));
  } else {
    // if value is specifed, set the value
    localStorage.setItem(key, value);
  }
}

The storage is keyed by origin (--location option). The following executions of the previous script showcase how data is persisted across invocations:

$ deno run --location https://example.com ./kv.ts
0
$ deno run --location https://example.com ./kv.ts foo bar
$ deno run --location https://example.com ./kv.ts foo
bar
$ deno run --location https://example.com ./kv.ts
1

Deno 1.10 lets developers fetch import maps remotely:

$ deno install --import-map=https://example.com/import_map.json -n example https://example.com/mod.ts


Import maps
, recently added in Chrome 89, specify what URLs get fetched by JavaScript import statements and import() expressions (e.g., import moment from "moment"). Import maps thus allow remapping imports without modifying the source code.

Deno’s built-in test runner also sees significant improvements. While tests continue to be run serially by default, developers can use the --jobs option to specify the number of concurrent threads running tests. Test modules are run in isolation with a new runtime instance for each of the modules. Deno.test also supports specifying test case permissions and watching for file changes that are relevant to a test case (--watch option).

Deno users can upgrade by running deno upgrade in a terminal. Deno 1.10 contains additional features, bug fixes, and performance improvements. Developers are encouraged to review the full list and description of new features and stabilized APIs.

Deno is open-source software available under the MIT license. Contributions are encouraged via the Deno Project and should follow the Deno contribution guideline.

Rate this Article

Adoption
Style

BT