WebAssemblyが50マイクロ秒以下で起動する「Lucet」。JavaScriptWebAssemblyが50マイクロ秒以下で起動する「Lucet」。コンパイラとランタイムをFastlyがオープンソースで公開2019年4月1日CDNプロバイダとして知られるFastlyは、WebAssemblyのコンパイラとランタイムで構成される「Lucet」をオープンソースで公開したと発表しました。WebAssemblyとは、Webブラウザ上でネイティブコードに近い実行速度で高速に実行できるバイナリフォーマットです。Groupなどを通じて共同で開発に取り組んでおり、すでに主要ブラウザで実行環境が整っています。Lucetは50マイクロ秒でWebAssemblyモジュールが起動LucetはこのWebAssemblyをWebブラウザではなく、Fastlyのエッジクラウドで高速かつ安全に実行する目的で開発されたもの。50マイクロ秒(1マイクロ秒は100万分の1秒)以下でWebAssemblyモジュールが起動し、メモリオーバーヘッドはわずか数キロバイトという、非常に高速で軽量な実行環境だと説明されています。runtime」から引用。overhead.Lucetの主な要件は、Fastlyが扱うすべてのリクエストに対応できることだった。これは、1つのプロセスにおいて1秒あたり数万ものリクエストに対応するWebAssemblyインスタンスを生成する、ということだ。これを実現するにはWebブラウザのJavaScriptエンジンよりも劇的にランタイムのフットプリントを小さくすることが求められた。LucetはWebAssemblyモジュールをわずか数キロバイトのメモリオーバーヘッドとともに、50マイクロ秒以下で起動できる。V8エンジンでは、JavaScriptもしくはWebAssemblyのプログラムの起動に起動に5ミリ秒、そして数十メガバイドとのメモリオーバーヘッドが発生する。LucetはWebAssemblyモジュールをネイティブコードへコンパイルするコンパイラと、コンパイル済みネイティブコードのリソース管理およびフォルト時のトラップなどを行うランタイムに分かれています。コンパイラはWebブラウザで一般に用いられているJITコンパイラ(Just-in-Timeコンパイラ=実行時コンパイラ)ではなく、AOTコンパイラ(Ahead-of-Timeコンパイラ=事前コンパイラ)であり、これにより大幅なシンプル化とネイティブコード実行時のオーバーヘッドを実現できたとしています。このLucetを用いたFastyのエッジクラウドは、同一プロセス内で数万ものWebAssemblyプログラムを同時に実行可能で、しかもそれぞれのWebAssemblyプログラムは自身のリソースにのみアクセスできることが保証されているため、従来と同様のセキュリティを実現できるとされています。これにより、Fastlyの顧客はWebAssemblyに対応した汎用言語で、セキュリティを気にすることなくエッジで実行可能なロジックなどを記述できるようになるとのこと。Studioに似ていますね)。TerrariumはC、TypeScript、Rust言語のいずれかで記述したプログラムをコンパイルしてWebAssemblyモジュールへ変換し、それをFasltyのエッジクラウドで実行できるWeb開発環境と実行環境を提供するもの。Lucetはそのエンジンとして使われていると説明されています。FastlyはMozillaと協力して開発FastlyはLucetの開発に関してMozillaと密接に協力しているようです。Generator」を用いています。Generatorは、中間表現からネイティブバイナリへ変換する汎用変換エンジンとして開発中ですが、LucetではこれをWebAssemblyバイナリからネイティブコードへ変換するコンパイラに用いているわけです。LucetはMozillaが標準化作業の開始を発表した「WASI」(動画では「ワズィ」と発音しているように聞こえます)への対応も表明しています。WebAssemblyはWebブラウザ上で高速にアプリケーションを実行するためのバイナリ仕様として策定されたため、LucetのようにWebブラウザ以外の環境で実行することは想定していませんでした。WASIは、OS上で実行されるアプリケーションがファイルシステムやネットワーク、メモリリソースなどへのアクセスをAPI経由で行えるのと同じように、WebAssemblyでもこれらにアクセスする標準的なインターフェイスを策定しよう、というものです。これによってWebAssemblyアプリケーションが、通常のサーバアプリケーションやデスクトップアプリケーションと同じように、WebAssemblyが持つポータビリティを保ちつつさまざまな機能を実装できるようになることを目指しています。これについては、次の記事「WebAssemblyをWebブラウザ以外の実行環境へ。システムインターフェイスへのアクセスを可能にする「WASI」の策定開始。Mozillaが呼びかけNode.jsらが賛同」で詳しく紹介していますので、ご覧ください。Workers」をすでに提供しています。エッジにおけるアプリケーション実行環境はWebブラウザと整合性のあるものになっていく流れができつつあるようです。≫次の記事WebAssemblyをWebブラウザ以外の実行環境へ。システムインターフェイスへのアクセスを可能にする「WASI」の策定開始。≪前の記事2018年の国内パブリッククラウドサービス市場規模は前年比27.2%増の6688億円。2023年には2.5倍の1兆7000億円に。Niino(jniino)IT系の雑誌編集者、オンラインメディア発行人を経て独立。2009年にPublickeyを開始しました。WebAssembly」正式版を5月にリリース。Backupに新機能。EC2インスタンスをEBSごとバックアップ/リストア可能に。クロスリージョンにも対応クラウド上のアプリケーションでもExcelファイルの入出力を可能にするライブラリ。Cloud、大容量長期アーカイブ向け「Archive」ストレージを提供開始。CodeのJava環境が強化。usPublickeyについて/運営者についてお問い合わせ広告についてプライバシーポリシ。