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-base32
calcMax()
がcalcSizeBase32()
へリネームされていますencodeRawBase32()
が削除され、代わりにencodeIntoBase32()
が追加されましたdecodeRawBase32
が削除されています
@std/encoding/unstable-base64
calcMax()
がcalcSizeBase64()
へリネームされていますencodeRawBase64()
が削除され、代わりにencodeIntoBase64()
が追加されていますdecodeRawBase64()
が削除されています
@std/encoding/unstable-hex
calcMax()
が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のテストファイルの網羅率が可視化されています。