先週のDenoの変更点
先週はDenoのリリースが行われていないため、直近のコミット内容をいくつか紹介いたします。
これらの変更が含まれると思われるDeno v1.31については、今週にリリースされる予定のようです。
deno_std/node
のDeno本体への組み込み
今まで、deno_std/nodeとDeno本体は別々に開発されていた都合もあり、Denoからnpmパッケージを利用する際は、https://deno.land/std/nodeのダウンロードが背後で行われていました。
以下のコミットなどにおいて、V8のスナップショットの仕組みを利用して、deno_std/nodeをDeno本体へ組み込む変更が行われています。
- refactor: allow to provide polyfills for Node modules from the snapshot (denoland/deno#17706)
- feat(ext/node): embed std/node into the snapshot (denoland/deno#17724)
- feat: wire up ext/node to the Node compatibility layer (denoland/deno#17785)
これにより、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が安定化されました。
これにより、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を参照いただければと思います。
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でのサーバサイド開発に関する記事の連載が開始されています。