Deno v2.9.4

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

deno desktop

React Routerが検出され かつ --hmrが指定された際に、React Routerのdevサーバーが起動されるように改善されています(#35900)

deno add

--minimum-dependency-age

deno add/deno removeコマンドで--minimum-dependency-ageオプションがサポートされています (#36099)。

必要に応じて--minimum-dependency-age=0を指定することで、deno.jsonminimumDependencyAgeを一時的に無効化できるようにするなどことが目的のようです。

Web Cache API

データの保存先が変更

Web Cache APIにおいて、localStorageなどと同様に$DENO_DIR/location_dataディレクトリを使用するように変更されています (#36145)。$DENO_DIR/location_data/web_cache配下にデータが保存されます。

Node.js互換性の改善

node:worker_threads

Deno v2.9で実装されたWeb Locks APIをベースにworker_threads.locksが実装されています (#35963)

node:crypto

createCipheriv()及びcreateDecipheriv()chacha20がサポートされています (#36016)

node:buffer

Buffer#indexOf(), Buffer#lastIndexOf(), 及びBuffer#includes()end引数がサポートされています (#35872)

セキュリティ

deno x

deno xコマンドで--minimum-dependency-age=0オプション及びdeno.jsonminimumDependencyAgeがサポートされています (#36025)

Deno.umask()

Deno.umask()及び process.umask() (node:process) が--allow-sys=umaskを要求するように挙動が変更されています (#36222)

Deno.UnsafeWindowSurface

Deno.UnsafeWindowSurfaceの作成時に--allow-ffiパーミッションが要求されるように挙動が変更されています (#36080)

V8

Deno内部のV8が14.9から15.0へアップデートされています (#36098, https://github.com/denoland/rusty_v8/compare/v149.4.0…v150.2.0)

QuickJS バックエンド

現時点ではまだマージされていませんが、QuickJS (正確にはQuickJS-ngというフォーク版が使用されるようです) をDenoのバックエンドとして利用できるようにする対応が試みられているようです:

いずれのPRにおいてもv8xをベースに実装されており、Deno本体のビルド時にV8またはQuickJSのいずれかを切り替えることができるようです。

#35849のPRによると、HTTPなどにおけるスループットは低下するものの、ランタイムのサイズが60%以上軽減されることが期待されるようです。

deno.land/xが読み込み専用に変更

Denoのパッケージレジストリであるdeno.land/xが読み込み専用に変更されています:

今後、パッケージを公開したい場合はJSRへの移行が推奨されています。