Denoの今後の計画について
Deno公式からBig Changes Ahead for Denoという、Denoの今後の計画などに関する記事が公開されました。
今のところ、以下の点などに注力されていく予定のようです。
- Node.jsとの互換性の向上
- パフォーマンスの向上
- エンタープライズユーザへのサポートの強化
- 開発体験の向上
これらに関連すると思われる直近での変更について簡単にまとめてみます。
npm:
URLのサポート
現在、npm:
URLによるnpmパッケージのimportに関する開発が行われています。
例えば、以下のようにして、npmパッケージをimportすることができるようです。
import express from "npm:express@5";
import { expect } from "npm:chai@4.2";
この機能には、大まかに以下のような特徴があります。
- デフォルトでnpmパッケージはnpmの公式レジストリからダウンロードされ、
DENO_DIR
にキャッシュされます。 - Node.js互換モード(
--compat
)とは異なり、npm:
URLで読み込まれたモジュール内のみにNode.jsのグローバルAPI(process
/global
/Buffer
など)が注入されます。 - Node.js互換モード(
--compat
)とは異なり、現時点では--unstable
なしで使用できる想定のようです。 - 型チェック, LSPのサポート, エントリポイントでの
npm:
URLの指定(例:deno run npm:mkdirp path/to/dir
)などの機能はまだ入っておらず、今後追加されていく予定のようです。
この機能はおそらく、次のv1.25
でリリースされるのではないかと思われます。
新しいHTTPサーバ (Flash)
HTTPサーバの高速化を目的に、Deno本体でFlashという新しいHTTPサーバが開発されています。
既存のDeno.serveHttp()
とは異なるDeno.serve()
という新しいAPIが追加されており、これによってFlashサーバを起動することができます。
Deno.serve({
fetch: async (req) => {
return new Response(await req.text());
},
signal: abortController.signal,
});
内部的には、V8 Fast API Callsやhttp/httparseなどを活用することで高速化が図られているようで、以下のページからベンチマーク結果を閲覧できます。
この機能は次のv1.25
でリリースされる予定のようです。
deno init
コマンド
Deno本体にdeno init
コマンドを実装するPRがマージされています。
$ deno init path/to/project_dir
現時点では、エントリポイント(main.ts
)とテストファイル(main_test.ts
)の生成のみがサポートされているようですが、将来的にはdeno.json(c)
やImport mapsファイルなどのサポートも検討されているようです。
この機能も次のv1.25
でリリースされる可能性がありそうです。
Oak v11.0.0
Oak v11.0.0がリリースされました。
先述したFlashサーバの実験的なサポートが追加されており、以下に使用例が公開されています。
https://github.com/oakserver/oak/commit/2abd2e28c06f3e1ce5596142a11844525df95f97
deno_tui v1
DenoのTUIライブラリであるdeno_tuiのv1がリリースされています。