Deno v2.9.3

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

deno add/deno install

--no-save/--save-optional

--no-save及び--save-optionalオプションが追加されています (#36039)

--no-saveオプションが指定されると、package.json及びdeno.jsonは更新せずに、指定されたパッケージのインストール及びdeno.lockの更新のみが行われます。

--save-optionalオプションが指定されると、指定されたパッケージをインストールしつつ、 package.jsonoptionalDependenciesに該当パッケージが追加されます。

--min-dep-age

--min-dep-ageオプションが追加されています (#35914)

実体は--minimum-dependency-ageオプションへの alias です。

deno compile

--target aarch64-pc-windows-msvc

deno compileコマンドで--target aarch64-pc-windows-msvcオプションがサポートされています (#36004)

Deno v2.6.8にてWindows ARM64のサポートが追加されていたものの、--targetオプションではサポートされていなかったようです。

Deno.createHttpClient()

Deno.createHttpClient()http2MaxHeaderListSizeオプションが追加されています (#33194)

HTTP/2のSETTINGS_MAX_HEADER_LIST_SIZEに相当します。

セキュリティ

BYONM

BYONM ("nodeModulesDir": "manual") の有効化時にrequire()node_modules/../path/to/file.jsのような形式のパスが指定されると、意図せず--allow-readの要求が迂回されてしまう問題が修正されています (#35882)

パフォーマンス改善

crypto.randomUUID()

crypto.randomUUID()のパフォーマンスが改善されています (#35953)。

初回の呼び出し時にあらかじめ128個分のUUIDを生成してプールしておき、以降の呼び出しにおいてはプールされたUUIDを返却することで、オーバーヘッドが削減されているようです。プールされているUUIDが尽きたら、再度、UUIDの生成が行われます。

ベンチマークによるとおおよそ2倍近くまでスループットが改善されているようです。

node:fs

cp()において、一定条件を満たす場合のパフォーマンスが最適化されています (#35856)

特にrecursiveオプションが有効化された際の振る舞いが改善されており、macOSにおいて、可能な場合はclonefile()の使用を試みることによって大幅なパフォーマンス改善が試みられているようです。

node:sqlite

StatementSync#all()パフォーマンスが改善されています (#35863)。行数が多い場合のパフォーマンスがNode.jsと同等以上にまで改善されているようです。

deno lint - graph-aware (cross-file) lint rules — prototype / RFC

まだマージはされていませんが、PoCとしてdeno lintプラグインシステムで複数のモジュールにまたがったLintルールを実装するための仕組みの開発が行われているようです。

現時点 (2f4e00e) での実装としては、Deno.lint.RulecreateGraphRule()フックが追加されており、ctx引数の.graphプロパティーからアプリケーションを構成する各モジュールの情報を参照できる想定のようです。