Deno 1.10版发布,支持共享Wasm内存和网络存储

922 阅读2分钟

Deno团队最近发布了Deno 1.10,支持共享WASM内存、实现Web Storage API远程导入地图改进内置测试运行器等。

Deno 1.10现在支持WebAssembly原子学和共享内存,遵循Chrome和Firefox的路径,它们默认启用之前的功能。

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);

新的Deno版本还支持浏览器的Web存储API。网络存储API提供了替代cookies的机制,允许持久化少量的键/值对(本地存储不超过5MB)。这些机制在浏览器中可以通过 Window.sessionStorageWindow.localStorage属性提供。在Deno中,localStoragesessionStorage 可以直接使用,不需要权限,如下所示。

// 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);
  }
}

存储是由原点键入的(--location 选项)。下面是对以前脚本的执行,展示了数据是如何在调用过程中持续存在的。

$ 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允许开发者远程获取导入地图。

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


导入地图
,最近在Chrome 89中添加,指定哪些URL会被JavaScriptimport 语句和import() 表达式获取(例如,import moment from "moment" )。因此,导入地图允许在不修改源代码的情况下重新映射导入。

Deno的内置测试运行器也有明显的改进。虽然测试在默认情况下继续以串行方式运行,但开发人员可以使用--jobs 选项来指定运行测试的并发线程数。测试模块是隔离运行的,每个模块都有一个新的运行时实例。Deno.test ,也支持指定测试用例的权限,观察与测试用例相关的文件变化(--watch 选项)。

Deno用户可以通过在终端运行deno upgrade 来升级。Deno 1.10包含额外的功能、错误修复和性能改进。我们鼓励开发者查看新功能和稳定的API的完整列表和描述

Deno是MIT许可下的开源软件。我们鼓励通过Deno项目做出贡献,并应遵循Deno贡献指南