サクサク読めて、アプリ限定の機能も多数!
トップへ戻る
Nintendo Direct
zenn.dev/chikoski
前回までのあらすじ: 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
この記事はAdvent of Spin 2023というオンラインチャレンジに参加した結果してSpinに入門した結果のまとめとなっています。学んだことのまとめですが、Spin入門としても利用いただけるかなとも思っています。 TL;DR マクロサービスフレームワークのSpinをつかって、Rustでマイクロサービスを作ります。 JSONのやり取りや、key-valueストアの利用、ルーティングがカバーされています。 Hurlというツールを使ってテストファースト開発します。 Spinとは? Spinとはマイクロサービスを作成するためのフレームワークで次の特徴があります。 イベント駆動型のフレームワーク HTTP(S)とRedisにデフォルトで対応 いくつかのストレージに標準で対応 イベントハンドラーはWasmコンポーネントとして実装される WASI preview 2に対応 開発元が配布しているコ
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
TL;TR WebAssembly Interface Typeで、Wasmコンポーネントのインタフェースを記述できます Visual Studio Codeには WIT IDLプラグインがあります WIT IDLプラグインは、シンタックスハイライトと、ある程度のコード補完ができます 背景:WebAssembly Interface Type (WIT)とは WebAssembly(Wasm)周りのツールチェーンは、少しずつコンポーネントモデルに対応を始めています。 いくつかのWasmモジュールを組み合わせてもう少し粒度の大きいソフトウェアコンポーネントを定義するものがWasmコンポーネントです。 Wasmモジュールと同様、Wasmコンポーネントも他のプログラムに埋めこんで利用されます。他のプログラムから利用されるプログラムを書く場合、 ユーザー定義型を含めたインタフェースはどうなっている
TL;DR; ワークスペース内の複数クレートが利用するクレートのバージョンを一元管理できます。 各パッケージの Cargo.toml には、ワークスペースの Cargo.toml 内の記述を参照するように設定します。 この機能は Cargo 1.64 から利用できます。 ユースケース Cargo にはワークスペースという機能があります。この機能を利用することで、プロジェクトを複数のパッケージに分割して開発できるようになります。 例えば、次のexample プロジェクトには add と cli の 2 つのクレートが存在しています。
このページを最初にブックマークしてみませんか?
『chikoskiさんの記事一覧』の新着エントリーを見る
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く