Deno 1.8发布:实验性支持WebGPU API、导入映射已稳定
Deno 1.8 已正式发布,此版本包含许多新功能以及稳定化的改进。
实验性支持 WebGPU API:主要是为在 Deno 中支持开箱即用的 CPU 加速机器学习做准备
启用内置的国际化 API:所有 JS
Intl
API 支持开箱即用改进测试覆盖工具:覆盖工具支持输出
lcov
报告导入映射 (Import maps) 已处于稳定状态:重写 Web 兼容性的依赖关系已正式生效
支持获取私有模块:可使用身份验证令牌从私有服务器获取远程模块
如果已经安装了 Deno,运行deno upgrade
命令即可升级到 1.8 版本。如果是首次安装,可以参考下面的方法:
# Using Shell (macOS and Linux):
curl -fsSL https://deno.land/x/install/install.sh | sh
# Using PowerShell (Windows):
iwr https://deno.land/x/install/install.ps1 -useb | iex
# Using Homebrew (macOS):
brew install deno
# Using Scoop (Windows):
scoop install deno
# Using Chocolatey (Windows):
choco install deno
实验性支持 WebGPU API
WebGPU API 为开发者提供了一种底层、高性能、跨架构的方式来通过 JavaScript 对 GPU 硬件进行编程。它被认为是 WebGL 在 Web 上的实际继任者。WebGPU 规范尚未最终确定,不过 Firefox、Chromium 和 Safari 已添加对它的支持,现在 Deno 也已添加了实验性支持。
开发者可以通过此 API 直接从 Deno 内部访问 GPU 渲染和通用 GPU 计算。下面是一个基础示例,演示了如何访问连接的 GPU 设备以及读取名称和支持的功能:
// Run with `deno run --unstable https://deno.land/posts/v1.8/webgpu_discover.ts`
// Try to get an adapter from the user agent.
const adapter = await navigator.gpu.requestAdapter();
if (adapter) {
// Print out some basic details about the adapter.
console.log(`Found adapter: ${adapter.name}`);
const features = [...adapter.features.values()];
console.log(`Supported features: ${features.join(", ")}`);
} else {
console.error("No adapter found");
}
下面的例子演示了 GPU 使用渲染着色器在绿色背景上渲染出一个简单的红色三角形:
$ deno run --unstable --allow-write=output.png https://raw.githubusercontent.com/crowlKats/webgpu-examples/f3b979f57fd471b11a28c5b0c91d0447221ba77b/hello-triangle/mod.ts
Deno 开发团队提到,此功能最终合并的 PR 包含多达 15.5 万行代码,并且花费了整整 5 个月的时间进行合并。
改进测试覆盖工具:deno coverage
此版本扩大了覆盖范围基础架构,以添加一些强大的新功能,其中主要变化是,覆盖率处理现在分为覆盖率集合和覆盖率报告。
导入映射已稳定
导入映射在 Chrome 89 已处于稳定状态,Deno 开发团队也紧跟着进行了更新以匹配该规范的最新版本,并且现在也被认为已处于稳定状态。这就意味着使用--import-map
时不再需要--unstable
flag。
$ deno run --import-map=./import_map.json ./mod.ts
此外,--import-map
flag 现在不仅接受本地路径,而且接受 URL,从而可以从远程服务器加载导入映射。
$ deno run --import-map=https://example.com/import_map.json ./mod.ts
导入映射允许用户使用所谓的“裸”说明符来表示依赖关系,而不是相对或绝对文件地址/http URL:
// Deno does not support such specifiers by default,
// but by providing an import map, users can remap bare specifiers
// to some other URLs.import * as http from "std/http";
{
"imports": {
"std/http": "https://deno.land/std@0.85.0/http/mod.ts"
}
}
除了这些更新亮点,发布公告还介绍了许多其他新特性和改进,详情查看:https://deno.land/posts/v1.8
往期推荐
2021-03-03
2021-03-03
2021-03-02
扫码关注最新动态
公众号ID:fosslab
我就知道你“在看”