The Final Touches: What’s New In v2.0.0-rc.10
後述するDeno v2.0.0-rc.10に関する記事がDeno公式ブログで公開されています:
上記の記事によると、Deno v2の正式リリースについては今週に予定されているようです。
Deno Deploy NextGen
Deno公式からDeno Deploy NextGenが公開されています:
これはKubernetesクラスター上でユーザーがDeno Deployのインフラストラクチャーを実行するための基盤のようで、現時点だとAWSとAzureがサポートされているようです。
Deno v2.0.0-rc.8/v2.0.0-rc.9/v2.0.0-rc.10がリリース
Denoのv2.0.0-rc.8〜v2.0.0-rc.10がリリースされています:
破壊的変更
URLPattern#exec
の振る舞いの変更
Deno v1.46.0で導入され、
Deno v1.46.1で取り消されたURLPattern#exec
の振る舞いの変更が改めて実施されました。
URLPattern#exec
でパターンにマッチするグループがない場合にgroups[key]
にundefined
が設定されるように振る舞いが変わります。
$DENO_DIR/deps
が$DENO_DIR/remote
へリネーム
リモートからダウンロードされた依存関係のグローバルキャッシュとして利用される$DENO_DIR/deps
ディレクトリが$DENO_DIR/remote
へリネームされました。
DENO_DIR
の操作を行うツールやライブラリなどを除いて、基本的にはこの変更による影響は特にないはずです。
deno lsp
npm:@types/*
を追加するQuick fixのサポート
自前で型定義を持たないnpmパッケージに対して// @deno-types=\"npm:@types/*"
を追加するQuick fixが実装されています。(Add @deno-types directive for \"<package>\"
)
Node.js互換性の改善
BYONM - deno run npm:<package>
のサポート
BYONMが有効化されている状態でdeno run npm:<package>
を実行しようとした際に、<package>
がpackage.json
で定義されていないとエラーが発生する問題が修正されています。この場合、対象の<package>
はdeno.lock
には書き込まれないようなので、deno run npm:<package>@<version>
のようにバージョンを明示すると安全そうです。
libuv APIs
sqlite3を動かすために必要なlibuvのAPIが実装されています。
Node-API
Node-APIに依存したnpmパッケージをDenoのグローバルキャッシュを有効化した状態で利用しようとした際に、"nodeModulesDir": "auto"
を追加してからdeno install --allow-scripts=npm:<package> --entrypoint <script>
の実行を促す警告が導入されています。
node:buffer
- transcode()
がサポート
node:buffer
のtranscode()
が実装されました。
Workspaces
--config
の取り扱いの改善
--config
オプションで明示的に指定されたdeno.json
のワークスペースに関する設定が適切に取り扱われない問題が修正されています。
ワークスペースメンバー配下でnode_modules
が作成される条件の変更
Deno v1.45.3で各ワークスペースメンバー間で同じパッケージが使用されており かつ それらのパッケージのバージョンで衝突が検出された場合にnode_modules
を作成する変更が導入されました。
Deno v1.45.3の時点では、バージョンの衝突判定はsemverに基づいたマッチングによって行われていました。ただ、このsemverによる衝突判定は挙動が不安定になることがあるようで、今回のDeno v2.0.0-rc.10においてそれぞれのバージョンが完全一致するかどうかを元に判断するよう挙動が変更されています。
Denoの直近の変更について
まもなくDeno v2.0がリリースされる予定のようなので、直近の最新リリースであるDeno v2.0.0-rc.10のリリース以降に実施された変更をいくつか紹介します。
--allow-import
のデフォルトの許可対象としてcdn.jsdelivr.net
が追加
--allow-import
オプションのデフォルトの許可対象として、deno.land
/jsr.io
/esm.sh
/raw.githubusercontent.com
の4つに加えて、新しくcdn.jsdelivr.net
が追加されました。
cdn.jsdelivr.net
からモジュールをimport
する際も、デフォルトで--allow-import
の指定が不要になります。
allow-listなしで--allow-run
を使用した際の警告の削除
Deno v2.0.0-rc.3でallow-listなしで--allow-run
を指定した際に警告が導入されました。しかし、方針が見直されたようで、この警告については改めて削除が行われています。
node:worker_threads
Angularのサポートに向けてnode:worker_threads
の実装が修正されています。
jsr:@eslint/*
ESLint関連のパッケージがjsrへ公開されていたようです:
現時点では@eslint/coreや@eslint/compat, @eslint/jsonなどのパッケージが公開されているようです。
fresh 1.7.2
fresh 1.7.2がリリースされています。
Partialsに関するバグ修正
Island内でf-client-nav={false}
の指定が効かない問題が修正されています。
また、Partialsが有効化されたボタンまたはリンク配下のSVG要素をクリックした際に、クライアントナビゲーションが動作しない問題が修正されています。
Deno v2向けの対応
先程紹介したDeno v2でのURLPattern#exec
の振る舞いの変更に向けた対応が実施されています。
Danetがjsrに公開
DenoのWebフレームワークであるDanetがjsrへ公開されています:
@danet/*配下のスコープでパッケージが公開されているようです (例: @danet/core)