Web­Assembly

なぜRustか?

歯車

予測可能なパフォーマンス

予測できないガベージコレクションによって、動作が停止することはありません。JITコンパイラによる急激なパフォーマンス低下もありません。低レベルの制御と高レベルのエルゴミクスの両立を実現しています。

顕微鏡

小さいコードサイズ

コードサイズが小さくなるとページの読み込み速度は向上します。Rustが生成する.wasmはガベージコレクタのように必要のないものを含みません。先進的な最適化とツリーシェイキングは不要なコードを取り除きます。

荷物

モダンで快適な環境

アクティブなライブラリのエコシステムは開発を進める際に大きな助けとなります。高い表現力を持つゼロコスト抽象化も備わっています。そしてコミュニティはあなたを歓迎して学習をサポートします。

はじめましょう!

WebAssemblyロゴ

WebAssemblyと呼ばれる高速で安全かつオープンな仮想マシンについてもっと学び、そしてその標準規格を読みましょう。

もっと学ぶ
wasm フェリス

Rustを使ったWebAssemblyアプリケーションのビルド、デバッグ、プロファイル、そしてデプロイの方法を学ぼう!

ドキュメントを読む
MDNロゴ

Mozilla Developer NetworkでWebAssemblyについてもっと学ぶ

確認する

JavaScriptとのすてきな共演

置換ではなく、拡張

WebAssemblyの目的はJavaScriptを終わらせるのではなく共存して、処理が重いタスクやレイヤの低いタスクの処理をサポートすることです。これらのタスクは、パフォーマンスに重点を置くRustだからこそ恩恵を受けられると言えるでしょう。

一般的なツールチェーンとの連携

RustのWebAssemblyパッケージはnpmのようなパッケージレジストリに公開できます。webpackやParcelなどをバンドルしてリリースすることもできます。管理にはnpm auditやGreenkeeperのようなツールが使えます。

シームレスな相互運用

RustとWebAssembly、JavaScript API間をバインドするコードは自動生成できます。web-sysのようなライブラリを使えば、各ウェブプラットフォームへのバインディングをパッケージ済みの状態で提供することもできます。

本番環境での利用

cloudflareロゴ
RustをWASMにコンパイルして、サーバーレス関数から呼び出すことができます。これはとても素晴らしいことで、より多くのことをするのが待ちきれません。

– Steven Pack, Serverless Rust with Cloudflare Workers

source-mapのJavaScript実装はパフォーマンスの名の下に複雑なコードが跋扈しており、私たちはそれを表現力のあるRustに書き換えました。Rustは明確な表現とランタイムパフォーマンスのどちらか一方を選ぶよう迫ることはありません。

– Nick Fitzgerald, Oxidizing Source Maps with Rust and WebAssembly

dropbox
上記のように、[Rustの]特性を活かせば、WASMを使ってwebページにDivANSコーデックを簡単に組み込めます。

– Daniel Reiter Horn and Jongmin Baek, Building Better Compression Together with DivANS