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
がダウンロードされてからスクリプトの実行が開始され、foo
とbar
が出力されます:
// 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リクエストがキャンセルされた際にServerResponse
でclose
イベントが発火されるよう改善されています (#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
モジュールのBase32EncoderStream
とBase32DecoderStream
にformat
オプションが追加されており、このオプションに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
モジュールのBase64EncoderStream
とBase64DecoderStream
にformat
オプションが追加されています。
@std/encoding/unstable-base64
が追加
@std/encoding/unstable-base64
モジュールが追加されています (#6457)
既存の@std/encoding/base64
モジュールにおけるencodeBase64
とdecodeBase64
との違いとしてformat
引数がサポートされており、Base64
とBase64Url
の2種類のフォーマットを使い分けることができます。
@std/encoding/unstable-hex-stream
- output
/input
オプションの追加
@std/encoding/unstable-hex
のHexEncoderStream
にoutput
オプション、HexDecoderStream
にinput
オプションが追加されています (#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