Deno v2.7.10 & Deno v2.7.11

Deno v2.7.10Deno v2.7.11がリリースされています。

deno upgrade

deno upgradeコマンドでalphabetaチャネルがサポートされています (#33098)

RCバージョンへのアップグレードと同様に、deno upgradeの引数にalphaもしくはbetaを指定することでアップグレードが可能です。

ただし、まだ alpha 及び beta バージョンのリリースは実施されていません。今後、実際にリリースが行われれば、利用できるようになりそうです。

deno compile

deno.jsonにおいてcompile.include及びcompile.excludeフィールドがサポートされています (#33024)

効果はそれぞれ--include及び--excludeオプションと同様です。

deno lsp

Import mapsにおいて以下のようにディレクトリへのマッピングが定義されている状態でdeno lspimportの補完をする際に、相対パス形式だけでなく@/形式のパスに対する補完候補も表示してくれるように改善されています (#33048)

{
  "imports": {
    "@/": "./src/"
  }
}

Permissoins

Windowsにおいて、--allow-readなどのパーミッションオプションにおけるパスの大文字・小文字を区別せずに取り扱うように挙動が変更されています (#33073)

Node.js互換性の改善

deno.jsonlinksフィールドにおいてまだnpmレジストリに公開されていないnpmパッケージが参照されている場合にエラーが発生してしまう問題が修正されています (#33021)

BYONM

--node-modules-dir=manual (BYONM) が適用されている場合、Node.js組み込みモジュールと同名のパッケージ (例: eventsパッケージ) が読み込めない問題が修正されています (#32865)

node:child_process

spawnSync()の戻り値として返却されるオブジェクトにpidプロパティーが設定されるように改善されています (#33081)

node:crypto

下記の改善が実施されています:

  • createCipher()/createDecipher()chacha20-poly1305がサポート (#33084)
  • Verify#verify()への秘密鍵の指定がサポート (#33083)

node:worker_threads

exitイベントがmessageイベントよりも先に発火されてしまうことがある問題が修正されています (#32623)

Denoの最近のアップデートについて

まだリリースはされていませんが、Deno本体でいくつかの大きな変更が実施されています。

推測にはなりますが、先述したようにdeno upgradeにおいて alphabeta チャネルのサポートが実施されており、そう遠くないタイミングで大きめのリリースが実施される可能性もあるのかもしれません。

グローバルのタイマーAPIがWeb APIではなくNode.jsベースのものへ変更

グローバルのsetTimeout()setInterval()などのタイマーAPIをWeb APIではなくNode.js (node:timers) ベースのAPIに置き換える対応が実施されています:

これにより、例えばsetTimeout()を呼ぶと数値ではなくTimeoutオブジェクトが返却されるように挙動が変わります。

テストサニタイザーに関する変更

Deno.test()におけるsanitizeOps及びsanitizeResourcesのデフォルト値がfalseに変更されています:

この変更に合わせて--sanitize-ops及び--sanitize-resourcesオプションが追加されており、deno testコマンドにこれらのオプションを指定することで以前までの挙動に戻すことができるようです。

また、DENO_TEST_SANITIZE_OPS/DENO_TEST_SANITIZE_RESOURCES環境変数も追加されており、これらに1を設定することによっても従来までの挙動に戻せるようです。