Deno、Ryan Dahl氏により開発されたJavaScriptランタイムはバージョン2.5をリリースし、パーミッションセットの追加、新しいテストフック、Websocketの改善などの改良をもたらした。今回のリリースの一環として多くのパフォーマンス改善も行われている。
Deno 2.5は、ランタイム環境をV8 14.0およびTypeScript 5.9.2にアップグレードし、新しいJavaScript言語機能、パフォーマンスの向上、より良いTypeScriptサポートへのアクセスを可能にした。このリリースには日付と時間管理のためのTemporal APIの変更も含まれており、将来的に--unstable-temporalフラグが不要になることを目指している。
注目すべき変更の一つは設定ファイルでのパーミッションセットのサポートであり、開発者にランタイムの権限をより細かく宣言的に制御する手段を提供する。deno.json設定ファイルに権限仕様を定義することで、実行されるコマンドに基づいて異なる事前定義された権限を適用できる。パーミッションセットは新しいpermission-setフラグを使用して適用できる、例えば:
deno run --permission-set=process-data main.ts 加えてDenoはテストAPIを強化し、セットアップとティアダウンフックを追加し、テスト作成者がDeno.test内でライフサイクルを直接制御できるようにした。新しいフックは4つ:Deno.test.beforeAll、Deno.test.beforeEach、Deno.test.afterAll、Deno.test.afterEachある。
RedditのあるユーザーはテストAPIに新しいフックが追加されたことにエキサイトしたが、YouTubeのあるコメントではbeforeAllの追加が遅いと指摘されており、もっと早くNodeと機能の同等性を持つべきだったと付け加えられていた。
バンドルランタイムAPIも提供されており、ランタイム時にモジュールをプログラム的バンドルできるようにしている。この機能はバージョン2.4で提供されたdeno bundleコマンドを強化するものである。バンドルAPIは現在実験的であり、-unstable-bundleフラグを使用する必要がある。
WebSocketヘッダーも新しいWebSocket接続を開始する際に認証やカスタムメタデータ、状態の送信に有効なカスタムヘッダーを許可するよう改善された。ただし、この新機能はすべてのブラウザで動作するわけではないとリリースブログに記載されている。
Deno 2.5にはパフォーマンス最適化も含まれている。emitキャッシュは基盤となるdeno_astバージョンが変更されない限り、更新間で保持され、不要な再コンパイルを削減している。CommonJSモジュールラッパーのメモリ使用量が削減され、Node.jsとの互換性が向上したのに対し、条件付きJSXトランスピレーションはJSXが無効化されている場合に処理を完全にスキップする。コアAPIも同様の改善が行われている:structuredCloneはより高速な内部実装を使用するようになり、Buffer.subarrayとBuffer.prototype.utf8Sliceはバイナリデータ処理のために最適化された。DenoのNode-API層は、ネイティブNodeモジュールをロードする際のオーバーヘッドを最小化するためにパフォーマンス調整が行われた。
Denoはオープンソースで安全なJavaScriptランタイムであり、ファーストクラスTypeScriptサポート、統合ツール、意図的なデフォルトセキュリティを備えている。GitHubで100k+以上のスター、400k+以上のアクティブ・コミュニティユーザー、2M+以上のコミュニティモジュールを持つ。Deno v2.5は多くの改善と機能を備えている。変更の完全なリストはDeno webサイトのリリース記事で確認できる。