5月22日、Deno公式が「Deno 2.8 Deno」と題した記事を公開した。この記事では、Denoの最大規模のマイナーアップデートとなるDeno 2.8の新機能と大幅な性能向上について詳しく紹介されている。以下に、その内容を紹介する。
Deno 2.8の最大の変更:npmパッケージがデフォルトに
Deno 2.8で最も注目すべき変更は、CLIでのnpm:プレフィックス要求の廃止である。deno addやdeno installでパッケージを追加する際、これまで必要だったnpm:プレフィックスが不要になった。
# これまで
$ deno add express
error: express is missing a prefix. Did you mean `deno install npm:express`?
# Deno 2.8以降
$ deno add express
Add npm:express@5.2.1
Dependencies:
+ npm:express@5.2.1
これにより、deno installはnpm install、yarn、pnpm installの完全な代替として機能する。既存のNode.jsプロジェクトでも、package.jsonを読み取り、互換性のあるnode_modulesレイアウトを生成する。
7つの新しいサブコマンド
deno pack: npmパッケージとして公開可能なtarballを生成
deno packは、DenoやJSRプロジェクトをnpm公開可能なtarballに一発でビルドするコマンドだ。
// deno.json
{
"name": "@scope/my-lib",
"version": "1.0.0",
"exports": "./mod.ts"
}
deno pack実行により、以下を含むscope-my-lib-1.0.0.tgzが生成される:
- TypeScriptからJavaScriptへの変換済みコード
- 型定義ファイル(
.d.ts) - 自動生成された
package.json - インポート指定子の自動書き換え(
jsr:@std/path→@jsr/std__pathなど)
deno audit fix: 脆弱性の自動修正
既存のdeno auditに加えて、脆弱性のあるパッケージを自動でアップグレードする機能が追加された。
$ deno audit fix
╭ body-parser vulnerable to denial of service when url encoding is enabled
│ Severity: high
│ Package: body-parser
│ Vulnerable: <1.20.3
╰ Info: https://github.com/advisories/GHSA-qwcr-r2fm-qrc7
Fixed 1 vulnerability:
body-parser 1.19.0 -> 1.20.3
1 vulnerability could not be fixed automatically:
express (major upgrade to 5.0.0)
メジャーバージョンアップが必要な場合は別途リストアップされ、開発者が制約を緩和するかどうかを判断できる。
その他の新サブコマンド
deno bump-version:deno.jsonやpackage.jsonのバージョンフィールドを更新deno ci: CI環境向けの厳密な依存関係インストール(ロックファイル必須)deno transpile: TypeScriptからJavaScriptへの型除去のみを実行deno why <package>: パッケージがインストールされた理由を依存関係ツリーで説明
Node.js互換性が大幅向上
Deno 2.8では、Node.js公式テストスイートのパス率が42%から76.4%に大幅向上した。4,457件のテストのうち3,405件が通過している。
競合のBun 1.3.14が40.6%であることと比較すると、Denoの互換性の高さが際立つ。この向上により、多くのNode.js組み込みモジュールが遅延ロードされるようになり、それらを使わないプログラムの起動が高速化された。
圧倒的な性能向上
Deno 2.8では、様々な領域で大幅な性能向上を実現した:
- npmコールドインストール: 3.66倍高速化
node:bufferbase64処理: 3.07倍高速化node:httpスループット: 2.21倍向上(8,339 req/s → 18,431 req/s)node:cryptoscrypt: 2.12倍高速化
npmインストールの高速化には以下の最適化が寄与している:
- 省略形packumentsの使用により、必要最小限のメタデータのみを取得
- 並列npm解決により、依存関係ツリーの独立したブランチが並行処理される
- 非同期イベントループ外での解凍処理
base64処理の大幅な高速化は、simdutfへの切り替えによるものだ。これによりatob/btoaやbase64を扱うすべてのWeb APIが同様の恩恵を受ける。
開発体験の向上
Deno 2.8では、開発者の日常的な作業を効率化する機能も多数追加された。特にdeno packにより、Denoで開発したライブラリをnpmエコシステムに簡単に公開できるようになったことは重要だ。また、脆弱性の自動修正機能により、セキュリティメンテナンスの負担も大幅に軽減される。
詳細はDeno 2.8 Denoを参照していただきたい。