タグ

ブックマーク / zenn.dev/chikoski (5)

  • Hello, world! with Wasm Component(ライブラリー編)

    前回までのあらすじ: cargo-componentを使ってWebAssemblyコンポーネント(Wasmコンポーネント)を作りました Wasmtimeで実行しました wasm-toolsを使って作成したコンポーネントのワールドを出力しました 今回の内容: WebAssembly Interface Type(WIT)を使ってWasmコンポーネントのインターフェースを定義します wit-bindgenの力を借りつつ、インターフェースをRustで実装します 実装したWasmコンポーネントをコンポーネントレジストリーに登録します。 用意するもの Rustのツールチェーン cargo-component Wasmtime wasm-tools 前回作成したhello-wasm-cliプロジェクト hello-wasm-cliプロジェクトは次のようなフォルダー構成をしています: . ├── Car

    Hello, world! with Wasm Component(ライブラリー編)
  • Hello, world! with Wasm Component

    TL;DR cargo-componentを使うと、Wasmコンポーネントを作成するためのRustプロジェクトを作成できます 作成したWasmコンポーネントはWasmtimeを使って実行できます 作成したWasmコンポーネントはwasi:cli/runインターフェースを実装しています 必要なツール 必要なツールは次の4つです。 Rustのツールチェーン cargo-component Wasmtime wasm-tools Rustのツールチェーンはこちらに説明があります。 cargo-component cargo-componentは、Wasmコンポーネントの管理を行うためのRustのパッケージ管理ツールであるCargoのサブコマンドです。今回はプロジェクトの作成とビルドに利用します。 cargo-componentはCargoを使ってインストールできます: Usage: cargo

    Hello, world! with Wasm Component
  • RustによるマクロサービスフレームワークSpin入門

    この記事はAdvent of Spin 2023というオンラインチャレンジに参加した結果してSpinに入門した結果のまとめとなっています。学んだことのまとめですが、Spin入門としても利用いただけるかなとも思っています。 TL;DR マクロサービスフレームワークのSpinをつかって、Rustでマイクロサービスを作ります。 JSONのやり取りや、key-valueストアの利用、ルーティングがカバーされています。 Hurlというツールを使ってテストファースト開発します。 Spinとは? Spinとはマイクロサービスを作成するためのフレームワークで次の特徴があります。 イベント駆動型のフレームワーク HTTP(S)とRedisにデフォルトで対応 いくつかのストレージに標準で対応 イベントハンドラーはWasmコンポーネントとして実装される WASI preview 2に対応 開発元が配布しているコ

    RustによるマクロサービスフレームワークSpin入門
  • Rustで学ぶWebAssembly Interface Type入門

    TL;DR Wasmコンポーネントのインターフェースを定義する言語です パッケージという形で名前空間を提供します インポートとエキスポートの定義のことをワールド(world)と呼びます 注意:仕様策定中の技術を扱っています。仕様作成の進行によっては、内容が正しくない場合があります。 背景 Wasmモジュールにはi32、i64, f32, f64の4種類のデータ型しか存在しません。また文字列やユーザー定義型のような構造を持つデーターの表現にも標準が存在せず、データをどのようにメモリ上に配置方法はプログラミング言語の処理系、またはプログラマーが決めるものとされていました。 例えば、次のようなデータ構造と、それに対する操作があったとします。 pub struct Point { x: i32, y: u8, z: u16, } #[no_mangle] pub fn hash(point: &P

    Rustで学ぶWebAssembly Interface Type入門
    igrep
    igrep 2023/12/16
    wit-bindgenってRustだけじゃないんだなぁ。すごい。あとwasmtime.py知らなかった
  • Visula Studio Code WIT IDL plugin

    TL;TR WebAssembly Interface Typeで、Wasmコンポーネントのインタフェースを記述できます Visual Studio Codeには WIT IDLプラグインがあります WIT IDLプラグインは、シンタックスハイライトと、ある程度のコード補完ができます 背景:WebAssembly Interface Type (WIT)とは WebAssembly(Wasm)周りのツールチェーンは、少しずつコンポーネントモデルに対応を始めています。 いくつかのWasmモジュールを組み合わせてもう少し粒度の大きいソフトウェアコンポーネントを定義するものがWasmコンポーネントです。 Wasmモジュールと同様、Wasmコンポーネントも他のプログラムに埋めこんで利用されます。他のプログラムから利用されるプログラムを書く場合、 ユーザー定義型を含めたインタフェースはどうなっている

    Visula Studio Code WIT IDL plugin
  • 1