Deno v2.7のリリースタイミングについて

Deno公式のXアカウントにて、今週にDeno v2.7のリリースを計画している旨について発表されています。

直近でTemporal APIの安定化 (#31928) や package.jsonにおけるoverridesのサポート (#32073) などがマージされており、これらがv2.7にてリリースされるものと思われます。

Deno v2.6.10

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

deno install --global --compile

deno install --global--compileオプションがサポートされています (#32046)

指定されたエントリーポイントをインストールする際にdeno compileを適用して実行可能ファイルを作成してくれます。

$ deno install --global --compile -ER npm:cowsay

$ cowsay hi
 ____
< hi >
 ----
        \   ^__^
         \  (oo)\_______
            (__)\       )\/\
                ||----w |
                ||     ||

deno install

deno install/deno add/deno removeの実行時に、不要なnpmパッケージをnode_modulesから削除してくれるよう挙動が改善されています (#32058)

SSLKEYLOGFILE

SSLKEYLOGFILE環境変数がサポートされています (#31867)

Wiresharkなどでトラフィックを解析するために、指定されたファイルに対してTLSのセッションキーを書き込んでくれます。

deno publish

COPYINGファイルがライセンスファイルとして認識されるよう改善されています (#32133)

node:worker_threads

Worker.stdinがサポートされています (#32165)。Workerスレッド内からはprocess.stdin経由でWorker.stdinに書き込まれた内容を読み込めます。

同様にWorkerスレッド内からprocess.stdoutまたはprocess.stderrに書き込まれた内容がWorker.stdoutまたはWorker.stderr経由で読み込めるようにする改善が実施されています (#32160)

また、WorkerexecArgvオプションのサポートが追加されています (#32145)

node:fs

openSync()O_RDONLY | O_CREATの組み合わせが動作するよう改善されています (#32152)

また、opendir()などが返却するDirentクラスにおいてparentPathプロパティーが設定されるよう改善されています (#32178)

node:buffer

Fileクラスがexportされています (#32182)

AbortSignal.any()

AbortSignal.any()で作成したAbortSignalが意図せずGCによって回収されてしまうことがある問題が修正されています (#32118)

Deno.test()

Deno.test()で定義したテストケース中でネストしてDeno.test()が呼ばれた際はエラーが発生するよう挙動が改善されています (#32184)

テストケースをネストさせたい場合はDeno.TestContext#step()の使用が推奨されます。

deno_stdのリリース

deno_stdのリリースが実施されています (release-2026.02.20)

@std/xml

新規パッケージとして@std/xmlが追加されています (#6981, #6997)。parse()parseXmlStream(), stringify()などのAPIが提供されています。

@std/async@1.2.0

@std/async@1.2.0がリリースされています。

@std/async/unstable-lazy

新規モジュールとして@std/async/unstable-lazyが追加されています (#7007)

このモジュールではLazyクラスが提供されています。Lazy#get()が最初に呼び出された際に一度だけコンストラクタで提供された関数を実行し、その戻り値を内部でキャッシュすることで、以降のすべてのLazy#get()の呼び出しでキャッシュされた値が返却されます。

@std/async/unstable-poll

新規モジュールとして@std/async/unstable-pollが追加されています (#6973)

このモジュールではpoll()が提供されており、第2引数で指定した関数 (isDone) がtrueを返却するまで、第1引数で指定された関数をintervalオプションで指定された間隔ごとに繰り返し呼んでくれます。

@std/async/unstable-all-keyed

@std/async/unstable-all-keyedが追加されています (#6959)

allKeyed()及びallSettledKeyed()が提供されており、それぞれproposal-await-dictionaryを実装しています。

@std/async/retry

@std/async/unstable-retryで提供されていたretry()signalオプションが安定化されました (#6968)。今後は@std/async/retryからsignalオプションが利用できます。これに伴い@std/async/unstable-retryは削除されています。

@std/async/unstable-abortable

新規モジュールとして@std/async/unstable-abortableが追加されています (#6971)

既存の@std/async/abortableでは第2引数に直接AbortSignalが指定されることが想定されていますが、@std/async/unstable-abortableではsignalオプションによるAbortSignalの指定がサポートされています。

@std/cli@1.0.28

@std/cli@1.0.28がリリースされています。

@std/cli/unstable-static-line

新規モジュールとして@std/cli/unstable-static-lineが追加されています (#6758)。StaticLineクラスが提供されており、このクラスによって書き込まれたテキストはconsole.log()などによって大量の出力が行われてもターミナルの上部もしくは下部に留まって表示され続けます。

import { StaticLine } from "jsr:@std/cli@1.0.28/unstable-static-line";

const delay = (ms) => new Promise((ok) => setTimeout(ok, ms));
const staticLine = new StaticLine();
await staticLine.write("Hello Deno!");
await delay(1000);
await staticLine.write("Hello JavaScript!");
for (let i = 0; i < 50; i++) {
  console.info(i);
}
await delay(1000);
await staticLine.releaseLine();

@std/cli/parse-args

parseArgs()-v=のように引数に空の値が指定された際に、該当のオプションにtrueではなく空文字列が設定されるよう挙動が修正されています (#6995)

また、parseArgs()でプロトタイプ汚染攻撃への対策が実施されています (#6980)

@std/expect@1.0.18

@std/expect@1.0.18がリリースされています。

スナップショットテストのサポート

expect().toMatchSnapshot()expect().toMatchInlineSnapshot()が実装されています (#7003)

本機能を利用するには、現時点ではexpect.setState()を事前に呼ぶ必要があるようです。

import { expect } from "jsr:@std/expect@1.0.18";

Deno.test("doSomething", (t) => {
  expect.setState({
    currentTestName: t.name,
    testPath: import.meta.url,
  });
  const result = doSomething();
  expect(result).toMatchSnapshot();
});

スナップショットを更新したい場合は@std/testing/snapshotと同様に--updateの指定が必要です:

$ deno test -RW -- --update

@std/http@1.0.25

@std/http@1.0.25がリリースされています。

@std/http/unstable-cache-control

新規モジュールとして@std/http/unstable-cache-controlが追加されています (#7005)。parseCacheControl()formatCacheControl()が提供されており、Cache-Controlヘッダーの設定値の解析・生成がサポートされています。

@std/http/unstable-structured-fields

新規モジュールとして@std/http/unstable-structured-fieldsが追加されています (#6963)。RFC 9651の実装が提供されます。

@std/json@1.0.3

@std/json@1.0.3がリリースされています。

@std/json/unstable-canonicalize

新規モジュールとして@std/json/unstable-canonicalizeが追加されています (#6965)。RFC 8785が実装されています。

@std/assert@1.0.19

@std/assert@1.0.19がリリースされています。

@std/assert/object-match

assertObjectMatch()においてDateオブジェクトが適切に比較されていなかった問題が修正されています (#6988)

DenoとVultrのパートナーシップについて

DenoがVultr Cloud Allianceへ参加したことが発表されました。

元々、Deno Deployの内部でVultrが使用されていたようで、その関係でパートナーシップが結ばれたようです。

また、Vultrの以下の公式ドキュメントにてVultr Serverless InferenceDeno Sandboxの連携例が紹介されています:

Hono v4.12.0

Hono v4.12.0がリリースされています。

hono/ssg

redirectPluginが追加されています (#4599)。301などのステータスコードを返却したページが検出された場合、Locationヘッダーの設定値に基づいてhttp-equiv="refresh"が設定された静的なHTMLページを生成してくれます。

hono/client

ApplyGlobalResponse型が追加されています (#4556)。主にエラーレスポンスに関する型をクライアントが推論できるようにすることを目的に追加されたようです。

クライアントに$path()メソッドが追加されています (#4636)。$url()と異なり、パスを文字列で返却してくれます。

hono/basic-auth

onAuthSuccessコールバックがサポートされています (#4645)。認証成功時にContext及びユーザー名を引数にコールバックが呼ばれます。

hono/trailing-slash

trimTrailingSlash()及びappendTrailingSlash()alwaysRedirectオプションが追加されています (#4658)。

例えば、trimTrailingSlash()alwaysRedirect: trueを設定した場合、末尾が/で終わるGETまたはHEADリクエストを受信した場合、常に末尾の/を取り除いたパスへリダイレクトするようです。

hono/language

RFC 4647が実装されています (#4717)。これにより、例えばja-JPjaにマッチしてくれるよう挙動が改善されるようです。

hono/router/trie-router

TrieRouterの内部実装の改善により、パフォーマンスが1.5〜2倍近くまで高速化されたようです (#4724)