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/copystd/nodestd/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#setNoDelayDeno.Conn#setKeepAliveの実装について

Deno.ConnsetNoDelaysetKeepAliveを実装する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);
    // ...
    

https://github.com/denoland/deno/pull/13566