Deno v2.2.6

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

静的解析可能なdynamic importの遅延読み込み (--unstable-lazy-dynamic-imports)

--unstable-lazy-dynamic-importsが実装されました (#28593)

以下のスクリプトを実行する場合、通常であれば、まずはjsr:@std/text@1.0.12/unstable_dedentがダウンロードされてからスクリプトの実行が開始され、foobarが出力されます:

// main.js
console.info("foo");
await import("jsr:@std/text@1.0.12/unstable_dedent");
console.info("bar");

--unstable-lazy-dynamic-importsまたは"unstable": ["lazy-dynamic-imports"]を指定した場合、まずfooが出力されてからjsr:@std/text@1.0.12/unstable_dedentのダウンロードが開始され、その後にbarが出力されるよう挙動が変更されます。

Node.js互換性の改善

peerDependenciesの解決方法が変更

peerDependenciesに関する解決ロジックが変更されています。peerDependenciesで要求されるあるパッケージに関して、バージョンがマッチしない場合であっても、該当のパッケージが見つかった際はそれを使用するように修正されているようです (#28616)

この挙動が適用された際はWarning The following peer dependency issues were foundという警告が表示されます。

将来的にオプションを導入して、任意でDeno v2.2.5までの挙動に戻せるようにすることも検討されているようです。

node_modules/.binが作成されないことがある問題の修正

deno outdated --updateでnpmパッケージを更新すると、そのパッケージがnode_modules/.bin からなくなってしまうことがある問題が修正されています (#28626)

node:fs - mkdir()のバグ修正

mkdir()modeオプションに文字列を指定するとTypeErrorが発生する問題が修正されています (#28609)

node:http - イベントの取り扱いの改善

HTTPリクエストがキャンセルされた際にServerResponsecloseイベントが発火されるよう改善されています (#28601)

また、IncomingMessageが保持するsocketで適切にcloseイベントが発火されていなかった問題も修正されています (#28582)

パフォーマンス改善

deno installによるnpmパッケージのインストールが高速化されています (#28636)

パッケージのメタ情報をファイルシステムからではなくインメモリのキャッシュから読み込むようにすることで高速化が図られているようです。

Web Crypto API

ECDSAに関する改善

ECDSAを使用する際にSubtleCrypto#verify及びSubtleCrypto#signにおいて任意の曲線とハッシュの組み合わせが利用できるよう改善されています (#28574)

deno_stdのリリース

deno_stdのリリースが行われています (release-2025.03.25)

@std/uuid@1.0.6 - UUIDv6の実験的サポート

@std/uuid@1.0.6がリリースされています。

UUIDv6が実験的にサポートされています (#6415)

@std/uuid/unstable-v6モジュールから利用できます。

@std/encoding@1.0.8

@std/encoding@1.0.8がリリースされています。

@std/encoding/unstable-base32hex-streamが削除

@std/encoding/unstable-base32hex-streamモジュールが削除されています (#6452)

代わりに@std/encoding/unstable-base32-streamモジュールのBase32EncoderStreamBase32DecoderStreamformatオプションが追加されており、このオプションにBase32Hexを指定することで同様のことが実現できます。

@std/encoding/unstable-base32crockford@std/encoding/unstable-base32hexが削除

@std/encoding/unstable-base32crockford@std/encoding/unstable-base32hexが削除されています (#6471)

代わりに@std/encoding/unstable-base32モジュールが追加されています。このモジュールで提供されるencodeBase32()/decodeBase32()format引数でBase32HexまたはBase32Crockfordを指定することで代替できます。

@std/encoding/unstable-base64url-streamが削除

@std/encoding/unstable-base64url-streamモジュールが削除されています (#6451)

代わりに@std/encoding/unstable-base64-streamモジュールのBase64EncoderStreamBase64DecoderStreamformatオプションが追加されています。

@std/encoding/unstable-base64が追加

@std/encoding/unstable-base64モジュールが追加されています (#6457)

既存の@std/encoding/base64モジュールにおけるencodeBase64decodeBase64との違いとしてformat引数がサポートされており、Base64Base64Urlの2種類のフォーマットを使い分けることができます。

@std/encoding/unstable-hex-stream - output/inputオプションの追加

@std/encoding/unstable-hexHexEncoderStreamoutputオプション、HexDecoderStreaminputオプションが追加されています (#6453)

任意でこれらのオプションに"bytes"を指定することで、入力や出力としてUint8Arrayを取り扱えるよう改善されているようです。

@std/encoding/unstable-hexの追加

@std/encoding/unstable-hexモジュールが追加されています (#6480)

16進数の文字列に関するAPIを提供してくれます。

@std/cache@0.2.0 - memoize()errorIsCacheableオプションが追加

@std/cache@0.2.0がリリースされています。

memoize()errorIsCacheableオプションが追加されています (#6419)

メモ化対象の関数で例外が発生した際に、そのエラーをキャッシュするかどうかを制御できます。

この追加にあわせて、memoize()cacheオプションの型が若干変更されています。MemoizationCacheResultという新しい型が導入されており、今まではcacheオプションはMemoizationCache<Key, ReturnType<Fn>>という型でしたが、今後はMemoizationCache<Key, MemoizationCacheResult<ReturnType<Fn>>>を満たすオブジェクトを指定する必要があります。

@std/cbor@0.1.7 - BigIntのサポート

@std/cbor@0.1.7がリリースされています。

encodeCbor()decodeCbor()BigIntがサポートされています (#6458)

@std/text@1.0.12 - dedent()の追加

@std/text@1.0.12がリリースされています。

@std/text/unstable_dedentモジュールが追加されています (#6500)

指定された文字列からインデントを削除してくれます。

@std/fs@1.0.15 - Node.jsサポートの改善

@std/fs@1.0.15がリリースされています。

Node.jsサポートの改善に向けて、以下のモジュールが追加されています:

  • @std/fs/unstable-make-temp-file (makeTempFile()/makeTempFileSync()が提供されます)
  • @std/fs/unstable-write-text-file (writeTextFile()/writeTextFileSync()が提供されます)
  • @std/fs/unstable-write-file (writeFile()/writeFileSync()が提供されます)

@std/front-matter@1.0.9 - BOMや空データの取り扱いのサポート

@std/front-matter@1.0.9がリリースされています。

BOMを含むFront Matterや空のFront Matterの取り扱いがサポートされています (#6507, #6481)

@std/toml@1.0.3 - 2/8/16進数の取り扱いの改善

@std/toml@1.0.3がリリースされています。

2/8/16進数の値がJavaScriptのNumber型として取り扱われるよう改善されています (#6496)

deno add/deno installへの--npm/--jsrオプションの追加について

まだマージはされていませんが、deno addコマンドとdeno installコマンドに--npm--jsrの2つのオプションを追加するPRが作成されています:

パッケージを依存関係として追加する際に、npm:jsr:の指定を省略できるようです:

# (1) `npm:chalk`, `npm:p-queue`, `jsr:@std/text`の3パッケージを追加
$ deno add --npm chalk p-queue jsr:@std/text

# (2) `npm:chalk`, `jsr:@std/text`, `jsr:@std/tar`の3パッケージを追加
$ deno add --jsr npm:chalk @std/text @std/tar