WebAssembly ベースのアプリケーションを構築するためのツールキットである Wasmer 2.0 が利用可能になりました

Wasmer プロジェクトは、XNUMX 番目のメジャー リリースをリリースしました。このランタイムは、さまざまなオペレーティング システム上で実行できるユニバーサル アプリケーションの作成や、信頼されていないコードを分離して実行するために使用できる WebAssembly モジュールを実行するためのランタイムを開発しています。 プロジェクト コードは Rust で書かれており、MIT ライセンスに基づいて配布されます。

移植性は、アプリケーション コードを低レベルの WebAssembly 中間コードにコンパイルすることによって実現されます。このコードは、任意の OS 上で実行したり、他のプログラミング言語のプログラムに埋め込んだりできます。 これらのプログラムは、WebAssembly 疑似コードを実行する軽量のコンテナーです。 これらのコンテナーはオペレーティング システムに関連付けられておらず、もともと任意のプログラミング言語で記述されたコードを含めることができます。 Emscripten ツールキットを使用して、WebAssembly にコンパイルできます。 WebAssembly を現在のプラットフォームのマシン コードに変換するために、さまざまなコンパイル バックエンド (Singlepass、Cranelift、LLVM) とエンジン (JIT またはマシン コード生成を使用) の接続がサポートされています。

アクセス制御とシステムとの対話は、WASI (WebAssembly System Interface) API を使用して提供されます。この API は、オペレーティング システムが提供するファイル、ソケット、その他の機能を操作するためのプログラミング インターフェイスを提供します。 アプリケーションはサンドボックス環境のメイン システムから分離されており、宣言された機能 (各リソース (ファイル、ディレクトリ、ソケット、システム コールなど) に対するアクションの機能管理に基づくセキュリティ メカニズム) にのみアクセスできます。アプリケーションには適切な権限を与える必要があります)。

WebAssembly コンテナを起動するには、外部依存関係なしで Wasmer をランタイム システムにインストールし (「curl https://get.wasmer.io -sSfL | sh」)、必要なファイル (「wasmer test.wasm」) を実行するだけです。 )。 プログラムは通常の WebAssembly モジュールの形式で配布され、WAPM パッケージ マネージャーを使用して管理できます。 Wasmer は、WebAssembly コードを Rust、C/C++、C#、D、Python、JavaScript、Go、PHP、Ruby、Elixir、Java プログラムに埋め込むために使用できるライブラリとしても利用できます。

このプラットフォームを使用すると、ネイティブ アセンブリに近いアプリケーション実行パフォーマンスを実現できます。 WebAssembly モジュールのネイティブ オブジェクト エンジンを使用すると、マシン コード (プリコンパイルされた .so、.dylib、および .dll オブジェクト ファイルを生成する「wasmer combile -native」) を生成できます。実行に必要なランタイムは最小限ですが、すべてのサンドボックス分離は保持されます。特徴。 Wasmer が組み込まれたプリコンパイル済みプログラムを提供することが可能です。 Rust API と Wasm-C-API は、アドオンと拡張機能を作成するために提供されています。

Wasmer のバージョン番号の大幅な変更は、内部 API への互換性のない変更の導入に関連しており、開発者によると、プラットフォーム ユーザーの 99% には影響しないとのことです。 互換性を損なう変更の中には、シリアル化された Wasm モジュールの形式の変更もあります (Wasmer 1.0 でシリアル化されたモジュールは、Wasmer 2.0 では使用できなくなります)。 その他の変更点:

  • SIMD (単一命令、複数データ) 命令のサポートにより、データ操作の並列化が可能になります。 SIMD を使用するとパフォーマンスが大幅に向上する可能性がある分野には、機械学習、ビデオのエンコードとデコード、画像処理、物理プロセス シミュレーション、グラフィックス操作などがあります。
  • 参照型のサポートにより、Wasm モジュールが他のモジュールまたは基礎となる環境の情報にアクセスできるようになります。
  • 大幅なパフォーマンスの最適化が行われました。 浮動小数点数を使用した LLVM ランタイムの速度が約 50% 向上しました。 カーネルへのアクセスが必要な状況が減少することで、関数呼び出しが大幅に高速化されました。 クレーンリフト コード ジェネレーターのパフォーマンスが 40% 向上しました。 データの逆シリアル化時間が短縮されました。
    WebAssembly ベースのアプリケーションを構築するためのツールキットである Wasmer 2.0 が利用可能になりました
    WebAssembly ベースのアプリケーションを構築するためのツールキットである Wasmer 2.0 が利用可能になりました
  • 本質をより正確に反映するために、エンジンの名前が変更されました: JIT → Universal、Native → Dylib (動的ライブラリ)、Object File → StaticLib (静的ライブラリ)。

出所: オープンネット.ru

コメントを追加します