Publickey Smart Edition β3

Rust言語、asm.jsやWebAssemblyをサポートへ。WebブラウザやNode.jsで実行可能に

2017年1月 4日


Mozillaが中心となってオープンソースで開発されている言語「Rust」の最新バージョン「Rust 1.14」がリリースされました

Rust言語は、C言語のように低レベルのシステム開発向けに作られた言語。不正なメモリ領域を指すポインターなどを許容しない安全なメモリ管理と、マルチスレッド実行においてデータ競合を排除した高い並列性を実現している点が特長です。Mozillaの新型高速ブラウザエンジン「Servo」の開発に使われています

Rust 1.14ではツールチェーンマネジャーの「rustup」がバージョン1.0となり、Rustのインストールを含む環境構築を司るようになりました。

At its heart, rustup is a toolchain manager for Rust. It can download and switch between copies of the Rust compiler and standard library for all supported platforms, and track Rust’s nightly, beta, and release channels, as well as specific versions.

中心にあるrustupとはRustのツールチェーンマネージャです。これはサポートされるすべてのプラットフォームで、Rustコンパイラと標準ライブラリをダウンロードし、ナイトリー、ベータ、リリースのチャンネルや特定のバージョンを追跡、切り替えます。
(「Taking Rust everywhere with rustup - The Rust Programming Language Blog」から)

そしてRust 1.14で試験的に搭載されたのが、これまでナイトリーなどではサポートされていた、asm.jsとWebAssemblyの対応です。Rustのソースコードからasm.jsやWebAssemblyを生成することで、Rustで書いたプログラムをNode.jsやWebブラウザなどで実行できるようになります。

asm.jsとはJavaScriptのサブセットで、asm.jsに最適化したJavaScriptエンジンによって非常に高速に実行できるようになっています。

この思想の延長線上にあるのがWebAssemblyで、Webブラウザでネイティブコード並に高速に実行できるバイナリフォーマットです。WebAssemblyはマイクロソフト、Google、Mozilla、Appleなどの主要なWebブラウザベンダが賛同しており、2016年10月末には各社が一斉にWebAssemblyの試験的実装について発表が行われました。現在も主要ブラウザで足並みを揃えた開発が進んでいます。

Rustでは、このasm.jsやWebAssemblyを生成するためにEmscriptenコンパイラを用いています

EmscriptenはLLVMをベースにC/C++のコードからJavaScriptやasm.jsのコードを生成できるコンパイラです。RustはEmscriptenが対応するLLVM IR(LLVM中間表現)を生成することでEmscriptenに対応。一方でEmscriptenはasm.jsだけでなくWebAssemblyを生成する機能の開発中です(WebAssemblyそのものが開発中なので)。

これらにより、試験的な機能追加ではありますがRust 1.14ではRustコードからasm.jsやWebAssemblyが生成できるようになったのです。

RustはMozillaが開発を主導しているためか、asm.jsやWebAssembly対応に非常に積極的です。現在開発が進んでいるWebAssemblyが安定的に使えるようになる頃には、C/C++に加えてRustもWebAssemblyに対応した言語として十分に使える品質に到達しているかもしれません。



≫次の記事
マイクロサービスアーキテクチャに最適化したJavaを実現するための「MicroProfile」、Eclipseの正式プロジェクトに
≪前の記事
Google Cloud Platform、システム構成図用のアイコンライブラリを公開


新着記事

Home PC版Homeへ

お知らせ:Publickey Smart Editionは、現在ベータ版として無料で試験運用中です。