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)