2023年のDenoの変化
- Denoは
package.jsonファイルを理解し、node:fsやnode:cryptoのような組み込みNodeモジュールをnode:指定子を使ってインポートできるようになった。
- 新しいWebサーバーAPI
Deno.serveが安定版となり、HTTPスループットが年間で約73%向上した。
deno compile はワーカー、動的インポート、npmモジュールをサポートするようになった。
- DenoはWeb Streams(
ReadableStreamとWriteableStream)およびAbortControllerをAPI全体でもっと活用し、ブラウザとサーバーサイドプログラミングのギャップを縮めた。
- Denoの設定ファイル
deno.jsonは、今ではインポートマップとしても使われ、スキーマが簡素化され、グロブ対応と便利なトップレベルの"exclude"プロパティが追加された。
- オープンソースのノートブックツールであるJupyterが、JavaScriptとTypeScriptを使ってDenoをサポートするようになった。
- WebGPUが約1年にわたる開発を経てDenoに追加された。
- Denoのゼロ設定TypeScriptは、LSPとVS Code統合の大幅な改善によって、エディタ統合がさらに向上した。
- DenoベースのWebフレームワークであるFreshは、Tailwind対応、Partials、レイアウトファイルなどへと機能が拡張された。
- Deno Deployは、Deno KV、Queues、Cronのような世界規模で分散されたプリミティブによって、より強力になった。
- プラットフォームが信頼できないマルチテナントJavaScriptをデプロイして実行できるように、セルフサービスのサブホスティングを開始した。
Nodeおよびnpmとの互換性向上
- Denoは
node:指定子を通じて、node:fsやnode:child_processのような組み込みNodeモジュールを含め、Nodeエコシステムとの互換性を拡張した。
- NodeからDenoへのスムーズな移行のために、複数の新機能を導入した。
--unstable-byonmフラグを使うと、好みのnpmパッケージマネージャーをDeno内で利用できる。
--unstable-sloppy-importsフラグはモジュールインポートの厳格さを緩和し、さまざまなコーディングスタイルや慣行に対応する。
--unstable-unsafe-protoフラグは、多くのnpmパッケージが依存するObject.prototype.__proto__をサポートする。
- Node-APIの安定化により、
--unstableフラグなしでNode-APIに依存するnpmパッケージを使えるようになり、サポート範囲が広がった。
Deno.serve()によるよりシンプルで高速なWebサーバー
Deno.serve()関数を導入して安定化し、開発者が最小限のコードでサーバーを起動できるようにした。
- コアライブラリとイベントループ機構に対する的を絞った最適化によって、性能が大きく向上した。
- DenoのHTTPスループットは、基本的な"Hello, world"サーバー構成を使ったベンチマークテストで目に見えて増加した。
より柔軟なdeno.json
- Denoは複雑な設定なしで使えるプログラミング原則を志向しており、
deno.json設定ファイルを継続的に改善して使いやすさを保っている。
deno.jsonをインポートマップとしても使えるようにした。
deno fmtはセミコロンをサポートし、コードスタイルの柔軟性を提供する。
package.jsonとの統合により、NodeとDeno環境の間の移行が容易になった。
deno.jsonの構造を簡素化し、開発者がより直感的にたどれるようにした。
- グロブパターンの導入により、ファイルやディレクトリの包含または除外をより細かく制御できるようになった。
LSPによるよりスムーズな開発体験
- DenoのLanguage Server Protocol(LSP)統合は、正確な定義へのジャンプ、包括的なIntelliSense、TypeScriptプロジェクト向けのシームレスなコードフォーマットなどの機能を提供する。
- LSP改善のために多くの努力が払われ、Denoでのコーディングがよりスムーズで直感的になった。
WebGPU
- WebGPUは、開発者がJavaScriptを使ってGPUハードウェアの性能を直接活用できる先進技術をDenoに統合する。
- WebGPUは
--unstable-webgpuフラグのもとで利用でき、Denoアプリケーションの機能を拡張する重要なマイルストーンである。
Jupyterノートブック
- オープンソースのノートブックツールであるJupyterが、JavaScriptとTypeScriptを使ってDenoをサポートするようになった。
- これにより、データサイエンスや可視化などを、モダンなJavaScriptとTypeScript、およびWeb標準APIを使って行えるようになった。
注目すべきオープンソースRustクレート
- Denoはさまざまなオープンソースプロジェクトと連携しており、Denoの機能セット拡張や性能最適化のために積極的に貢献している。
- 今年Denoはいくつかの、単独でも有用なRustクレートを公開した。
Fresh
- Freshは、クライアントサイドJavaScriptをデフォルトでは送信しないDenoのモダンなフルスタックWebフレームワークであり、使いやすさと性能向上のために継続的に改善されている。
Denoのクラウドビジネス拡大
- Deno Subhostingは、Netlifyのエッジ関数やDeco.cxの顧客向けeコマースストアを支援する中で、独自サービスへと移行し、誰でも無料で利用できるようになった。
- Deno KV、Queues、Cronのようなクラウドプリミティブを公開し、Web開発を根本的に簡素化するというビジョンに向けて前進した。
Deno 2
- Deno 2は、Nodeおよびnpmとの互換性向上や、プロジェクトの依存関係の管理・最適化に関する興味深い発表を含む、改善されたランタイムを提供する予定である。
GN⁺の意見:
- DenoがNode.jsとの互換性を大幅に高め、Web開発の簡素化に重点を置いている点は重要である。これは既存のNode.js開発者にとってDenoへの移行を容易にし、Deno採用を促進しうる。
- WebGPUのような先進機能の統合は、Denoが単なるサーバーサイドプラットフォームを超えて、より幅広いアプリケーション開発に適したものになっていることを示している。これは特に、GPUを活用した高性能計算を必要とする開発者にとって魅力的でありうる。
- FreshフレームワークとDeno Deployの発展は、DenoがフルスタックWeb開発で重要な役割を果たしうることを示唆し、クラウドベースサービスとしてのDenoの立ち位置を強化している。こうした進展により、DenoがモダンWeb開発の主要プレイヤーとして定着する可能性が高まっている。
2件のコメント
Hacker Newsの意見
deno-coreクレートは非常に基本的で組み込みにくいと述べている。Deno が JS ツールの世界で「プラグインランタイム」になれるだろうと期待しており、現在は Rust ホストプロセスから stdio を使って Node.js 子プロセスと通信していると説明している。