Deno v1.18.2
Deno v1.18.2がリリースされました。
Deno.getUid()
Deno.getUid()が実装されました。
これを使うと、現在のユーザのIDを取得できます。(Windowsだとnullが返されます)
const uid = Deno.getUid();
console.log(uid);
利用するには--allow-envと--unstableが必要です。
その他バグ修正
HOME環境変数に相対パスが設定されていると、プロセスがクラッシュする問題が修正されました。- 拡張子なしで
importしようとした際に、メディアタイプを元に拡張子を推論されるようになりました。 - クエリパラメータつきでローカルファイルを
importするとプロセスがクラッシュする問題が修正されました。 SubtleCrypto.decryptでAES-GCMによる復号を行う際に、タグ長が128ビットでないとプロセスがパニックする問題が修正されましたdeno lsp: リダイレクトが発生すると、X-Deno-Warningヘッダの内容が表示されなくなる問題が修正されました
https://github.com/denoland/deno/releases/tag/v1.18.2
deno_std v0.125.0
deno_std v0.125.0がリリースされました。
std/nodeへの機能追加などを中心に行われています。
全般
std/fs/copyやstd/node、std/osなどの--unstableが必要なモジュールを--unstableなしで使用した際に、型エラーではなく実行時エラーが発生するように修正されました。
node
- punycodeパッケージが実装されました
url.resolve()が実装されましたchild_process.spawn()などでAbortSignalがサポートされましたfs.createWriteStream()が実装されましたfs.copyFile()で4引数の形式がサポートされました
https://github.com/denoland/deno_std/commit/3b43d075ea6977e10bb1d9bd58fbeacc721a114e
deno_stdへのdotenvモジュールの追加について
dotenvモジュールをdeno_stdへ追加するPRが作成されています。
経緯については下記のissueで議論されていますが、好意的な反応が多く、次のリリースなどで追加される可能性がありそうです。
https://github.com/denoland/deno_std/pull/1877
Deno.Conn#setNoDelayとDeno.Conn#setKeepAliveの実装について
Deno.ConnにsetNoDelayとsetKeepAliveを実装するPRがマージされました。(denoland/deno#13103)
今のところ、下記のように使用することが想定されています。
Deno.Conn#setNoDelay(true)を呼ぶとNagleアルゴリズムが無効化されます (TCP_NODELAYが設定される)Deno.Conn#setKeepAlive(true)を呼ぶとTCPキープアライブが有効化されます (SO_KEEPALIVEが設定される)
この機能は次のDeno v1.19でリリースされる可能性がありそうです。
https://github.com/denoland/deno/pull/13103
Deno.run()でのIPCサポートについて
Deno.run()でIPCをサポートするPRが作成されています。(denoland/deno#13566)
今のところ、下記のような方法での使用が想定されているようです。
Deno.run()でipc: trueを指定すると、Deno.Process.ipc経由で子プロセスと通信できますconst c = Deno.run({ cmd, ipc: true }); await writeAll(c.ipc, new TextEncoder().encode("Hello")); // ... c.ipc.close();子プロセス側からは、
Deno.ipc経由で親プロセスと通信しますconst message = await readAll(Deno.ipc); // ...