From 18f0a9f0b9ea1381bb03164e9027776aaa10ef9c Mon Sep 17 00:00:00 2001 From: rrai35 Date: Mon, 6 May 2024 17:45:48 -0400 Subject: [PATCH] feat(composition): Adding an example that shows composition of isolated components --- .../examples/composition/README.md | 66 +++++ .../examples/composition/add/Cargo.lock | 25 ++ .../examples/composition/add/Cargo.toml | 17 ++ .../examples/composition/add/src/lib.rs | 14 + .../examples/composition/add/wit/world.wit | 10 + .../examples/composition/app/Cargo.lock | 253 ++++++++++++++++++ .../examples/composition/app/Cargo.toml | 23 ++ .../examples/composition/app/src/main.rs | 51 ++++ .../examples/composition/app/wit/world.wit | 5 + .../composition/calculator/Cargo.lock | 25 ++ .../composition/calculator/Cargo.toml | 21 ++ .../composition/calculator/src/lib.rs | 18 ++ .../composition/calculator/wit/world.wit | 15 ++ .../examples/composition/sub/README.md | 12 + .../examples/composition/sub/sub.go | 10 + .../examples/composition/sub/wit/world.wit | 9 + .../wasi_snapshot_preview1.command.wasm | Bin 0 -> 96948 bytes .../wasi_snapshot_preview1.reactor.wasm | Bin 0 -> 96769 bytes 18 files changed, 574 insertions(+) create mode 100644 component-model/examples/composition/README.md create mode 100644 component-model/examples/composition/add/Cargo.lock create mode 100644 component-model/examples/composition/add/Cargo.toml create mode 100644 component-model/examples/composition/add/src/lib.rs create mode 100644 component-model/examples/composition/add/wit/world.wit create mode 100644 component-model/examples/composition/app/Cargo.lock create mode 100644 component-model/examples/composition/app/Cargo.toml create mode 100644 component-model/examples/composition/app/src/main.rs create mode 100644 component-model/examples/composition/app/wit/world.wit create mode 100644 component-model/examples/composition/calculator/Cargo.lock create mode 100644 component-model/examples/composition/calculator/Cargo.toml create mode 100644 component-model/examples/composition/calculator/src/lib.rs create mode 100644 component-model/examples/composition/calculator/wit/world.wit create mode 100644 component-model/examples/composition/sub/README.md create mode 100644 component-model/examples/composition/sub/sub.go create mode 100644 component-model/examples/composition/sub/wit/world.wit create mode 100644 component-model/examples/composition/wasi_snapshot_preview1.command.wasm create mode 100644 component-model/examples/composition/wasi_snapshot_preview1.reactor.wasm diff --git a/component-model/examples/composition/README.md b/component-model/examples/composition/README.md new file mode 100644 index 00000000..307f7c30 --- /dev/null +++ b/component-model/examples/composition/README.md @@ -0,0 +1,66 @@ +## Summary: +This directory contains an example where component can be written and built separately in different languages and then composed together. +There are multiple components in this repo : +add, calculator and app are components written in RUST. +sub is a component written in tinygo. + +calculator is a component that composes the components add and sub at compile time. +calculator is a library component and cannot be used as a standalone app. +Hence, the app component is built as a command component that composes the calculator component. + +## Prerequisites: + +### Install Wasmtime +curl https://wasmtime.dev/install.sh -sSf | bash + +### Update PATH +Wasmtime binary gets deployed at ~/.wasmtime directory. + +Update bash profile with wasmtime +```export PATH="~/.wasmtime/bin:$PATH"``` + + +### Install cargo component +```cargo install cargo-component``` + + +## Build and test + +### Build the components + +``` +cd calculator +cargo component build --release +cd .. +cd add +cargo component build --release +cd .. + +cd app +cargo component build --release +cd .. +``` + +### Subtractor component is a go component. Build it according to the readme in the sub directory to generate output component- sub-component.wasm. +``` +cd sub +``` + +### Compose the components add, sub and calculator +``` +cd .. +wasm-tools compose calculator/target/wasm32-wasi/release/calculator.wasm -d add/target/wasm32-wasi/release/add.wasm -d sub/sub-component.wasm -o composed-add-sub.wasm +``` + +### Generate app component using composed-add-sub.wasm +``` +wasm-tools compose app/target/wasm32-wasi/release/app.wasm -d composed-add-sub.wasm -o command.wasm +``` + + +### Run the command component using wasmtime to test it +``` +wasmtime run command.wasm 1 2 add + +wasmtime run command.wasm 1 2 sub +``` diff --git a/component-model/examples/composition/add/Cargo.lock b/component-model/examples/composition/add/Cargo.lock new file mode 100644 index 00000000..687bd297 --- /dev/null +++ b/component-model/examples/composition/add/Cargo.lock @@ -0,0 +1,25 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "add" +version = "0.1.0" +dependencies = [ + "wit-bindgen-rt", +] + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "wit-bindgen-rt" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b0780cf7046630ed70f689a098cd8d56c5c3b22f2a7379bbdb088879963ff96" +dependencies = [ + "bitflags", +] diff --git a/component-model/examples/composition/add/Cargo.toml b/component-model/examples/composition/add/Cargo.toml new file mode 100644 index 00000000..2f68c743 --- /dev/null +++ b/component-model/examples/composition/add/Cargo.toml @@ -0,0 +1,17 @@ +[package] +name = "add" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +wit-bindgen-rt = { version = "0.24.0", features = ["bitflags"] } + +[lib] +crate-type = ["cdylib"] + +[package.metadata.component] +package = "component:add" + +[package.metadata.component.dependencies] diff --git a/component-model/examples/composition/add/src/lib.rs b/component-model/examples/composition/add/src/lib.rs new file mode 100644 index 00000000..82ed7616 --- /dev/null +++ b/component-model/examples/composition/add/src/lib.rs @@ -0,0 +1,14 @@ +#[allow(warnings)] +mod bindings; + +use bindings::exports::docs::adder::add::Guest; + +struct Component; + +impl Guest for Component { + fn add(x: u32, y: u32) -> u32 { + x + y + } +} + +bindings::export!(Component with_types_in bindings); diff --git a/component-model/examples/composition/add/wit/world.wit b/component-model/examples/composition/add/wit/world.wit new file mode 100644 index 00000000..640897d8 --- /dev/null +++ b/component-model/examples/composition/add/wit/world.wit @@ -0,0 +1,10 @@ +package docs:adder; + + +interface add { + add: func(a: u32, b: u32) -> u32; +} + +world adder { + export add; +} diff --git a/component-model/examples/composition/app/Cargo.lock b/component-model/examples/composition/app/Cargo.lock new file mode 100644 index 00000000..d5907ce7 --- /dev/null +++ b/component-model/examples/composition/app/Cargo.lock @@ -0,0 +1,253 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "anstream" +version = "0.6.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d96bd03f33fe50a863e394ee9718a706f988b9079b20c3784fb726e7678b62fb" +dependencies = [ + "anstyle", + "anstyle-parse", + "anstyle-query", + "anstyle-wincon", + "colorchoice", + "utf8parse", +] + +[[package]] +name = "anstyle" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8901269c6307e8d93993578286ac0edf7f195079ffff5ebdeea6a59ffb7e36bc" + +[[package]] +name = "anstyle-parse" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c75ac65da39e5fe5ab759307499ddad880d724eed2f6ce5b5e8a26f4f387928c" +dependencies = [ + "utf8parse", +] + +[[package]] +name = "anstyle-query" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e28923312444cdd728e4738b3f9c9cac739500909bb3d3c94b43551b16517648" +dependencies = [ + "windows-sys", +] + +[[package]] +name = "anstyle-wincon" +version = "3.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1cd54b81ec8d6180e24654d0b371ad22fc3dd083b6ff8ba325b72e00c87660a7" +dependencies = [ + "anstyle", + "windows-sys", +] + +[[package]] +name = "anyhow" +version = "1.0.82" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f538837af36e6f6a9be0faa67f9a314f8119e4e4b5867c6ab40ed60360142519" + +[[package]] +name = "app" +version = "0.1.0" +dependencies = [ + "anyhow", + "clap", + "wit-bindgen-rt", +] + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "clap" +version = "4.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90bc066a67923782aa8515dbaea16946c5bcc5addbd668bb80af688e53e548a0" +dependencies = [ + "clap_builder", + "clap_derive", +] + +[[package]] +name = "clap_builder" +version = "4.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae129e2e766ae0ec03484e609954119f123cc1fe650337e155d03b022f24f7b4" +dependencies = [ + "anstream", + "anstyle", + "clap_lex", + "strsim", +] + +[[package]] +name = "clap_derive" +version = "4.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "528131438037fd55894f62d6e9f068b8f45ac57ffa77517819645d10aed04f64" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "clap_lex" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98cc8fbded0c607b7ba9dd60cd98df59af97e84d24e49c8557331cfc26d301ce" + +[[package]] +name = "colorchoice" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" + +[[package]] +name = "heck" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + +[[package]] +name = "proc-macro2" +version = "1.0.81" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d1597b0c024618f09a9c3b8655b7e430397a36d23fdafec26d6965e9eec3eba" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "strsim" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" + +[[package]] +name = "syn" +version = "2.0.60" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "909518bc7b1c9b779f1bbf07f2929d35af9f0f37e47c6e9ef7f9dddc1e1821f3" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "unicode-ident" +version = "1.0.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" + +[[package]] +name = "utf8parse" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" + +[[package]] +name = "windows-sys" +version = "0.52.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" +dependencies = [ + "windows-targets", +] + +[[package]] +name = "windows-targets" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_gnullvm", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6" + +[[package]] +name = "windows_i686_gnu" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9" + +[[package]] +name = "windows_i686_msvc" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0" + +[[package]] +name = "wit-bindgen-rt" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index/" +checksum = "3b0780cf7046630ed70f689a098cd8d56c5c3b22f2a7379bbdb088879963ff96" +dependencies = [ + "bitflags", +] diff --git a/component-model/examples/composition/app/Cargo.toml b/component-model/examples/composition/app/Cargo.toml new file mode 100644 index 00000000..32efe4eb --- /dev/null +++ b/component-model/examples/composition/app/Cargo.toml @@ -0,0 +1,23 @@ +[package] +name = "app" +version = "0.1.0" +edition = "2021" + +[package.metadata.component] +package = "component:app" + +[package.metadata.component.dependencies] + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +anyhow = "1" +clap = { version = "4.3.19", features = ["derive"] } +wit-bindgen-rt = { version = "0.24.0", features = ["bitflags"] } +[package.metadata.component.target] +path = "wit" + +[package.metadata.component.target.dependencies] +"component:calculator" = { path = "../calculator/wit" } +"docs:adder" = { path = "../add/wit" } +"docs:subtractor" = { path = "../sub/wit" } \ No newline at end of file diff --git a/component-model/examples/composition/app/src/main.rs b/component-model/examples/composition/app/src/main.rs new file mode 100644 index 00000000..a416f2e5 --- /dev/null +++ b/component-model/examples/composition/app/src/main.rs @@ -0,0 +1,51 @@ +#[allow(warnings)] +mod bindings; + +use clap::Parser; +use std::fmt; + +use bindings::component::calculator::{calculate, calculate::Op}; + +fn main() { + Command::parse().run() +} + +/// A CLI for executing mathematical expressions +/// using WebAssembly +#[derive(Parser)] +#[clap(name = "calculator", version = env!("CARGO_PKG_VERSION"))] +struct Command { + /// The first operand + x: u32, + /// The second operand + y: u32, + /// Expression operator + #[clap(value_parser = parse_operator)] + op: Op, +} + + +impl Command { + fn run(self) { + let res = calculate::eval_expression(self.op, self.x, self.y); + println!("{} {} {} = {res}", self.x, self.op, self.y); + } +} + +fn parse_operator(op: &str) -> anyhow::Result { + match op { + "add" => Ok(Op::Add), + "sub" => Ok(Op::Sub), + _ => anyhow::bail!("Unknown operation: {}", op), + + } +} + +impl fmt::Display for Op { + fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + match self { + Op::Add => write!(f, "+"), + Op::Sub => write!(f, "-") + } + } +} \ No newline at end of file diff --git a/component-model/examples/composition/app/wit/world.wit b/component-model/examples/composition/app/wit/world.wit new file mode 100644 index 00000000..a78fd02c --- /dev/null +++ b/component-model/examples/composition/app/wit/world.wit @@ -0,0 +1,5 @@ +package docs:app; + +world app { + import component:calculator/calculate; +} diff --git a/component-model/examples/composition/calculator/Cargo.lock b/component-model/examples/composition/calculator/Cargo.lock new file mode 100644 index 00000000..e6dba970 --- /dev/null +++ b/component-model/examples/composition/calculator/Cargo.lock @@ -0,0 +1,25 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "calculator" +version = "0.1.0" +dependencies = [ + "wit-bindgen-rt", +] + +[[package]] +name = "wit-bindgen-rt" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index/" +checksum = "3b0780cf7046630ed70f689a098cd8d56c5c3b22f2a7379bbdb088879963ff96" +dependencies = [ + "bitflags", +] diff --git a/component-model/examples/composition/calculator/Cargo.toml b/component-model/examples/composition/calculator/Cargo.toml new file mode 100644 index 00000000..65c52d4b --- /dev/null +++ b/component-model/examples/composition/calculator/Cargo.toml @@ -0,0 +1,21 @@ +[package] +name = "calculator" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +wit-bindgen-rt = { version = "0.24.0", features = ["bitflags"] } + +[lib] +crate-type = ["cdylib"] + +[package.metadata.component] +package = "component:calculator" + +[package.metadata.component.target.dependencies] +"docs:adder" = { path = "../add/wit" } # directory containing the WIT package +"docs:subtractor" = { path = "../sub/wit" } # directory containing the WIT package + +[package.metadata.component.dependencies] diff --git a/component-model/examples/composition/calculator/src/lib.rs b/component-model/examples/composition/calculator/src/lib.rs new file mode 100644 index 00000000..b20b8fad --- /dev/null +++ b/component-model/examples/composition/calculator/src/lib.rs @@ -0,0 +1,18 @@ +#[allow(warnings)] +mod bindings; + +use bindings::exports::component::calculator::calculate::{Guest, Op}; +use bindings::docs::adder::add::add; +use bindings::docs::subtractor::sub::sub; +struct Component; + +impl Guest for Component { + fn eval_expression(op: Op, x: u32, y: u32) -> u32{ + match op { + Op::Add => add(x, y), + Op::Sub => sub(x, y), + } + } +} + +bindings::export!(Component with_types_in bindings); diff --git a/component-model/examples/composition/calculator/wit/world.wit b/component-model/examples/composition/calculator/wit/world.wit new file mode 100644 index 00000000..2e51cf9d --- /dev/null +++ b/component-model/examples/composition/calculator/wit/world.wit @@ -0,0 +1,15 @@ +package component:calculator; + +interface calculate { + enum op { + add, + sub, + } + eval-expression: func(op: op, x: u32, y: u32) -> u32; +} + +world calculator { + export calculate; + import docs:adder/add; + import docs:subtractor/sub; +} diff --git a/component-model/examples/composition/sub/README.md b/component-model/examples/composition/sub/README.md new file mode 100644 index 00000000..2536ec30 --- /dev/null +++ b/component-model/examples/composition/sub/README.md @@ -0,0 +1,12 @@ +tinygo build -o sub.wasm -target=wasi sub.go + +# convert to component using wasm-tools using the below 3 commands: +``` +export COMPONENT_ADAPTER_REACTOR=../wasi_snapshot_preview1.reactor.wasm +wasm-tools component embed --world subtractor wit/world.wit sub.wasm -o sub.embed.wasm +wasm-tools component new -o sub-component.wasm --adapt wasi_snapshot_preview1="$COMPONENT_ADAPTER_REACTOR" sub.embed.wasm + +``` + +# Validate the component by checking its imports: +```wasm-tools component wit sub.component.wasm``` \ No newline at end of file diff --git a/component-model/examples/composition/sub/sub.go b/component-model/examples/composition/sub/sub.go new file mode 100644 index 00000000..8cb34d90 --- /dev/null +++ b/component-model/examples/composition/sub/sub.go @@ -0,0 +1,10 @@ +package main + +//go:wasm-module sub +//export docs:subtractor/sub#sub +func sub(x, y int32) int32 { + return x - y +} + +// main is required for the `wasi` target, even if it isn't used. +func main() {} diff --git a/component-model/examples/composition/sub/wit/world.wit b/component-model/examples/composition/sub/wit/world.wit new file mode 100644 index 00000000..baf7c0fc --- /dev/null +++ b/component-model/examples/composition/sub/wit/world.wit @@ -0,0 +1,9 @@ +package docs:subtractor; + +interface sub { + sub: func(a: u32, b: u32) -> u32; +} + +world subtractor { + export sub; +} \ No newline at end of file diff --git a/component-model/examples/composition/wasi_snapshot_preview1.command.wasm b/component-model/examples/composition/wasi_snapshot_preview1.command.wasm new file mode 100644 index 0000000000000000000000000000000000000000..8d048d188a05f6caf31747429af96b45f822dbb7 GIT binary patch literal 96948 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ⅇ?$i`6t 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