generated at
Deno v2
リリース時期
What we got wrong about HTTP imports - 2024/09にリリース予定とのこと

追記) 正式リリース
2024/10/09に正式リリースされました

主な変更
deno:URLのサポート
https: 形式の import は、大規模なコードベースにおいては依存解決の重複が課題となる可能性があります
それを解消するために、semverベースの依存解決の仕組みが検討されているようです
これは最終的に jsr: URLとして導入されることになりました (jsr)
typescript
import { ulid } from "jsr:@std/ulid@0.219.1";
上記のように jsr: という形式の import が検出されると、Denoの本体に組み込まれたパッケージマネージャーJSRというパッケージレジストリと連携して、semverの解決が行われます
注意点として、 https: 形式の import は引き続きサポートされます

ワークスペースサポート
これはすでに導入済み (deno-weekly/articles/2023/11/19)
ただ、Deno v2向けにまだ細かな対応などが残っている模様 (deno.json workspace support for Deno 2 (#22942))
deno_stdではすでに導入されています
fresh v2でも活用されています
Deno v1.45npm Workspacesのサポートが入りました

破壊的変更
Deno v2からいくつかのAPIの削除や挙動の変更などが実施される予定です
DENO_FUTURE 1 を指定することで、Deno v2で導入予定の破壊的変更を有効化することができます

Node.jsユーザー向けの変更
deno addコマンド
--dev オプションのサポート - もしpackage.jsonがあれば、指定されたパッケージをdevDependenciesに追加してくれます (feat(add/install): Flag to add dev dependency to package.json (#25495))
deno installコマンド
v1においてdeno installコマンドはインターネット上に公開された任意のスクリプトをローカルにインストールするためのコマンドという位置づけでした
例) deno-udddeployctlなどといったDeno製のCLIツールをインストールする際に使用されることが想定されていました
Deno v2からはデフォルトでdeno installdeno addのエイリアスとして振る舞うように挙動が変わる想定です (これはnpmなどと使用体験を近づけるための変更です)
deno addjsrまたはnpmパッケージをプロジェクトに追加する際に使用するためのコマンドです
deno installコマンドにv1と同様の振る舞いをさせたい場合は、 -g オプションを明示的に指定する必要があります
deno uninstallコマンド
v1においてdeno uninstallコマンドはdeno installによってインストールされたスクリプトを削除するためのコマンドという位置づけでした
Deno v2ではdeno uninstallコマンドはdeno removeコマンドのエイリアスとして振る舞うように挙動が変更されます
deno removeコマンドはプロジェクトからjsrまたはnpmパッケージを削除するためのコマンドです
package.jsonがある場合は、BYONMがデフォルトで有効化されるよう挙動が変更されます

セキュリティの強化
--allow-runパーミッションに関する振る舞いの修正
allow-listなしで--allow-runを利用すると警告が表示されるように
allow-listに指定された各実行可能ファイルが --deny-write に自動で設定されるように
LD_PRELOADなどの LD_* から始まる環境変数が設定されている場合、 --allow-all が要求されるよう振る舞いが変更

各種非推奨APIの削除
Deno本体の非推奨APIが削除される予定です
以下でマイグレーションガイドが公開されています

周辺ライブラリ
deno_stdのv1は?
jsrのリリースとワークスペース機能の活用により、deno_stdを各モジュールごとに別々にバージョン管理することが可能になりました
これにより、deno_std全体でv1をリリースする、というよりは安定している各モジュールから少しずつv1が公開されていく流れになりそうです (deno-weekly/articles/2024/04/21)
例) deno_std/collectionsなどの安定性の高いモジュールから順にv1をリリースしていき、deno_std/expectなどの新しめのモジュールについてはより安定してきてからv1をリリースする
また、これらの影響により、deno_stdDeno本体とは独立してリリースされていきます