先日ScalaのWasmバックエンド(JS依存)をリリースし、さて次はこれをJS依存のないスタンドアローンWasmランタイム(wasmtime, wasmedgeなど)で実行できるようにしようと思っている。そのためにはいくつかの標準ライブラリをWASIを利用して再実装してあげる必要がある。 WASI preview1 と preview2 WASIにはpreview1とpreview2、2つのバージョンがあり: WASI preview1 多くのVMでサポートされていて安定している WasmのimportによってWASI関数を利用でき、Wasm moduleに特別な変更を加えずに利用可能 インターフェース部分はすべてi32などのWasm1.0の型しか利用できず、データは主にlinear memoryを介してやり取りする WASI preview2 Wasm Component Model
WebAssemblyをコンテナイメージとし、コンテナレジストリなどで配布可能にする「Wasm OCI Artifact layout」仕様が登場 WebAssemblyコンポーネントをコンテナイメージとしてDockerレジストリなどで配布可能にする「Wasm OCI Artifact layout」が、「WASI 0.2.1」仕様の一部として公開されました。WASIを推進するBytecode Allianceが発表しました。 WASI(WebAssembly System Interface)は、WebAssemblyをWebブラウザだけでなくサーバサイド上のランタイムなどでも実行可能にする仕様で、W3CのWASIサブグループ(WASISG)が策定しています。 コンポーネントモデルを備えたWASI 0.2が登場 WebAssemblyはもともとWebブラウザ上で高速に実行可能なバイナリフ
.NETでWebAssemblyの最新仕様「WASI Preview 2」対応コンポーネントを作れる「componentize-dotnet」、Bytecode Allianceがオープンソースでリリース WebAssemblyの普及と発展を目的とするByteCode Allianceは、WebAssemblyのコンポーネントモデルである「WASI Preview 2」仕様に対応したコンポーネントを、C#などの.NETテクノロジーを使って開発できるツール「componentize-dotnet」をオープンソースとしてリリースしました。 WASI Preview 2はWebAssemblyのコンポーネントモデル WebAssemblyはもともと、Webブラウザ上で高速に実行可能なバイナリフォーマットとして登場しました。さまざまなプログラミング言語から生成可能なバイナリであり、OSやCPUに依
Moonbit が Component Model に対応した。 これはずっと自分がほしかった機能で、これによって moonbit が実用言語に一つ近づいたと思う。やっていきたい。 何が可能になったか できることになった例 Moonbit で書いたコードを TypeScript で型をつけて呼び出せる rust-wasm で生成した wasm コードを moonbit で呼べる wasi で CLI, wasi-http でサーバーが書けるようになる component-model とは wasm はそのままだと数値の関数呼び出ししかインターフェースを持てない。 component-model は wit という IDL でインターフェースを宣言して、wasm バイナリにインターフェースを埋め込む。 利用側(guest)は埋め込まれたインターフェースから 自分の言語用の呼び出しコードを生成
手書きWebAssembly Component ModelでHello world! #ヌーラボ真夏のブログリレー2024 ヌーラボの松本です。これはヌーラバー真夏のブログリレー2024の2日目の記事です。 以前の記事でWebAssemblyテキスト形式でWebAssemblyコンポーネントを手書きして、 実行できるWebAssemblyバイナリを作成しました。 本記事では、そこからさらにWASIで定義されている出入力APIを使って標準出力にHello world!を表示させる Wasmバイナリを作っていきます。 標準出力に用いるインタフェース・メソッドを調べる まずは標準出力を使うためのインタフェースを見ていきましょう。WASI 0.2ではcli/stdioというインタフェースが用意されていますので、まずはそのWITを見てみます (stdio.witに定義されているインタフェースは他に
やりたいことRuby の環境を作らずに基本的なスクリプトを動作させたい 非エンジニアの環境で 1 ファイルでコマンドを動作させたいというほどの環境の縛りはない簡単に Docker 環境で基本的なコードが動けばよい、程度今回できたことWasm 版 Ruby を Wasm Runtime 上で動かす基本的な Ruby コードと Wasm 版 Ruby を一つの Wasm module にパッケージし、それを Wasm Runtime 上で動かす さらに Wasm module を compile しておいて起動を速くする(Rubyについてはまだまだ課題は多いが)Wasm を使うことで直接実行バイナリを生成できない言語でも JVM + .war 程度の使い勝手である程度のことができることが分かった実験に使ったのは macOS 13.6.7 ( arm64 darwin 22 )Ruby 3.2.
色々あって WebAssembly の component model を調べていたら、未来が見えた気がしたのでここに書いておきます。 「今の WebAssembly」 とは何か WebAssembly の Web の部分は忘れてください。これは単に JVM version 20xx です。ポータブルなバイナリ仕様です。 実行にあたっては今はホスト言語として JS が使われていますが、実際にはホストがJSである必要すらなく、なんならホストが不要なスタンドアロン環境すらあります。(wasmtime/wasmer) じゃあ WebAssembly は何かというと、サンドボックスで実行される VM の仕様です。比較的高水準なバイナリで、 V8 や Spider Monkey に付属する WebAssembly Runtime や、 Wasmtime や Wasmer といった WebAssemb
WASI 0.2 was recently stabilized, and Rust has begun implementing first-class support for it in the form of a dedicated new target. Rust 1.78 will introduce new wasm32-wasip1 (tier 2) and wasm32-wasip2 (tier 3) targets. wasm32-wasip1 is an effective rename of the existing wasm32-wasi target, freeing the target name up for an eventual WASI 1.0 release. Starting Rust 1.78 (May 2nd, 2024), users of W
WebAssemblyを進化させる「WASI Preview 2」が安定版に到達。OSや言語に依存しないコンポーネントモデルを実現 WebAssembly関連仕様の標準化を行っているW3C WebAssembly Community GroupのWASI Subgroupミーティングにおいて、2024年1月25日に行われた投票で「WASI Preview 2」(もしくはWASI 0.2.0)仕様が承認され、安定版に到達したことが明らかになりました。 WASI Preview 2では、WebAssemblyアプリケーションがOSなどのプラットフォームに依存せず、さまざまなプログラミング言語で開発したWebAssemblyコンポーネントを組み合わせて開発できるように、「コンポーネントモデル」とそのインターフェイスを記述するIDL(Interface Definition Language)であ
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く