Deno.spawnDeno
を追加する提案
以下のissueでDeno.spawnDeno
というAPIの追加が提案されています
背景として、まずdenoland/deno#11016でDeno.run
とは異なる新しいサブプロセスAPIが提案されました。
このissueをベースに以下のようなAPIを追加するPRが作成されていますが、まだマージはされていないようです。
// 高レベルAPI
const cmd = Deno.Command(executable, { args });
const status = await cmd.status();
// 低レベルAPI
const cmd = Deno.Command(executable, { args });
const child = cmd.spawn({ stdin: "piped" });
const writer = child.writer.getWriter();
await writer.write(buffer);
この変更は今のところv1.17のマイルストーンに入っているため、次のリリースに含まれる可能性がありそうです。
そして、今回提案されているDeno.spawnDeno
は、Node.jsにおけるchild_process.fork
に相当する機能のようで、上記のAPIをベースにサンドボックス化されたDenoのサブプロセスを起動する機能のようです。
起動する際にWorker
のdeno.permissionsと同様にパーミッションなどの指定をサポートすることが想定されています。
またこの提案に合わせて --no-permission-request
オプションの追加も提案されています。
このオプションが指定された際はDeno.permissions.request
を無効化し、Deno.spawnDeno
経由で起動されたプロセスがパーミッションのエスカレーションをできないようにすることを目的としているようです。
https://github.com/denoland/deno/issues/13041
サブステップAPIの安定化について
Deno v1.15で導入されたサブステップAPIの安定化が提案されています。
Deno v1.18での安定化が検討されているようです。
Deno.test("nested test case", async (t) => {
const success = await t.step("step 1", async (t) => {
const success = await t.step("step 1-1", () => {
throw new Error("Failed!");
});
if (!success) throw new Error("Failed!");
await t.step("step 1-2", () => {});
});
if (success) throw new Error("Failed!");
});
https://github.com/denoland/deno/issues/13055
deno-remix
esbuildなどを利用してRemixをDenoで動かすサンプルが公開されています。
https://github.com/kentcdodds/deno-remix
Trex v1.10.0
DenoのパッケージマネージャであるTrexのv1.10.0がリリースされました。
trex check
コマンドが実装され、古くなった依存モジュールのチェックがサポートされています。(現在はdeno.land/stdとdeno.land/xのみがサポートされています)