Deno v2.7.8 & Deno v2.7.9
Deno v2.7.8とDeno v2.7.9がリリースされています。
OpenTelemetry
OTEL_EXPORTER_OTLP_PROTOCOL=console
OTEL_EXPORTER_OTLP_PROTOCOL=consoleがサポートされています (#32717)。これが指定されると、シグナルがOpenTelemetryバックエンドではなく標準エラー出力に書き込まれます。
使用例として、DENO_AUDIT_PERMISSIONS=otelと併用することで、アプリケーションが要求したパーミッションをログに出力することができます:
$ cat main.js
console.info(Deno.env.get("FOO"));
$ OTEL_DENO=true \
DENO_AUDIT_PERMISSIONS=otel \
OTEL_EXPORTER_OTLP_PROTOCOL=console \
deno run -E=FOO main.js
LOG [INFO] 2026-03-29T07:33:36.045Z "env: FOO"
scope: deno@2.7.9
deno.permission.type: "env"
deno.permission.value: "FOO"
deno.permission.stack: ""
LOG [INFO] 2026-03-29T07:33:36.046Z "foo
"
scope: deno@2.7.9
log.iostream: "stdout"
http.route
Deno.serve()のハンドラー内からtrace.getActiveSpan()で取得したSpanにおいてhttp.route属性の設定がサポートされています (#32720)
deno install -g
jsrパッケージのインストールが改善
deno install -gでjsrパッケージをインストールする際に、そのパッケージが提供するdeno.lockをベースに依存解決が行われるように挙動が改善されています (#32490)
複数のbinを定義するパッケージのサポート
package.jsonのbinエントリーで複数の実行可能ファイルを指定しているnpmパッケージについて、最初の実行可能ファイルに対してしか shim が作成されない問題が修正されています (#32607)
deno approve-scripts - Windowsにおける振る舞いの改善
Windowsにおけるdeno approve-scriptsやdeno update --interactiveで表示されるインタラクティブなUIにおいて、Ctrl+Cや矢印キーによる操作、Enterなどがサポートされています (#32978)
deno update - --frozen=falseのサポート
deno updateコマンドで--frozen=falseがサポートされています (#32975)
普段の運用においてdeno.jsonでlock.frozen: trueを設定しているようなケースにおいて役立ちそうです。
deno fmt --unstable-component
deno fmt --unstable-componentの安定性の改善が実施されています (#29763)
また、deno.jsonにおいてdeno fmt --unstable-component向けの下記設定項目が追加されています:
--env-file
--env-fileで.envを読み込む際にネストされたクォートなどがうまく取り扱われない問題が修正されています (#32930)
例えば、以下のような.envがあったとします。
FOO="foob"ar"
この場合、以下のように出力されます:
console.info(Deno.env.get("FOO"));
// v2.7.7: "foob"
// v2.7.9: "foob\"ar"
--inspect
下記メソッドが実装されています (#32714)
NodeRuntime.enableNodeRuntime.disableRuntime.runIfWaitingForDebugger
Web API
AbortSignal.any()
AbortSignal.any()でメモリリークが起きることがある問題が修正されています (#32916)
AbortSignal.any()の引数に長期間維持され続けているAbortSignalが繰り返し渡されているようなケースにおいて再現することがあったようです。
Web Crypto API
SubtleCrypto#sign()およびSubtleCrypto#verify()でnamedCurve: "P-521"を指定して作成された鍵がサポートされています (#32602)
EventTarget#removeEventListener()
EventTarget#removeEventListener()の第3引数にnullが与えられた際にエラーが発生する問題が修正されています (#32605)
Node.js互換性の改善
node:sqlite
下記の改善が実施されています (#32756)
DatabaseSync#prepare()でoptions引数がサポートdefensiveオプションのデフォルト値がfalseからtrueへ変更StatementSyncのall()/get()/iterate()/run()が呼ばれた際に、 該当のStatementSyncから作成されていたアクティブなIteratorが無効化されるように挙動が修正
node:process
下記APIが実装されています:
process.threadCpuUsage()(#32829)process.getgroups()(#32772)process.setUncaughtExceptionCaptureCallback()/process.hasUncaughtExceptionCaptureCallback()(#32897)
node:fs
opendir()などが返却するDirクラスにおいて[Symbol.dispose]及び[Symbol.asyncDispose]が実装されています (#33000)
node:child_process
spawn()でuid及びgidオプションがサポートされています (#32772)
node:events
on()でhighWaterMark及びlowWaterMarkオプションのサポートが実施されています (#32826)
node:buffer
Buffer.concat()に4GBより大きいBufferが与えられると、データの一部が意図せず切り取られてしまう問題が修正されています (#32913)
node:tty
ReadStream#destroy()やWriteStream#destroy()を呼んでもfdが解放されず、リークが発生してしまう問題が修正されています (#32958)
node:http
request()でkeepAlive: trueが指定されたAgentを使用している場合、closeよりも先にfreeが発火してしまうことがあった問題が修正されています (#32811)
node:https
request()に渡したcreateConnection()オプションがtls.connect()によって事前に作成されたTLSSocketを返却した場合、メモリリークが発生してしまう問題が修正されています (#32961)
node:domain
タイマーのコールバックなどにおいてprocess.domainが失われてしまう問題の修正やDomainクラスの各種メソッドの互換性の改善が実施されています (#32897)
package.json
package.jsonのdependenciesでfile:またはlink:を依存として持つnpmパッケージがあるとエラーが発生してしまう問題が修正されています (#32876)
"nodeModulesDir": "manual"
"nodeModulesDir": "manual"が有効化されている場合、ユーザーが指定したバージョンではなく、キャッシュされているバージョンの中で最も高いバージョンのパッケージが使用されてしまうことがある問題が修正されています (#32977)
パフォーマンス改善
btoa()やatob(), Buffer.toString("base64")などの各種Base64関連のエンコード/デコード処理が最適化されています (#32743)
denoland/deploy-cli
deno deployコマンドの内部で使用されている@deno/deployパッケージのリポジトリが公開されています:
- リポジトリ: denoland/deploy-cli