先週のDenoの変更点

先週はDenoのリリースが行われていないため、直近のコミット内容をいくつか紹介いたします。

これらの変更が含まれると思われるDeno v1.31については、今週にリリースされる予定のようです。

deno_std/nodeのDeno本体への組み込み

今まで、deno_std/nodeDeno本体は別々に開発されていた都合もあり、Denoからnpmパッケージを利用する際は、https://deno.land/std/nodeのダウンロードが背後で行われていました。

以下のコミットなどにおいて、V8のスナップショットの仕組みを利用して、deno_std/nodeをDeno本体へ組み込む変更が行われています。

これにより、https://deno.land/std/nodeからのモジュールのダウンロードが不要になるため、起動の高速化などが期待されます。

また、deno_std/nodeがDeno本体へ組み込まれたことにより、Node.js互換レイヤーの実装でDenoの内部APIの活用が行いやすくなり、パフォーマンスの向上や今まで実装が難しかったモジュールの対応などが進みやすくなりそうです。具体的には、以下のPRでnode:v8の実装が追加されています。

今後、Node.js互換レイヤーの実装をJavaScriptからRustに置き換えていくことも検討されているようで、以下のissueで今後の計画が列挙されています。

また、これらの変更を受けて、deno_std/nodeについては削除が検討されているようです。(今後は、Deno本体のリポジトリで開発が進められるようです)

今後、もしdeno_std/nodeを利用したいケースが出てきた際は、削除前のバージョンを明示してimportをする必要が出てくるかもしれません。

import { EventEmitter } from "https://deno.land/std@0.177.0/node/events.ts";

Node-APIの安定化

以下のPRでNode-APIが安定化されました。

feat(node): stabilize Node-API #17553

これにより、Node-APIの利用に--unstableの指定が不要になるため、PrismaなどのNode-APIに依存したパッケージの活用がしやすくなるかもしれません。

deno benchコマンドでJSONレポーターがサポート

deno benchコマンドに--jsonオプションが追加されています。これを利用すると、ベンチマーク結果をJSON形式で出力することができます。

feat(bench): Add JSON reporter for “deno bench” subcommand #17595

今のところ、この機能の利用には--unstableの指定が必要な想定のようです。

$ deno bench --json --unstable

実際のJSONの出力形式については以下のissueを参照いただければと思います。

Improve deno bench –json output before 1.31 release #17775

deno test--coverage/--doc/--shuffleが安定化

今まで、deno testコマンドにおける以下のオプションはunstableとして扱われていました。

オプション説明
--coverageテストカバレッジを計測します
--docコメントやMarkdownに含まれるTypeScriptコードの型チェックを実行します
--shuffleテストの実行順をシャッフルします

以下のPRでこれらのオプションが安定化されているため、今後、これらに対して破壊的変更が行われる可能性が低くなりそうです。

chore(cli/test): stabilize coverage, doc, shuffle flags #17661

Software Design 2023年3月号

2023/02/17にSoftware Design 2023年3月号が発売されています。

@gorilla0513さんによるDenoでのサーバサイド開発に関する記事の連載が開始されています。