Deno v2.7.8 & Deno v2.7.9

Deno v2.7.8Deno 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.jsonbinエントリーで複数の実行可能ファイルを指定しているnpmパッケージについて、最初の実行可能ファイルに対してしか shim が作成されない問題が修正されています (#32607)

deno approve-scripts - Windowsにおける振る舞いの改善

Windowsにおけるdeno approve-scriptsdeno update --interactiveで表示されるインタラクティブなUIにおいて、Ctrl+Cや矢印キーによる操作、Enterなどがサポートされています (#32978)

deno update - --frozen=falseのサポート

deno updateコマンドで--frozen=falseがサポートされています (#32975)

普段の運用においてdeno.jsonlock.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.enable
  • NodeRuntime.disable
  • Runtime.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へ変更
  • StatementSyncall()/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.jsondependenciesfile:またはlink:を依存として持つnpmパッケージがあるとエラーが発生してしまう問題が修正されています (#32876)

"nodeModulesDir": "manual"

"nodeModulesDir": "manual"が有効化されている場合、ユーザーが指定したバージョンではなく、キャッシュされているバージョンの中で最も高いバージョンのパッケージが使用されてしまうことがある問題が修正されています (#32977)

パフォーマンス改善

btoa()atob(), Buffer.toString("base64")などの各種Base64関連のエンコード/デコード処理が最適化されています (#32743)

denoland/deploy-cli

deno deployコマンドの内部で使用されている@deno/deployパッケージのリポジトリが公開されています: