Deno v2.3.4 & v2.3.5
Denoのv2.3.4とv2.3.5がリリースされています。
CLI
--unstable-subdomain-wildcards
が追加
--unstable-subdomain-wildcards
オプションが追加されています (#29327)
--allow-net
においてサブドメインに対するワイルドカード指定が有効化されます:
$ deno run --unstable-subdomain-wildcards --allow-net='*.github.com' main.mjs
DENO_UNSTABLE_SUBDOMAIN_WILDCARDS
環境変数によって有効化することも可能です。
DENO_USR2_MEMORY_TRIM
環境変数の導入
DENO_USR2_MEMORY_TRIM
という環境変数が導入されています (#29295)
この環境変数が設定された場合、SIGUSR2
シグナルが受信された際に、Denoがmalloc_trim(0)
でヒープの開放を行ってくれます。この環境変数はLinuxでのみ利用可能です。おそらく、後述するDeno Deploy Early Accessに関連した変更ではないかと思われます。
--frozen
オプションの拡充
deno uninstall
やdeno doc
などの一部コマンドで--frozen
オプションがサポートされていなかった問題が修正されています (#29508)
Web API
globalThis.performance
の取り扱いの変更
ユーザーコードとnpmパッケージとの間でglobalThis.performance
が同一のオブジェクトが共有されるよう挙動が変更されています (#29323)
今までは、ユーザーコードとnpmパッケージ中のコードにおいてglobalThis.performance
が異なるオブジェクトを参照していました。具体的には、ユーザーコードではWeb Performance APIsにおけるPerformance
オブジェクト、npmパッケージ中のコードではnode:perf_hooks
モジュールのPerformance
オブジェクトがそれぞれ参照されていました。
今回のリリースに伴い、ユーザーコードとnpmパッケージ中のコードの両方がglobalThis.performance
によってnode:perf_hooks
モジュールのPerformance
オブジェクトを参照するよう挙動が変更されています。
WebGPU
Deno.UnsafeWindowSurface
にresize()
というメソッドが実装されています (#29254)
このメソッドはウィンドウのサイズが変更された際に呼ばれることが想定されています。
また、GPUQueue#onSubmittedWorkDone
が実装されています (#29255)
deno lsp
deno/testRun
の改善
deno lsp
から実行したテストが失敗した際に、Deno.test()
の行ではなく実際にエラーが発生した行にエラーが表示されるよう改善されています (#29221)
プロジェクト外のdeno.json
の参照がサポート
.vscode/settings.json
のdeno.config
において、プロジェクト外のdeno.json
の指定がサポートされています (#29420)
Auto importの改善
Workspaceメンバーに対する相対パス形式ではなく bare specifier によってimport
が追加されるよう改善されています (#29304)
また、deno.json
のpatch
で指定されたjsrパッケージに対して、相対パス形式でimport
が追加される問題が修正されています (#29437)
deno task
- タスクのワイルドカード指定に関するバグ修正
deno task check:*
のようにワイルドカード形式でタスクを指定した場合、先頭一致ではなく部分一致によってタスクが探索されてしまう問題が修正されています (#29343)
deno fmt
- Tagged template内のCSSのフォーマットに関する修正
Tagged template中のCSSのフォーマット時にScssではなくLessをベースにフォーマットされるように挙動が変更されています (#29369)
deno coverage
- DENO_COVERAGE_DIR
に関するバグ修正
deno test
の実行中にサブプロセスが生成された際に、そのサブプロセスにもDENO_COVERAGE_DIR
の設定がきちんと伝播するよう修正されています (#29363)
ローカルモジュールに対するimport()
の改善
ローカルモジュールに対するimport()
の振る舞いが改善されています (#29413)
ローカルモジュールが動的に生成または更新されるケースにおいて、import()
によって古い状態のモジュールが読み込まれることやエラーが発生してしまう問題などが解消されています。
Node.js互換性の改善
require()
require()
によってnpmパッケージの読み込みを行う際にnode_modules
ディレクトリへの--allow-read
の指定が不要化されています (#29398, #29397)
node:fs
fchown()
とfchownSync()
が実装されています (#29408)
node:readline
createInterface()
が--allow-env=TERM
を要求しないよう挙動が改善されています (#29472)
node:worker_threads
Worker
の作成時にprocess
オブジェクトでworker
イベントが発火するように改善されています (#29345)
node:events
getEventListeners()
でEventTarget
がサポートされました (#29480)
node:process
process.stdin.pause()
が実装されています (#29330)
node:test
TestContext
のbefore()
とafter()
メソッドが実装されています (#29367)
また、TestContext
にassert.ok
が追加されています (#29383)
node:domain
Domain#bind
, Domain#intercept
及び Domain#run
においてコールバック関数の戻り値がこれらのメソッドの戻り値として返却されるように改善されています (#29440)
これによってgulpのサポートが改善されているようです。
node:sqlite
DatabaseSync#.exec
が戻り値としてundefined
を返却するよう修正されています (#29368)
OpenTelemetry - シグナル受信時の振る舞いの改善
SIGHUP
/SIGINT
/SIGTERM
シグナルを受信した際に、バッファリングされていたシグナルがフラッシュされるように改善されています (#29515)
Deno Deploy Early Access (EA) について
Denoの公式ドキュメントに Deno Deploy Early Access (EA) に関するドキュメントが追加されています:
現時点ではプライベートベータバージョンであり、利用には明示的な有効化が必要なようです。
deploy/early-access/index.mdのページでは、Deno Deploy Early Accessと現在のDeno Deploy (Classic)との違いなどがまとめられており、OpenTelemetryとの統合など、様々な点で改良が行われているようです。
また、deploy/early-access/reference/runtime.mdによるとDeno Deploy Early Accessにおいては通常のDeno CLIが実行されているようです (権限は--allow-all
)
Deno Deploy Early Accessに関する変更内容はdeploy/early-access/changelog.mdにまとめられているようです。
esbuildをベースにしたdeno bundle
コマンドの再導入について
まだマージはされていませんが、Deno v2で削除されたdeno bundle
コマンドを再び追加するPRが作成されています:
ae70f04時点での実装によると、以前までのdeno bundle
コマンドとは異なり、esbuildをベースに実装されているようです。
deno bundle
を実行すると、npmレジストリからダウンロードしたesbuildを利用して、Denoのモジュール解決方式に従いつつソースコードをバンドルしているようです。esbuildとの連携にはdenoland/esbuild_rsが利用されています。
この機能を利用するにはDENO_UNSTABLE_BUNDLE
もしくは--unstable-bundle
によって明示的に有効化する必要がある想定のようです。
deno_std
のリリース
deno_std
のリリースが実施されています:
@std/testing@1.0.13
@std/testing@1.0.13がリリースされています。
@std/testing/unstable-snapshot
が追加
assertInlineSnapshot()
(@std/testing/unstable-snapshot
モジュール) が追加されています (#6530)
スナップショットの更新には--update
オプションの指定が必要です。また、デフォルトではdeno fmt
コマンドでフォーマットが実施されるため--allow-run
の指定も必要です (--no-format
によって無効化可能)
また、内部的にdeno lint
のプラグインシステム (Deno.lint.runPlugin()
)を活用しているため、Deno v2.2以降でのみ動作するようです。
@std/cli@1.0.19
@std/cli@1.0.19がリリースされています。
@std/cli/unstable-progress-bar
- APIの見直し
ProgressBar
に関して以下の変更が実施されています:
ProgressBar
とProgressBarStream
のコンストラクターからwritable
引数が削除され、代わりにProgressBarOptions
にwritable
オプション (デフォルトはDeno.stderr.writable
) が追加されています(#6409)ProgressBar#add
が削除され、代わりにvalue
プロパティーとmax
プロパティーが追加されています (#6430)Spinner
との一貫性の改善のため、ProgressBar#end
がProgressBar#stop
にリネームされています (#6406)ProgressBarFormatter.styledTime
が関数からgetter
へ変更されています (#6677)ProgressBarFormatter
のstyledTime
/styledData
/progressBar
がデフォルトで[...]
で囲まれないよう修正されています (#6678)
また、ProgressBar
でWindowsにおいてリソースリークが発生する問題が修正されています (#6675)
@std/collections@1.1.1
@std/collections@1.1.1がリリースされています
@std/collections/unstable-binary-search
が追加
@std/collections/unstable-binary-search
が追加されています (#6628)
指定された配列に対して二分探索を行うためのbinarySearch()
が提供されています。
@std/dotenv@0.225.5
@std/dotenv@0.225.5がリリースされています。
プロトタイプ汚染攻撃への対策
parse()
においてプロトタイプ汚染攻撃への対策が実施されています (#6661)
@std/path@1.1.0
@std/path@1.1.0がリリースされています。
URL
オブジェクトのサポートが安定化
以下のモジュールで提供されていたURL
オブジェクトのサポートが安定化されました (#6651)
@std/path/unstable-basename
@std/path/unstable-dirname
@std/path/unstable-extname
@std/path/unstable-join
@std/path/unstable-normalize
上記のモジュールは削除され、unstable-
プレフィックスがつかない同名モジュールへマージされています。
@std/random@0.1.2
@std/random@0.1.2がリリースされていまうs.
@std/random/get-random-values-seeded
と@std/random/next-float-64
が追加
実験的モジュールとして@std/random/get-random-values-seeded
と@std/random/next-float-64
が追加されています (#6626)
@std/yaml@1.0.7
@std/yaml@1.0.7がリリースされています・
yaml/unstable_stringify.ts
が追加
yaml/unstable_stringify.ts
が追加されています (#6666)
@std/yaml/stringify
との違いとしてquoteStyle
オプションがサポートされており、出力される文字列で使用されるクォーテーションを柔軟にコントロールできます。
@std/toml@1.0.7
@std/toml@1.0.7がリリースされています。
@std/toml/parse
- 0
から始まる数値の扱いが改善
parse()
で0
から始まる数値が検出された際に、エラーが発生するよう改善されています (#6681)
vlt
がJSRをサポート
vltでJSRのサポートが追加されたようです:
pnpmとYarnに続けて、JSRをサポートしたパッケージマネージャーが少しずつ増えています。