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)
また、WorkerでexecArgvオプションのサポートが追加されています (#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 InferenceとDeno 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-JPがjaにマッチしてくれるよう挙動が改善されるようです。
hono/router/trie-router
TrieRouterの内部実装の改善により、パフォーマンスが1.5〜2倍近くまで高速化されたようです (#4724)