Deno v2.7.6 & Deno v2.7.7
Deno v2.7.6とDeno 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()でSIGQUITとSIGTERMがサポートDeno.kill()でSIGQUIT/SIGKILL/SIGTERM/SIGABRTがサポート
OpenTelemetry
console.log()やconsole.error()などの第1引数にErrorオブジェクトが渡された場合、Semantic Conventionsに従って Log レコードに下記の属性が追加されるように改善されています (#32726)
exception.typeexception.messageexception.stacktrace
また、Log レコードにlog.iostream属性を設定する改善も実施されています (#32723)。console.error()またはconsole.warn()によるログの出力の場合はstderr, それ以外の場合はstdoutが設定されます。
また、Attributes への配列の指定がサポートされています (#32748)
Node.js互換性の改善
deno install
書き込み権限が付与されていない実行可能ファイル (bin) を配布するnpmパッケージのインストールに失敗してしまう問題が修正されています (#32632)
node:util
下記APIが実装されています (#32793):
MIMETypeMIMEParamsconvertProcessSignalToExitCode()
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
ServerでCONNECTメソッドに対する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内で実施されています。