Deno v2.7.6 & Deno v2.7.7

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

--cpu-prof

--cpu-prof-flamegraphオプションが追加されています (#32572, #32716)

フレームグラフをSVG形式で出力してくれます:

$ deno run --cpu-prof-flamegraph --cpu-prof-name=cli.cpuprofile --cpu-prof-dir=cpu-profile -R src/cli.ts

$ open cpu-profile/cli.svg

--cpu-prof-flamegraphオプションの公式ドキュメントも追加されています (denoland/docs#2975)

また、--cpu-profオプション関連の出力に対してソースマップが適用されるよう改善されています (#32634)

deno eval

--extオプションを指定しなくても、与えられたソースコードがCJSかESMかを自動的に判定してくれるように改善されています (#32472)

シグナル

--watchオプション使用時にファイルの変更もしくはCtrl+Cの入力が検出された際に、SIGTERMシグナル向けのリスナーが呼ばれるように挙動が改善されています (#32564)

また、Windowsで下記改善が実施されています (#32689)

  • Deno.addSignalListener()SIGQUITSIGTERMがサポート
  • Deno.kill()SIGQUIT/SIGKILL/SIGTERM/SIGABRTがサポート

OpenTelemetry

console.log()console.error()などの第1引数にErrorオブジェクトが渡された場合、Semantic Conventionsに従って Log レコードに下記の属性が追加されるように改善されています (#32726)

  • exception.type
  • exception.message
  • exception.stacktrace

また、Log レコードにlog.iostream属性を設定する改善も実施されています (#32723)。console.error()またはconsole.warn()によるログの出力の場合はstderr, それ以外の場合はstdoutが設定されます。

また、Attributes への配列の指定がサポートされています (#32748)

Node.js互換性の改善

deno install

書き込み権限が付与されていない実行可能ファイル (bin) を配布するnpmパッケージのインストールに失敗してしまう問題が修正されています (#32632)

node:util

下記APIが実装されています (#32793):

  • MIMEType
  • MIMEParams
  • convertProcessSignalToExitCode()

node:child_process

ChildProcess#[Symbol.dispose]()が実装されています (#32793)

また、親プロセス終了時にunref()されたプロセスも終了してしまう問題が修正されています (#32563)

node:process

process.titleの取り扱いが以下のように改善されています (#32201)

  • process.titleのデフォルト値が"deno"からprocess.execPathに変更されています
  • process.titleの上書きが適切に機能するように改善されています
  • NODE_OPTIONS--titleが含まれる場合、その値がprocess.titleに自動設定されるよう挙動が改善されています

また、process.once()で登録したリスナーがprocess.removeListener()で削除できない問題が修正されています (#32606)

node:crypto

以下の改善が実施されています:

  • publicDecrypt()が実装されています (#32690)
  • publicEncrypt()及びprivateDecrypt()KeyObjectの指定がサポートされています (#32690)
  • KeyObject#export()format === "pem"形式でのキーのエクスポートがサポートされています (#32703)
  • CryptoKeyオブジェクトに対するstructuredClone()のサポートが実施されています (#32674)
  • X509Certificate - signatureAlgorithm/signatureAlgorithmOidプロパティーの実装 及び structuredClone()のサポートが行われています (#32671)
  • generatePrime()add/rem/safeオプションがサポートされています (#32618)

node:fs

createReadStream()及びcreateWriteStream()fdオプションでFileHandleクラスの指定がサポートされています (#32770)

また、cpSync()の実装の大部分がRustに移植され、パフォーマンスと互換性が改善されています (#32687)

node:events

listenerCount()EventTargetがサポートされています (#32755)

node:net

Server#listen()connect()などでnetパーミッションの有無がチェックされるように挙動が修正されています (#32721)

node:dgram

Socket#send()netパーミッションの有無がチェックされるように挙動が修正されています (#32774)

また、Socket#addMembership()及びSocket#dropMembership()multicastInterface引数がサポートされています (#32754)

node:http

ServerCONNECTメソッドに対するconnectイベントの発火がサポートされています (#32599)

.npmrc

certfile及びkeyfileがサポートされています (#32655)

Web API

QuotaExceededError

QuotaExceededErrorクラスが追加されています (#32244)。現状ではまだ対応されていなさそうですが、今後、quotaなどのフィールドを参照できるようにする余地がありそうです (whatwg/webidl#1465)

DOMException

DOMExceptionに対するstructuredClone()のサポートが追加されています (#32675)

Console API

Console APIで%jがサポートされています (#32684)

console.log("%j", { a: 1 }) // => {"a":1}

パフォーマンス改善

複数のライフサイクルスクリプトを並列で実行するように挙動が改善されています (#32666)

また、Linuxにおいて大規模なコードベースのプロジェクトにおけるメモリ使用量を削減するため、各種モジュールの読み込み後やWorkerの終了時にmalloc_trim(0)を実行するように修正されています (#32662, #32617)

その他にも、URLPattern (#32766)や TextEncoder/TextDecoder (#32735) の最適化や、Deno.FsFile.writableによる書き込みにバッファリングを適用することによるパフォーマンス改善 (#32676) も実施されています。

Deno Deploy

Deno Deployのアップデート

Deno Deployのchangelogが更新されています:

以下の改善が実施されているようです:

  • 非ClassicバージョンのDeno DeployにおけるDeno.cron()のサポート
  • アプリケーションの作成以降のタイミングにおけるデプロイ先リージョンの変更がサポート
  • Organizationの削除がサポート
  • TanStack Startのサポートの追加
  • 外部OpenTelemetryコレクターへの接続がサポート
  • ランタイムのメモリ制限の設定がサポート
  • 料金プランとして Builderプラン が追加

Deno Deploy Classicの停止について

Deno Deployの旧バージョン (Deno Deploy Classic)が2026/07/20に停止されることが計画されているようです:

2026/07/20までにDeno Deployの新規バージョン (旧称: Deno Deploy EA) への移行が推奨されます。

マイグレーションガイドも公開されています。

deno lintコマンドにおけるdeno_lintからoxlintへの置き換えについて

まだDraft状態ですが、deno lintコマンドの内部実装をdeno_lint crateからoxlintへ置き換えるPRが作成されています (⚠️現時点では、まだマージはされていません。また、正式に導入される計画があるかどうかは現時点ではわかりません。):

現時点 (934251b)においては、単純にdeno runコマンドによってnpm:oxlint--format json付きで実行し、その出力結果を解析する形で実装されています。

また、deno fmtコマンドの内部実装をoxfmtへ置き換える対応も上記PR内で実施されています。