Deno v2.2.9
Deno v2.2.9がリリースされています。
Lockfile v5
Lockfile (deno.lock) の新しいバージョンであるv5が実装されています (#28647, #28842)
グローバルキャッシュもしくは--node-modules-dir=auto使用時のプロセスの起動やdeno installの高速化が主な目的のようです。
下記PRにベンチマークが掲載されていますが、--node-modules-dir=auto使用時の起動が15倍近くまで高速化されるケースがあるようです:
deno.lock内にnpmパッケージに関するメタ情報 (cpu, os, optionalDependencies, など…)をあらかじめ書き込んでおくことで、グローバルキャッシュへの読み込みを減らし、npmパッケージの解決をdeno.lockの情報のみで完結させることで高速化が図られているようです:
- Release 0.26.0 · denoland/deno_lockfile
- feat: put npm packument info in lockfile (denoland/deno_lockfile#42)
現状ではLockfile v5は実験的機能という扱いであり、--unstable-lockfile-v5オプションもしくはdeno.jsonで"unstable": ["lockfile-v5"]を指定することにより有効化が可能なようです (次のマイナーリリース以降、デフォルトで有効化される予定のようです)
deno task - ~の展開やバッククォートによるコマンド実行のサポート
deno taskでのスクリプト実行時に~の展開やバッククォートによるコマンド実行がサポートされています (#28832)
# (1) `~`の展開
$ deno task --eval 'cat ~/.npmrc'
# (2) バッククォートによるコマンドの実行
$ deno task --eval 'touch `date +%Y-%m-%d`.txt'
deno compile
node_modulesの取り扱いの改善
--includeでnode_modulesディレクトリを指定すると、プロセスがパニックする問題が修正されています (#28782)
Node-APIに関するバグ修正 (macOS向け)
deno compileで生成されたmacOS向けの実行可能ファイルでNode-APIを使うとプロセスがパニックする問題が修正されています (#28800)
Deno.lint - .parentプロパティとデコレーターのサポート
各種ノードの型定義に.parentプロパティーの定義が追加されました (#28802)
あるノードの親ノードを参照することができます。.parentプロパティーはすでに実装はされていたものの、型定義が提供されていなかったようです。
また、deno lintのプラグインにおいてデコレーターがサポートされています (#28834)
Node.js互換性の改善
node:process
loadEnvFile()が実装されています (#28824)
利用するには--allow-readの指定が必要です。
node:fs/promises
FileHandleにcreateReadStream()とcreateWriteStream()メソッドが実装されています (#28700)
node:util
parseArgs()でallowNegativeオプションがサポートされています (#28811)
node:child_process
spawnSync()でinputオプションがサポートされています (#28792)
node:buffer
Buffer.copyBytesFrom()が実装されています (#28829)
node:stream
node:streamとnode:stream/promisesのfinished()でReadableStreamとWritableStreamがサポートされています (#28600)
node:perf_hooks
monitorEventLoopDelay()から返却されるIntervalHistogramオブジェクトにreset()メソッドが実装されています (#28788)
node:crypto
privateEncrypt/privateDecrypt/publicEncryptにおいて戻り値がBufferとして返却されるよう修正 (#28826)
また、SHAKE128やSHAKE256がそれぞれshake128とshake256だけでなく、shake-128とshake-256という名前でも参照できるように改善されています (#28451)
node_modules/.binに関する改善
あるパッケージにおいてpackage.jsonにbinエントリーが定義されていないもののregistry.jsonにはbinエントリーが定義されている場合は、registry.jsonの方の定義を元にnode_modules/.binにエントリーが作られるよう改善されています (#28822)
esbuild-wasmを使用しようとするとプロセスがパニックする問題があったようで、それを改善することが目的のようです。
postinstallスクリプトに関するバグ修正
postinstallスクリプトで実行されるスクリプトが拡張子を持たない場合、DenoではくNode.jsを使用してスクリプトが実行される問題が修正されています (#28786)
Deno v2.2.7におけるnpmライフサイクルスクリプトに関する挙動の変更に伴うバグのようです。
deno lsp - npmパッケージに対するauto-importsの改善
npmパッケージに対するauto-importsの候補として、グローバルキャッシュ中のパスも候補として表示されてしまう問題が修正されています (#28841)
createImageBitmap()のバグ修正
createImageBitmap()において整数のオーバーフローが適切に取り扱われるよう改善されています (#28764)
参考
- https://github.com/denoland/deno/releases/tag/v2.2.9
- https://github.com/denoland/deno/blob/25defa74d539d1d6fd27ddabd5260705677c43e8/Releases.md#229--20250411
deno_stdのリリース
deno_stdのリリースが行われています (release-2025.04.08)
@std/encoding@1.0.9
@std/encoding@1.0.9がリリースされています。
破壊的変更
下記の3モジュールに対して破壊的変更が実施されています (#6513)
@std/encoding/unstable-base32calcMax()がcalcSizeBase32()へリネームされていますencodeRawBase32()が削除され、代わりにencodeIntoBase32()が追加されましたdecodeRawBase32が削除されています
@std/encoding/unstable-base64calcMax()がcalcSizeBase64()へリネームされていますencodeRawBase64()が削除され、代わりにencodeIntoBase64()が追加されていますdecodeRawBase64()が削除されています
@std/encoding/unstable-hexcalcMax()がcalcSizeHex()へリネームされていますencodeRawHex()が削除され、代わりにencodeIntoHex()が追加されていますdecodeRawHex()が削除されています
各種デコード関連のAPIでUint8Arrayがサポート
以下のAPIでUint8Arrayのサポートが追加されています (#6508)
decodeBase32()(@std/encoding/unstable-base32)decodeBase64()(@std/encoding/unstable-base64)decodeHex()(@std/encoding/unstable-hex)
@std/fs@1.0.16
@std/fs@1.0.16がリリースされています。
Node.jsサポートの改善
Node.jsサポートの改善に向けて、以下のAPIが追加されています:
chown()&chownSync()(@std/fs/unstable-chown)readDirSync()(@std/fs/unstable-read-dir)
@std/datetime@0.225.4
@std/datetime@0.225.4がリリースされています。
format()とparse()の挙動の改善
format()において時刻の小数部が意図せぬ形式でフォーマットされることがある問題が修正されています (#6516)
また、parse()においてyyyyとyyがより厳格に取り扱われるよう改善されています (#6516)
| フォーマット | 変更前 | 変更後 |
|---|---|---|
yyyy | 1〜4桁までで年の指定が許容されていました | 4桁以外の年が拒否されます |
yy | 1〜2桁までで年の指定が許容されていました | 2桁以外の年が拒否されます |
@std/expect@1.0.15
@std/expect@1.0.15がリリースされています。
expect().toMatchObject()のエラーが改善
expect().toMatchObject()が失敗した際にエラーメッセージにdiffが含まれるよう改善されています (#6525)
@std/ini@1.0.0-rc.7
@std/ini@1.0.0-rc.7がリリースされています。
stringify()のバグ修正
stringify()においてDateなどのオブジェクトが意図せぬ形式でフォーマットされる問題が修正されています (#6517)
node-test-viewer.deno.dev
node-test-viewer.deno.devというWebページが公開されています (リポジトリ: denoland/node_test_viewer)
DenoはNode.jsの各種組み込みモジュールの互換性を担保するために、Node.jsのテストファイルを実行しています (denoland/node_test)
node-test-viewer.deno.devでは、DenoにおけるNode.jsのテストファイルの網羅率が可視化されています。