Deno 1.26 发布,新增CacheWeb API、提升性能


Deno 1.26 已正式发布。

主要变化

  • 新增CacheWeb API
  • WebCrypto Secure Curves
  • 新增--allow-syspermission flag
  • 改进对 npm 的支持
  • 优化对 Node.js 的兼容性
  • 针对DenoAPI 的变更
  • 改进 Deno.serve() API
  • 提升性能
  • 优化 module 下载 UI
  • 改进开发者体验
  • 升级 TypeScript 至 4.8

CacheWeb API

此版本添加了对CacheAPI 的支持。该 API 可用于缓存 Request/Response 对象,对于动态生成 response 的场景十分有帮助。它允许缓存 GET 请求的 response,并从缓存中为类似请求提供 response。

下面是一个基于name查询生成 response 的示例:

import { serve } from "https://deno.land/[email protected]/http/server.ts";

// Open a cache named v1.
const CACHE = await caches.open("v1");

serve(async (req: Request) => {
// Requests after first request are served from cache.
const res = await CACHE.match(req);
if (res) {
res.headers.set("x-cache-hit", "true");
return res;
}

const { searchParams } = new URL(req.url);
const name = searchParams.get("name");
const response = new Response(`Hello ${name}!`);
// Put response in cache.
await CACHE.put(req, response.clone());
return response;
});

缓存被持久化到文件系统中,所以重启 Deno 不会刷新缓存。

目前实现的 API 包括:

  • CacheStorage::open()
  • CacheStorage::has()
  • CacheStorage::delete()
  • Cache::match()
  • Cache::put()
  • Cache::delete()

WebCrypto Secure Curves

WebCrypto Secure Curves 规范添加了对 Curve25519 和 Curve448 的支持到 WebCrypto API。

Deno v1.26 实现了 CFRG curves Ed25519 和 X25519。

const key = await crypto.subtle.generateKey("X25519", true, ["deriveKey"]);

开发团队表示计划在未来的版本添加对 Ed448 和 X448 的支持。

提升性能

最近发布的几个版本都在持续优化性能。比如,在现有的 TypedArray 中进行文本编码,对于小的有效载荷,最大吞吐量提高了 5 倍;对于大的有效载荷,最大吞吐量提高了 30 倍。详情查看 denoland/deno#15922。

写入小文件时,同步写入Deno.writeFileSync()的速度快了 1.44 倍,异步写入Deno.writeFile()的速度快了 1.15 倍。

CSV 解析的性能在 Mac 和 Linux 上都有明显提升:

URL 解析方面,对于没有查询字符串的 Url,URL 解析的速度提高了 2.27 倍,对于有多个查询字符串参数的复杂 Url,速度提高了 1.37 倍。详情查看 denoland/deno#15663

此版本对文件系统操作和console.log()也有不少改进:

最后,Deno.consoleSize与 v1.24.3 相比,TTY 方法的速度提升了 2.4 倍。详情查看 denoland/deno#15976。

优化 module 下载 UI

添加了新的交互式"Download..."消息显示: 

完整更新内容查看发布公告。


相關推薦

2023-12-16

Deno的1.39版本发布标志着该平台的一个重要更新,其中包含多项引人注目的改进和新特性。 WebGPU的回归 Deno 1.39重新引入了WebGPU API的支持,这一决定标志着对于高性能、跨架构的GPU编程在JavaScript中的重要进展。WebGPU API,被视为

2023-05-02

Deno 1.33 已发布。与此同时,官方宣布了 Deno 2 的消息,称将于未来几个月内发布,并介绍了关于此版本的开发目标: 提升编码效率:无论是删除配置、样板代码还是构建步骤,团队都在持续让开发者轻松地深入研究代码并立

2022-08-29

TypeScript 的运行时,它使用 V8 并以 Rust 构建。 Deno 1.25 已发布,值得关注的更新包括: deno init 子命令 用 Deno 启动一个新的项目一直很简单:你只需要一个文件就可以开始了。不需要任何配置文件、依赖清单或构建脚本。来自

2023-11-04

Deno 1.38 已正式发布。 公告写道,此版本为deno doc命令引入了重大改进,其中包括使用deno doc --html生成静态站点文档的能力。另外改进了 Node.js 兼容性、支持 HMR(模块热更新)。 主要变化 改进deno doc:新的 deno doc --html&nb

2023-05-27

Deno 1.34 已正式发布,主要更新内容是优化与 npm 和 Node.js 的兼容性,从而整体提升开发者体验,并为未来的性能增强奠定基础。 值得关注的变化: deno compile支持 npm 包 从 Deno v1.6 开始, deno compile支持将项目编译成单个

2022-06-18

Deno 1.23 已发布,值得关注的更新包括: 默认不进行类型检查 当要求执行一个程序时,Deno 总是运行一个类型检查。然而,评估和类型检查是完全不同的操作,涉及完全不同的编译器,每个编译器的执行速度也完全不同。评估代

2022-10-29

Deno 1.27 已正式发布。 主要变化 改进语言服务器 /IDE 改进 npm 兼容性 新增navigator.language Web API 改进 deno task 升级检查器 修改 Deno APIs 升级 deno lint V8 10.8 改进 Node.js 兼容性 修改标准库 API

2022-07-23

TypeScript 的运行时,它使用 V8 并以 Rust 构建。 Deno 1.24 已发布,值得关注的更新包括: 类型检查和发射的性能改进 以前,当指定 --check 标志时,Deno 内部使用 TypeScript 编译器将 TypeScript 代码转换为 JavaScript,否则就使用 swc。在

2023-03-24

eScript 的运行时,它使用 V8 并以 Rust 构建。 Deno 1.32 正式发布,值得关注的更新包括: 增强 Node.js 的兼容性 Deno 在提高与 Node.js 的兼容性方面继续取得重大进展,提供了更顺畅的整体开发者体验。这个版本的主要改进包括:

2022-05-20

Deno 1.22 已发布,主要变化如下: 更新默认的类型检查模式 移除不稳定的Deno.emit(), Deno.formatDiagnostics()和Deno.applySourceMap()API Deno 命名空间在 worker 中默认可用 新增--no-config flag Navigator.userAgent 升级Deno.resolveDns()

2023-07-07

2023 年 7 月 5 日,Deno 团队发布了 Deno 1.35 版本。此次更新的目的是使程序开发尽量简单,因此运行时内置强大的工具链、原生 TypeScript 支持和 Web 标准 API,可以跳过配置和学习新 API,并立即开始工作。 此次版本更新带来如下改

2022-12-17

Deno 1.29 已正式发布。 主要变化 改进 npm 兼容性 REPL 变更 改进项目质量 DenoAPIs 变更 将附带的 TypeScript 升级到 4.9 标准库模块变更 改进 npm 兼容性 自 1.28.0 以来,此版本具有多项 npm 兼容性改进和 30 多个错误修

2023-02-01

程语言,可用于 Erlang 虚拟机和 JavaScript 运行时。 最近发布的 0.26 版本引入了增量编译。该项特性改进了构建工具,仅在必要的情况下编译所需模块,而不是整个包,从而显著提升 Gleam 编译器性能。 下面是官方提供的性能测

2023-01-29

TypeScript 的运行时,它使用 V8 并以 Rust 构建。 Deno 1.30 已发布,值得关注的更新包括: 对内置 Node.js 模块的支持 在 Deno 中,npm 包已经可以通过 Deno 的 Node.js 兼容层访问内置的 Node.js 模块,如 fs、path、process 等等。 在这个版