作成者: Till Schneidereit
本日、新しい JavaScript SDK が利用可能になったことを発表できることを嬉しく思います。この SDK は以前の JavaScript SDK を完全に書き直したもので、エコシステムの互換性、標準への準拠、堅牢性、主要な新機能が大幅に向上しています。
このリリースでは、大幅なパフォーマンスの向上と、既存の JavaScript アプリケーションとの互換性の継続的な改善に向けた道筋も立てられます。
同時に、以前の SDK との高い互換性も維持しているため、ほとんどのユーザーにとってアップグレードは簡単です。
このリリースの新機能と相違点について詳しく見てみましょう。
SpiderMonkey、StarlingMonkey、ComponentizeJS の堅牢な基盤の上に構築
以前の SDK は QuickJS JavaScript エンジンと Javy ランタイムの上に構築されていましたが、新しい SDK は Firefox ブラウザの SpiderMonkey エンジン、Bytecode Alliance の StarlingMonkey ランタイム、および ComponentizeJS WIT バインディング ジェネレーターの上に構築されています。
これらのプロジェクトが連携して、SDK の素晴らしい基盤を提供します。
-
SpiderMonkey は、Firefox ブラウザを強化する JavaScript エンジンです。 20 年以上開発されており、毎日何百万人ものユーザーが使用しており、大手ブラウザ エンジンだけが実現できる程度の成熟度を誇っています。
-
StarlingMonkey は、Fastly の友人と協力して構築し、Bytecode Alliance に貢献した JavaScript ランタイムです。これは高度にモジュール化された方法で SpiderMonkey 上に構築されているため、ユースケースの必要に応じて簡単に構成できます。重要なのは、送信 HTTP リクエストを処理するためのフェッチ API、受信リクエストを処理するための Service Worker 仕様の主要部分、およびウェブの Streams API streamssetTimeout および setInterval.
- **ComponentizeJS **は、WITインターフェース記述言語で定義された外部インターフェースをJavaScriptで利用できるようにするツールです。これにより、WASI に含まれるものに加えて Spin が提供するインターフェイスだけでなく、Rust、Go、Python、C/C などの他の言語で書かれたコンポーネントを含む他の WebAssembly コンポーネントに実装された機能も簡単に使用できるようになります。
内部では大幅な変更、表面では小さな調整
上で説明したように、JS サポートの新しい実装は古い実装とほとんど変わりません。幸いなことに、JavaScript には非常に堅牢な仕様があるため、既存のコードが微妙に破損する危険を冒さずにこれらすべてを実行できるということです。新しい SDK にはわずかに調整された API が付属しており、既存のプロジェクトをアップグレードする際にも同様にわずかな変更が必要ですが、基盤となるプラットフォームを完全に置き換えても、互換性への影響はありません。
そこから、新しい SDK がもたらす新機能の利用を開始できます。特に、既存のコードを完全に書き直すことなく、ストリーミング HTTP ボディを簡単に統合できるように API を微調整しました。
新しい標準ベースの API
フェッチ API と Service Worker 仕様標準に加えて、既存の API (のわずかに調整されたバージョン) のサポートを実装しました。開発者は希望に応じてこれらの標準を直接使用することを選択でき、より広範な Web および JS エコシステムとの互換性が大幅に向上します。
標準はまったく異なる方法でも役立ちます。HTTP サポートはすべて wasi-http を使用して構築されるため、同様にサポートされている Spin 固有の API を使用しない新しい SDK で構築されたアプリケーションも実行できます。 Wasmtime や Node.js (JCO 経由) など、wasi-http をサポートする任意の環境。
ほんの始まりにすぎない
このリリースでは、JavaScript サポートの基盤となるプラットフォームをドロップイン互換の方法で変更することに重点を置きましたが、同時に最新の Web 標準のサポート、他の WebAssembly コンポーネントとの組み合わせ可能性、将来に向けたより堅牢で成熟した基盤をすでに獲得しています。開発。
今後、パフォーマンス、互換性、新機能が急速に向上するでしょう。チラ見せとして、現在進行中の最もエキサイティングな開発の一部を以下に示します。
-
パフォーマンスの向上: Fastly チームは、WebAssembly での JavaScript 実行の大幅なパフォーマンスの向上に取り組んできました。この作業の最初の反復が StarlingMonkey に統合されたばかりで、正確なワークロードに応じて、すでに数倍高速に実行されています。この統合は昨日リリースされたばかりなので、まだ JS SDK には統合されていませんが、間もなく統合される予定です。
-
Web および JavaScript エコシステムとの互換性の向上: StarlingMonkey の重要な改善に近づいています。ランタイム自体の一部と、ランタイムが提供する Web API の一部を C ではなく Rust で実装できるようになりました。 。これにより、Web エコシステムの最新の開発に追いつくことがはるかに簡単になり、既存の JavaScript アプリケーションとの互換性にとって重要な Web API のより完全で互換性のある実装を提供することが可能になります。すべての JS コードが (Web) 標準ベースの API を使用しているわけではありません。世の中の多くのコードは Node.js API を使用しています。私たちは、開発者が Spin アプリケーションで API を使用できるように、これらの API に互換性レイヤーを提供することに取り組んでいます。
-
より多くのトリガー タイプのサポート: 現在、新しい JavaScript SDK は HTTP トリガーのみをサポートしています。私たちは、Cron トリガーや Redis トリガーなど、より多くのトリガー タイプのサポートを追加することに取り組んでいます。
## 連絡を取り合いましょう
この新しい SDK を皆様と共有できることを大変うれしく思います。今後も改善を続けていく中で、皆様からのフィードバックや貢献を楽しみにしています。 Fermyon Discord サーバーのチャットまたは毎週のプロジェクト ミーティングに参加し、X (旧 Twitter) @fermyontech と @spinframework をフォローしてください!
以上が次世代 JavaScript SDK の紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。