5 ポイント 投稿者 GN⁺ 2024-02-06 | 2件のコメント | WhatsAppで共有

2023年のDenoの変化

  • Denoはpackage.jsonファイルを理解し、node:fsnode:cryptoのような組み込みNodeモジュールnode:指定子を使ってインポートできるようになった。
  • 新しいWebサーバーAPI Deno.serveが安定版となり、HTTPスループットが年間で約73%向上した。
  • deno compile はワーカー、動的インポート、npmモジュールをサポートするようになった。
  • DenoはWeb StreamsReadableStreamWriteableStream)および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:fsnode: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件のコメント

 
[このコメントは非表示になっています。]
 
GN⁺ 2024-02-06
Hacker Newsの意見
  • あるユーザーは、インターネットに接続されていない環境で Deno アプリケーションを取得する方法をまだ見つけられておらず、それに関するドキュメントがまったくないと指摘している。このユーザーは、Deno が企業環境で見込みを持つことはできないと考えている。
  • 別のユーザーは WebGPU 機能に関心を示し、Slint フレームワークを通じてブラウザや WebView なしで JavaScript/TypeScript によるデスクトップ GUI を作っていると説明している。Deno が直接ウィンドウを表示できるなら、すべてのプラットフォーム向けにネイティブバイナリの代わりに wasm を配布できるだろうと期待している。しかし、WebGPU 機能にはウィンドウを表示する API が含まれておらず、依然として追加ライブラリが必要だと付け加えている。
  • あるユーザーは Deno のコンパイル状況が改善されることを望んでおり、生成された実行ファイルが 90MB を超え、圧縮時にエラーが発生するため、Go 言語のように配布しにくいと指摘している。Deno はサイズの面で Node.js の pkg ソリューションよりも悪くなっていると言及している。
  • 別のユーザーは、Deno が Rust ホストプロセスに組み込めるよう、より大きなサポートを望んでいる。JavaScript バンドラーを作成中で、プラグインを実行するために Node.js ランタイムが必要だが、deno-core クレートは非常に基本的で組み込みにくいと述べている。Deno が JS ツールの世界で「プラグインランタイム」になれるだろうと期待しており、現在は Rust ホストプロセスから stdio を使って Node.js 子プロセスと通信していると説明している。
  • あるユーザーは JavaScript が好きではないが、Deno を使ってみて非常になめらかで高速な体験をしたと、肯定的な意見を示している。
  • 別のユーザーは、2023 年に初めて非自明な Deno アプリを本番環境にデプロイし、複数のエントリポイントを持つリポジトリで lock ファイルを同期する学習過程に苦労したものの、全体として良い経験だったと述べている。
  • Jupyter が Deno を使って JavaScript と TypeScript をサポートするようになったというニュースについて、あるユーザーは好意的な反応を示しつつも、Python が数値計算や数学に優れたサポートを提供している点に触れ、これを使いたがる人がいるのか疑問を呈している。
  • あるユーザーは、記事の末尾にリンクされた JSR のウェイトリストに登録できるとし、Deno チームが何を作っているのか気になっている。
  • Deno Deploy が GCP リージョンを 35 から 12 に減らしたというニュースへのリンクを共有したユーザーがいる。
  • Fresh という Web 開発フレームワークを使いたいが、現時点で Tailwind のみをサポートしているのは未成熟に見えると指摘するユーザーがいる。次のイテレーションで CSS バンドリングではなく View Transitions を優先することに首をかしげている。