なぜRust and WebAssembly?
低レベル制御と高レベルエルゴノミクス
JavaScript製ウェブアプリは信頼性のあるパフォーマンスを達成し、維持するのに苦労します。JavaScriptの動的型システムとガベージコレクションによる停止は役に立ちません。見たところ、不運にもJITにとって良いパスを外れてしまった場合、コードの小さい変更は劇的なパフォーマンスの低下を引き起こします。
Rustはプログラマーに低レベルな制御と信頼性のあるパフォーマンスをもたらします。RustにはJavaScriptを悩ませる非決定的なガベージコレクションによる停止がありません。プログラマは間接や単相化やメモリレイアウトの制御ができます。
.wasmの小ささ
.wasmはネットワーク越しにダウンロードしなければならないので、コードサイズはとても重要です。Rustはランタイムを持っておらず、ガベージコレクタのような余分な肥大化したインクルードを持たないので.wasmのサイズを小さくできます。(コードサイズは) 実際に使う機能の分だけの負担です。
すべてを書き直さない
既にあるコードベースを捨てる必要はありません。直ちに効果を得るために最もパフォーマンスに敏感なJavaScriptの関数をRustに移植するところから始められます。そしてもしそうしたいなら、そこでやめることもできます。
他とうまく協調する
Rust and WebAssemblyは既にあるJavaScriptのツールと組み合わせられます。ECMScriptのモジュールがサポートされていて、npmやWebpackやGreenkeeperのような既に気に入っているツールを使い続けられます。
当然の快適さ
Rustは開発者が当然のものと思うようになった現代的な快適さを備えています。例えば:
- cargoを使った強力なパッケージマネジメント、
- 表現力のある (そしてゼロコストの) 抽象化、
そして歓迎的なコミュニティです!😊