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:buffertranscode()が実装されました。


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)