Deno 3.0.0-rc.0
Deno 3.0.0-rc.0 がリリースされています (#31258)
まだ dl.deno.land には公開されていないようなので、変わりに canary バージョンで説明します (3.0.0-rc.0+138b2e0)
$ deno upgrade 138b2e0e
破壊的変更
下記のタイマーAPIがWeb標準ではなく、Node.js互換 (node:timers) のAPIへと置き換えられています (#31272)
setTimeout()setInterval()clearTimeout()clearInterval()
globalThis.setTimeout()を実行すると、number型の値ではなくTimeoutオブジェクトが返却されるよう挙動が変わります。
パーミッション
--deny-*よりも--allow-*がより特定的であれば、--allow-*の方が優先されるよう挙動が変更されています (#31224)
# `docs/*`へのアクセスは拒否するが、`docs/foo.txt`についてのみ許可します (今までのバージョンでは`NotCapable`エラーが発生しました)
$ deno --allow-read=docs/foo.txt --deny-read=docs main.js
また、--allow-envと--deny-envを併用した際のDeno.env.toObject()およびprocess.envの挙動が変更されています。具体的には、以下のようにDenoを実行した際に、Deno.env.toObject()の返却結果からDENO_DIRとDENO_INSTALL_ROOTが除外されます (#31267)
$ deno run --allow-env --deny-env=DENO_DIR,DENO_INSTALL_ROOT main.js
allowScripts
deno.jsonでallowScriptsフィールドがサポートされています (#31075)
allowScriptsの詳細については先週のページを参照いただければと思います。
deno compile
deno compileコマンドで--preloadオプションがサポートされています。--preloadで指定されたスクリプトは実行可能ファイル内に組み込まれ、生成された実行可能ファイルが実行される都度、自動で--preloadオプションで指定されたスクリプトが適用されるようです (#31152)
deno repl
--eval-fileオプションで=の指定の省略がサポートされています (#31151)
$ deno repl --eval-file main.js
deno coverage
deno coverage --htmlで生成されたHTMLレポートにダークモードとライトモードを切り替えるためのトグルが追加されています (#31140)
スタックトレースの出力の改善
Denoがスタックトレースを出力する際にパスのカレントディレクトリ部分がグレーで表示されるよう変更されています (#31194)
また、視認性の改善のため、スタックフレーム中のDenoの内部コードに関する行をグレーで表示するよう改善されています (#31247)
Deno API
Deno.kill()およびDeno.ChildProcess#kill()でシグナルの数値での指定がサポートされています (#31153)
const command = new Deno.Command("deno", {
args: ["eval", "setTimeout(() => console.info('foo'), 5000)"],
stdout: "inherit",
});
const child = command.spawn();
child.kill(9);
Node.js互換性の改善
node:process
下記APIが実装されています:
ppid(#31137)process.setegid()(#31155)process.seteuid()(#31160)process.setgid()/process.setuid()(#31162)process.versions.sqlite(#31277)
node:fs
readFile()でflagオプションがサポートされています (#31129)
node:util
getSystemErrorMessage()が実装されています (#31147)
node:perf_hooks
performance.timerify() が実装されています (#31238)
node:crypto
AES-GCM向けにcreateCipheriv()でauthTagLengthオプションがサポートされています (#31253)
node:worker_threads
Workerでexitイベントが複数回発火されないよう修正されています (#31231)
Node-API
Bufferを作成する際に警告が表示される問題が修正されています (#31245)
その他
Deno内部のV8のバージョンがv14.2へアップデートされています (#31178)