Deno v2.9.5

Deno v2.9.5がリリースされています。

QuickJSバックエンド

QuickJSバックエンドの実験的実装が追加されています (#36194)

deno compile及びdeno desktopコマンドに--engineオプションが追加されており、--engine=quickjsを指定すると、DenoがQuickJSランタイムを自動でダウンロードした上で、そのQuickJSランタイムをベースに実行可能ファイルを生成してくれます。

$ deno compile --engine quickjs main.js

公式ドキュメントも公開されています。

deno add

--unscopedオプションが追加されています (#36319)。スコープ付きパッケージをインストールする際にこのオプションを指定すると、deno.jsonにはスコープを取り除いた状態でそのパッケージに関するマッピングが追加されます。

$ deno add --unscoped jsr:@david/dax
$ cat deno.json | jq .imports.dax
"jsr:@david/dax@^0.49.0"

deno task

--membersオプションが追加されています (#35748)。ワークスペースの各メンバーにおける指定したタスクを一括で実行することができます。--recursive--filterオプションとの違いとして、ワークスペースルートのタスクの実行はスキップされます。

deno fmt

deno fmt -においてXMLとSVGのフォーマットがサポートされています (#36149)。--extオプションにxmlまたはsvgを指定できます。

$ cat file.xml | deno fmt --ext=xml -

Web API

textStream()

Response#textStream()/Request#textStream()/Blob#textStream()が実装されています (#35616)

const stream = (await fetch(import.meta.url)).textStream();
assert(stream instanceof ReadableStream);
let content = "";
for await (const x of stream) {
  assert(typeof x === "string");
  content += x;
}
console.info(content);

Node.js互換性の改善

node:test

describe()it()などに対するtagsの指定がサポートされています (#36292)

node:v8

promiseHooks APIが実装されています (#36281)

node:util

diff()が実装されています (#36289)

node:fs

writeFile()/appendFile()/createWriteStream()flushオプションがサポートされています (#36290)

セキュリティ

fetch()

リダイレクトが発生した際に、リダイレクト元とリダイレクト先のOriginが異なる場合、リダイレクト先へのリクエストに対してAuthorizationCookieなどのヘッダーが送信されないように挙動が修正されています (#36361)

node:dns

getServers()--allow-sys=networkInterfacesを要求するように挙動が変更されています (#35941)

node:process

constrainedMemory()sys=systemMemoryInfoパーミッションを要求するように挙動が変更されています (#36218)