From d2b48d2a9fd32069a44b66d24e3eafe53e8ed250 Mon Sep 17 00:00:00 2001 From: seanisom Date: Sat, 9 Sep 2023 22:32:18 -0600 Subject: [PATCH 001/175] Add initial documentation for C tooling --- component-model/src/SUMMARY.md | 1 + component-model/src/language-support/c.md | 100 ++++++++++++++++++++++ 2 files changed, 101 insertions(+) create mode 100644 component-model/src/language-support/c.md diff --git a/component-model/src/SUMMARY.md b/component-model/src/SUMMARY.md index 33991b8..1021b73 100644 --- a/component-model/src/SUMMARY.md +++ b/component-model/src/SUMMARY.md @@ -7,6 +7,7 @@ - [An Overview of WIT](./wit-overview.md) - [Language Support for Components](./language-support.md) - [Rust](./language-support/rust.md) + - [C](./language-support/c.md) - [Creating and Consuming Components](./creating-and-consuming.md) - [Authoring Components](./creating-and-consuming/authoring.md) - [Composing Components](./creating-and-consuming/composing.md) diff --git a/component-model/src/language-support/c.md b/component-model/src/language-support/c.md new file mode 100644 index 0000000..8886b12 --- /dev/null +++ b/component-model/src/language-support/c.md @@ -0,0 +1,100 @@ +## C/C++ Tooling + +### Building a Component with `wit-bindgen` and `wasm-tools` + +[`wit-bindgen`](https://github.com/bytecodealliance/wit-bindgen) is a tool to generate guest language bindings from a given `.wit` file. Although it is less integrated into language toolchains than other tools such as `cargo-component`, it can currently generate source-level bindings for `Rust`, `C`, `Java (TeaVM)`, and `TinyGo`, with the ability for more language generators to be added in the future. + +`wit-bindgen` can be used to generate C applications that can be compiled directly to Wasm modules using `clang` with a `wasm32-wasi` target. + +First, install the cli for [`wit-bindgen`](https://github.com/bytecodealliance/wit-bindgen#cli-installation), [`wasm-tools`](https://github.com/bytecodealliance/wasm-tools), and the [`WASI SDK`](https://github.com/webassembly/wasi-sdk). Note that you can also use your installed system or emscripten `clang` by building with `--target=wasm32-wasi` but you will need some artifacts from WASI SDK to enable and link that build target (more information is available in WASI SDK's docs). + +Start by generating a C skeleton from `wit-bindgen` using the [sample `add.wit` file](../../examples/add.wit): +```sh +>wit-bindgen c add.wit +Generating "example.c" +Generating "example.h" +Generating "example_component_type.o" +``` + +This has generated several files - an `example.h` (based on the name of your `world`) with the prototype of the `add` function - `int32_t example_add(int32_t x, int32_t y);`, as well as some generated code in `example.c` that interfaces with the component model ABI to call your function. Additionally, `example_component_type.o` contains object code referenced in `example.c` from an `extern` that must be linked via clang. + +Next, create an `add.c` that implements your function defined in `example.h`: +```c +#include "example.h" + +int32_t example_add(int32_t x, int32_t y) +{ + return x + y; +} +``` + +Now, you can compile the function into a Wasm module via clang: +```sh +clang add.c example.c example_component_type.o -o add-core.wasm -mexec-model=reactor +``` + +Next, you need to transform the module into a component. For this example, you can use `wasm-tools component new`: +```sh +wasm-tools component new ./add-core.wasm -o add-component.wasm +``` + +Do note this will fail if your code references any WASI APIs that must be imported. This requires an additional step as the WASI SDK still references `wasi_snapshot_preview1` APIs that are not compatible directly with components. + +For example, modifying the above to reference `printf()` would compile: +```c +#include "example.h" +#include + +int32_t example_add(int32_t x, int32_t y) +{ + int32_t result = x + y; + printf("%d", result); + return result; +} +``` + +However, the module would fail to transform to a component: +```sh +>wasm-tools component new ./add-core.wasm -o add-component.wasm +error: failed to encode a component from module + +Caused by: + 0: module requires an import interface named `wasi_snapshot_preview1` +``` + +Install the appropriate reactor adapter module [as documented here](https://github.com/bytecodealliance/wit-bindgen#creating-components-wasi) - you can either get the linked release of `wasi_snapshot_preview1.reactor.wasm` and rename it to `wasi_snapshot_preview1.wasm`, or build it directly from source in `wasmtime` following the [instructions here](https://github.com/bytecodealliance/wasmtime/tree/main/crates/wasi-preview1-component-adapter) (make sure you `git submodule update --init` first). + +Now, you can adapt preview1 to preview2 to build a component: +```sh +wasm-tools component new add-core.wasm --adapt wasi_snapshot_preview1.wasm -o add-component.wasm +``` + +Finally, you can inspect the embedded wit to see your component (including any WASI imports if necessary): +```sh +>wasm-tools component wit ./component.wasm +package root:component + +world root { + import wasi:clocks/wall-clock + import wasi:io/streams + import wasi:filesystem/types + import wasi:filesystem/preopens + import wasi:cli/stdin + import wasi:cli/stdout + import wasi:cli/stderr + import wasi:cli/terminal-input + import wasi:cli/terminal-output + import wasi:cli/terminal-stdin + import wasi:cli/terminal-stdout + import wasi:cli/terminal-stderr + + export add: func(x: s32, y: s32) -> s32 +} +``` + + +### Running a Component from C/C++ Applications + +It is not yet possible to run a Component using the `wasmtime` `c-api` - [see this issue](https://github.com/bytecodealliance/wasmtime/issues/6987). The c-api is preferred to trying to directly use the Rust crate in C++. + +However, C/C++ language guest components can be composed with components written in any other language and run by their toolchains, or even composed with a C language command component and run via the `wasmtime` CLI or any other host. \ No newline at end of file From b99ffa88f87ef6cb7971640851522206edc90118 Mon Sep 17 00:00:00 2001 From: Sean Isom Date: Sun, 10 Dec 2023 23:46:58 -0500 Subject: [PATCH 002/175] Update component-model/src/language-support/c.md Co-authored-by: Kate Goldenring --- component-model/src/language-support/c.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/component-model/src/language-support/c.md b/component-model/src/language-support/c.md index 8886b12..3f44b9d 100644 --- a/component-model/src/language-support/c.md +++ b/component-model/src/language-support/c.md @@ -6,7 +6,7 @@ `wit-bindgen` can be used to generate C applications that can be compiled directly to Wasm modules using `clang` with a `wasm32-wasi` target. -First, install the cli for [`wit-bindgen`](https://github.com/bytecodealliance/wit-bindgen#cli-installation), [`wasm-tools`](https://github.com/bytecodealliance/wasm-tools), and the [`WASI SDK`](https://github.com/webassembly/wasi-sdk). Note that you can also use your installed system or emscripten `clang` by building with `--target=wasm32-wasi` but you will need some artifacts from WASI SDK to enable and link that build target (more information is available in WASI SDK's docs). +First, install the CLI for [`wit-bindgen`](https://github.com/bytecodealliance/wit-bindgen#cli-installation), [`wasm-tools`](https://github.com/bytecodealliance/wasm-tools), and the [`WASI SDK`](https://github.com/webassembly/wasi-sdk). Note that you can also use your installed system or emscripten `clang` by building with `--target=wasm32-wasi` but you will need some artifacts from WASI SDK to enable and link that build target (more information is available in WASI SDK's docs). Start by generating a C skeleton from `wit-bindgen` using the [sample `add.wit` file](../../examples/add.wit): ```sh From 4964bffa1f8f1289f92c0234f362ba51266e514f Mon Sep 17 00:00:00 2001 From: Sean Isom Date: Sun, 10 Dec 2023 23:47:45 -0500 Subject: [PATCH 003/175] Update component-model/src/language-support/c.md Co-authored-by: Kate Goldenring --- component-model/src/language-support/c.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/component-model/src/language-support/c.md b/component-model/src/language-support/c.md index 3f44b9d..ddf6e33 100644 --- a/component-model/src/language-support/c.md +++ b/component-model/src/language-support/c.md @@ -8,7 +8,7 @@ First, install the CLI for [`wit-bindgen`](https://github.com/bytecodealliance/wit-bindgen#cli-installation), [`wasm-tools`](https://github.com/bytecodealliance/wasm-tools), and the [`WASI SDK`](https://github.com/webassembly/wasi-sdk). Note that you can also use your installed system or emscripten `clang` by building with `--target=wasm32-wasi` but you will need some artifacts from WASI SDK to enable and link that build target (more information is available in WASI SDK's docs). -Start by generating a C skeleton from `wit-bindgen` using the [sample `add.wit` file](../../examples/add.wit): +Start by generating a C skeleton from `wit-bindgen` using the [sample `add.wit` file](../../examples/example-host/add.wit): ```sh >wit-bindgen c add.wit Generating "example.c" From b7b734c09f08eb6e02fd24055249837cc7a43999 Mon Sep 17 00:00:00 2001 From: Sean Isom Date: Sun, 10 Dec 2023 23:48:42 -0500 Subject: [PATCH 004/175] Update component-model/src/language-support/c.md Co-authored-by: Kate Goldenring --- component-model/src/language-support/c.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/component-model/src/language-support/c.md b/component-model/src/language-support/c.md index ddf6e33..c33ff5e 100644 --- a/component-model/src/language-support/c.md +++ b/component-model/src/language-support/c.md @@ -71,7 +71,7 @@ wasm-tools component new add-core.wasm --adapt wasi_snapshot_preview1.wasm -o ad Finally, you can inspect the embedded wit to see your component (including any WASI imports if necessary): ```sh ->wasm-tools component wit ./component.wasm +>wasm-tools component wit add-component.wasm package root:component world root { From 1b8b4a18f5ddcca79286807342cea230b38778e1 Mon Sep 17 00:00:00 2001 From: Kevin Gibbons Date: Thu, 25 Jan 2024 14:27:59 -0800 Subject: [PATCH 005/175] Fix typo in link in language-support.md (#94) --- component-model/src/language-support.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/component-model/src/language-support.md b/component-model/src/language-support.md index 45f07d9..b3e44ca 100644 --- a/component-model/src/language-support.md +++ b/component-model/src/language-support.md @@ -26,7 +26,7 @@ components within and among toolchains. - [Running a Component from Rust Applications](./language-support/rust.md#running-a-component-from-rust-appliacations) - [JavaScript Tooling](./language-support/javascript.md) - [Building a Component with `jco`](./language-support/javascript.md#building-a-component-with-jco) - - [Running a Component from JavaScript Applications](#./language-support/javascript#running-a-component-from-javascript-applications) + - [Running a Component from JavaScript Applications](./language-support/javascript.md#running-a-component-from-javascript-applications) - [Python Tooling](./language-support/python.md) - [Building a Component with `componentize-py`](./language-support/python.md#building-a-component-with-componentize-py) - [Running components from Python Applications](./language-support/python.md#running-components-from-python-applications) From f91b532287a42ea84db39546fa84ed970872b921 Mon Sep 17 00:00:00 2001 From: Yerkebulan Tulibergenov Date: Fri, 26 Jan 2024 19:48:54 -0800 Subject: [PATCH 006/175] Fix typo in tutorial.md --- component-model/src/tutorial.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/component-model/src/tutorial.md b/component-model/src/tutorial.md index ef796a4..8c345e9 100644 --- a/component-model/src/tutorial.md +++ b/component-model/src/tutorial.md @@ -78,7 +78,7 @@ documentation](creating-and-consuming/authoring.md) to create a component that i [example](https://github.com/bytecodealliance/component-docs/tree/main/component-model/examples/tutorial/calculator/). The component should import the `add` function from the `adder` world and call it if the `op` enum matches `add`. -## Crate a `command` component +## Create a `command` component A _command_ is a component with a specific export that allows it to be executed directly by `wasmtime` (or other `wasm:cli` hosts). The host expects it to export the [`wasi:cli/run` From 73828f6f834aa72a44ae671edd9345e55c6c9af8 Mon Sep 17 00:00:00 2001 From: seanisom Date: Sat, 27 Jan 2024 22:40:41 -0500 Subject: [PATCH 007/175] Feedback on documentation --- component-model/src/language-support/c.md | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/component-model/src/language-support/c.md b/component-model/src/language-support/c.md index c33ff5e..311f51a 100644 --- a/component-model/src/language-support/c.md +++ b/component-model/src/language-support/c.md @@ -6,7 +6,9 @@ `wit-bindgen` can be used to generate C applications that can be compiled directly to Wasm modules using `clang` with a `wasm32-wasi` target. -First, install the CLI for [`wit-bindgen`](https://github.com/bytecodealliance/wit-bindgen#cli-installation), [`wasm-tools`](https://github.com/bytecodealliance/wasm-tools), and the [`WASI SDK`](https://github.com/webassembly/wasi-sdk). Note that you can also use your installed system or emscripten `clang` by building with `--target=wasm32-wasi` but you will need some artifacts from WASI SDK to enable and link that build target (more information is available in WASI SDK's docs). +First, install the CLI for [`wit-bindgen`](https://github.com/bytecodealliance/wit-bindgen#cli-installation), [`wasm-tools`](https://github.com/bytecodealliance/wasm-tools), and the [`WASI SDK`](https://github.com/webassembly/wasi-sdk). + +The WASI SDK will install a local version of `clang` configured with a wasi-sysroot. Follow [these instructions](https://github.com/WebAssembly/wasi-sdk#use) to configure it for use. Note that you can also use your installed system or emscripten `clang` by building with `--target=wasm32-wasi` but you will need some artifacts from WASI SDK to enable and link that build target (more information is available in WASI SDK's docs). Start by generating a C skeleton from `wit-bindgen` using the [sample `add.wit` file](../../examples/example-host/add.wit): ```sh @@ -97,4 +99,6 @@ world root { It is not yet possible to run a Component using the `wasmtime` `c-api` - [see this issue](https://github.com/bytecodealliance/wasmtime/issues/6987). The c-api is preferred to trying to directly use the Rust crate in C++. -However, C/C++ language guest components can be composed with components written in any other language and run by their toolchains, or even composed with a C language command component and run via the `wasmtime` CLI or any other host. \ No newline at end of file +However, C/C++ language guest components can be composed with components written in any other language and run by their toolchains, or even composed with a C language command component and run via the `wasmtime` CLI or any other host. + +See the [Rust Tooling guide](rust.md#running-a-component-from-rust-appliacations) for instructions on how to run this component from the Rust `example-host`. \ No newline at end of file From 712195e38d6727895f1841930fef09e7fd1df924 Mon Sep 17 00:00:00 2001 From: Kate Goldenring Date: Fri, 26 Jan 2024 15:56:54 -0800 Subject: [PATCH 008/175] Update Rust docs and tutorial to match latest cargo component release Signed-off-by: Kate Goldenring --- .../examples/example-host/add.wasm | Bin 2042868 -> 2080805 bytes .../tutorial/adder/Cargo-component.lock | 3 - .../examples/tutorial/adder/Cargo.lock | 426 +--------------- .../examples/tutorial/adder/Cargo.toml | 4 +- .../examples/tutorial/adder/src/bindings.rs | 58 +++ .../examples/tutorial/adder/src/lib.rs | 5 +- .../tutorial/calculator/Cargo-component.lock | 3 - .../examples/tutorial/calculator/Cargo.lock | 424 +--------------- .../examples/tutorial/calculator/Cargo.toml | 4 +- .../tutorial/calculator/src/bindings.rs | 121 +++++ .../examples/tutorial/calculator/src/lib.rs | 2 +- .../tutorial/command/Cargo-component.lock | 3 - .../examples/tutorial/command/Cargo.lock | 478 ++---------------- .../examples/tutorial/command/Cargo.toml | 13 +- .../examples/tutorial/command/src/bindings.rs | 74 +++ .../examples/tutorial/command/src/main.rs | 3 +- component-model/src/language-support/rust.md | 21 +- component-model/src/tutorial.md | 8 +- 18 files changed, 347 insertions(+), 1303 deletions(-) delete mode 100644 component-model/examples/tutorial/adder/Cargo-component.lock create mode 100644 component-model/examples/tutorial/adder/src/bindings.rs delete mode 100644 component-model/examples/tutorial/calculator/Cargo-component.lock create mode 100644 component-model/examples/tutorial/calculator/src/bindings.rs delete mode 100644 component-model/examples/tutorial/command/Cargo-component.lock create mode 100644 component-model/examples/tutorial/command/src/bindings.rs diff --git a/component-model/examples/example-host/add.wasm b/component-model/examples/example-host/add.wasm index 0149dd4083d36e5b358db6c6bbf55dcbc7894fb8..9b76d062346141773d76f9c7fa18f317c136ff53 100755 GIT binary patch literal 2080805 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

*Aj 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%0Aj=+qp>sqvKz8L!{l6xQ2;=!`hP95aC7*gQ-8 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�I*WZ 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≪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

N3@e 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%0AO4L-L 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 z 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

WYcKo(R9iH%32M)Hb2x_6z})6Z4~ZnC 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

Y`G&kzzG9|1UT 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

-xLrwptw8qXDg0a{sL z@s=gKwvZB#|DTila^qv`roskM!QxRIRUvtPGcLny&8a%yBBV!iIlLBCCm$`Vb4L^r zgUQ=iSt~%e1O8-F6dbV0V0d# z2uq259<`>0oz0}t&c|;KoQvkQGicxaNtR27@)AG+v2`oL(sn(}dEA)A4}|h9xP4E#BOKvtOmBW zvX=(KU)kttw}_}>l-=Md)|{U2i`Bv|Bu3>(8Xa1o?7?PGwg@QmdDeHFnRp5kcc%Ih zz`r2T$I7I3X|X+e7B*{TWf@^;U<~0L+(a@=m$8z?L+7xW65y_Q8BAxXn9eyu29Ij< z*9b{0sEnKdZLw616JgE4Pq1A=nYm`YM!*+TD&udNWX}t%-fhQNT1bQ7BJ;d7RBLdA z;R1Trw%d@VpHsWV<`cDhS7j&<-UGR{cQof~t!I(b0J-OD zw%!vNM%vw+r+T+kGSSy-^Xyy~EDYM=rd>VoJ{UTnPbA+-<->qNI z;N%w*R-4pX*=j#01eYc1-x1kzZ7LY=XD(CI*Cv{_OR{p;OVZO!(vsA$B#el^)q>x* z1-jQ&I@(#RzooVUJJ_f5 z!Cn{P@jEhXS{L?<+EpAQUkKoq;&$837v#%oaVhT5hhL0jDJJEX&7}RCGPGZ4=BnCf zXu(t3pKsg$WM}Q)r4K(DX+}s8U83X_vpJOzJvC!ws_{6 z4D|}leX6%LF)&@#5D9v_MYFn+ZaSThaAk_@^wVf(Ylo9TR4Av?KvdYt%pX$@1wS%w zuF^OlP+CO3xER?wR7t*UJDEiq&t|Y;SGXlRn=dn9&91~jprKsojk}m7 zs`rlOcOAP14LCBq9)(uBn1@v1t&yzk4BO1)jLj@pt&M7?20Ma0gc|1SvB@Lv!WBoA zm&ko`Jo*kDmfFe&;q-HJtNEu=4jY6U$@@$ppz4#)2*zgoY|RTXY;H_CZfFJ_F66PSwl7bLuIuehLutTH#Y zud<=5AXX5@2!qW{2Xkw@NvC#mpKo#h0jHn}E1!0Y7nmK||9PB!Zt>@BQ|r~#la{E3 ztjp|YP?ggb>TLd4Kcdo;t;A2F#C)0%h!FK0POBj)5#7p?KuIjZ36+o}=3;9FxNC0% z07#+aqB5}DrMH0$Vu6+n-Uf^&*K9-C(&}6Q_l~ zc#0%btoXg9@@y$~eRLQV2&)$teqiRVcdK?PG}c zu(*!dH~YeljS4uv1(t0%4*KU6^XE2i{ z9E{w173IW+>nG?RF?zmTu&|>GGY9k(4X{e*V&TNTJT&O9!zVik!Q!Gn5+cfM9}igH zN615qYu4o|4kELf!`;Ih{H(PVto9BrM*;Z%kaytQorsND`6;{29Ka3?Z*DNW9fWBN zhtBo=IsVad&zg|~P)#Q^kiY0|i(btswL`ugkE_4umZZmbh+l(S|fsXN- zZfyo}*FV6H*j<|y<%D8K$6dh%e;BCkk72aLa)7?Qxgwi$a^nO^fI&q^2o;?eR-yj< ziSn&YK^Zd`n_J7gXc2GLen=}bq$ zD%SfbG|?|=a=^r2;lLxm_Ssm6+tWcfoZxiG3wYMx8XJc4jUu|-ILMdrtsn_QZsg!j zIeBIo$ICM-q*pM{wuQUhI81jH*WlVLEU!TY<`Uw8dc;G+2b-8|x?lkW=@9Rn*d(#& ziY#c?$brpUV+n0*m_5=K@&i&G`yS&^EZZw%O$Og_`@mW-n?$4)Kkl;};`c86xSHe6 z(2~{)$06&;f_&imGDp|go8%gzQne-;>}9y3bToNrkCP)fgOY*}v6*s8o(@rb$jZQwTK`fte*tfQ^$vX#CI#d)xktXj>-j8CD-ZjK9 zvg+ipnMJOdUontcvl8JnK(>VNM8(lYtZZz!wxuKx>hUY@h?(BOvEO*zFBI)$&S_*a z#UzxKNg+RL-A{3ixj-!I`>?zTibb}pur@2X>r~|fRd`2F&*>@hy^iKn!WP)-0+~aR zp%I3)aJ2Ws7YU+5`X;fiBxAAU-a^D?olbV}tTx~ziExh%mbra=l_p4Fcc*AdUcc9v zV|1o(RPF5-u4_laH$@w~{osyky#32vg>YqFX4OeJ+0V-xva_?lXsh(Q+1X^|;{R+CnN{?!7~Olo(29Y*N#597N%Vr3{Ra&i zI>5diIdDMpx8a-c9o0M&MSQ>m1zDQIrFFz}M8&vD9 zbdf>J;Y<5X^Vfdnv#=o1bkazApBAqeI54aew(0U@HtWhyh}Zl*Y5SVJ%s7MOY=OG&okjUQ?9 zlC$k4vgVOLE<-Xr%IzBa-3&OD@#>kJey0r`HPEJ#qx*ps6)sa9`QxZ@){rxTafK=Q z29F3+3DPLJ`=~YitN}J_p1vA3aKNbpN5x4{r%#z+T7Ewz(+iXD4eCF7=m?ttj|_n+ z$p!rdYE6qui|P-^Pfnm7p@OU^*D-tH~j|;aH$8CQ_rO{B&S|-f5?eX?w1KCN7;@H-vup!2 zo0c)Lz57_L^XT`kmqDV!lq`f4q$mHQyWwY_HSE;NGtY7f0vV3q44-OXYMVzt$sxt3 z4;UrLfZ5Aca-Z#g>{*E44R_?`pggT_n5I5<2@P z#t|U#Fp-w=jx!ArnX2TPd4uCQ*=BvAl$V{2()mQ;4{SQ0R@~(_osUHNisPsnv+-); zGB+-r4>YO0W}9`9OE89yhd?_ln23u2cmKOtCA>NV+GN4R$T3PpcA^vy?v_rSHVaY~ zEQppMyoHu>QQ0l=+TMiK_XL|>iM{aJ-W>j96TG&w?F|>tDJ{}I-TjyQ&zrdc}R1kC30i zqD{zx5^O%&f?%a~5dSuscd{eE3cMeME59&1+sz@Y`ns+9l*@sZ_VyL~HVOQnAjobz zv$R7Q+YXgMF8?FY=1`hhNE*jik)s6SA$JSJ7mWOYEa;CH!(&FO`B?B(q4#E{|_{X+@0zo zzg|gz5=3a`k~WCW5Q6cw*zw`AlJDPZIChp0%dE|(;w~;GsMF!71Qlpx60s9{qCk?Z zGro)x#@-C+XG!O9(6zy!=d~h3jT>~y|Nip~8hZ7vV9*jI28&%6<xjcz)=ad9R~KiqSf5U? zY0d7Iq&-v3s+`Us3Yo~S#B&mfE>0`-&DO4vp9yTqy9NsV8X{+suL%hdKx2y^9gRtpVbfiGgZ>whYdH|wXX&r#rye~VH&?G{v z5$xCM5z4QD#^2v1&dbv5zL7lj%f*!Fw}Zyf);tNu)kU>|I1>6@(=P7t6EDNcue*=U z+M=?Yc2s@~Eut!K&hjI~?yT|$e&zRq%FHKh`Jy)2c3w?@<~!NU>VfgfJ7-oaNb!A) zt*zvVN->CRzFn-^?Hvmiws1!_K;A$Mw7pul*5=a62Dh?q1nSUCMG|TID>c2UK=6aL z8R=_^)d^vb+qlt|MPgdv?y%Cq&OQQD2S>>{_!VEbF>m34wD&uVE6Ul3rMt^UZlzL# zEhalBE2+auG-@5zW)qlNsEF*>4(7Xm#o@ExrGPpcaQ^OZK(PAH*igl$YNERkyj*#W zoB2dXM#%Imp_+A#m#{oj$JM3X-rcR_NjJiLuq42^7N?jFCwbrh$nN6{qDl7jpmJ(3 zj*>paoHvo7=t3oGkCJ^VQ>-zw+j3HMsdAg5zqYm`x=zd3@IQ#P3tHaPjoQ>1|z`M^wrR5uPEt2X5I&5&MUC9F#EUAV4$ zBYp1_%xH`nrVFSNkR-RARh+sV_K z;N>P`Bb;k~<9In;er%=C zxRcP}n%n)u%R{DC#Pav~O8YpCV@@Au79u%PqP((pq$6Vgty$*$$%8ypn}6yaur-uU>D= z<0IrW&iO2i_Jf@&Fc(JfHNlFCkOYqR0@uNJSs$LIFk<-_5Y6Pwi1#9Wz4Vcf5;nw+ z?{!!cd(|dmp^xcXJ${-;*A$qG=`wnP!%8M8xY$%Y*@enJrF9=?dB=qF`V1~i&0K5L z1gXo_$## zEE;GJ?X8UYS*-gAEZS^m??xs$Gn?>g=ezC7$dR$4A*WgDs5IvAsEz%>?7l?Yq)mT! zSlq!ZhdkVKpDC*g?xj6rX4UMZb09RoBrkpQ`@vBG8OOW}F4B#7vFDFC8Q5>fcRzYk z0KEwY6*t)oSMf5OXRUZ(2g{t3Zzg;E$u`@^C}cgqSlY!-K^ns7V>A@%S$`1it?#Yd zQ$A$%bo)IowjeokFMyo~Mqz~_CeqA97N^%Yc?cr7@-hbpzJRn*=V}78^JoBj}Uc!NQ5-yT6Z$2jAmwsPHEbZX8a3=U35Oz!r zL+xx{@-K=F*e>pjy|KIipME|Hs$*ZVgWwWZ-{^}D=D%5xym&Yu`9)>RAQ|rU<2WTA z!2GP#&Q-UD?++0B3Y+TXizo-C*-Tfq$LZwN+LDc{{e(Dwg%K|GzjCUJ2T9&VP%-jaN|H5?EJH9C#*SGXGspv(b!@KA%_MFHYcDN?`_2`-O2kUe%lK6FN+`0(Zl#;m+%_CVm2Ol zS{yRIQ@r;x0sL7lB&$(E87?i_^sJ;`czrVfDIl0MA7!>v2_pcu{_w2LJ9@bua?X}ik14(*a zDu(XCSYChw5P36oQj)U|O??cBTRQqr&cQSkiymLxhW!DyVrwELRFrNWpl(4o-`%V@ zOX`M42=m$9JTwG7*V7IXVejiL&quQFh1Q;;o=jl@85d;Jm>+JSs|~-Qn8IhA4-{ z{lI2D8}z@Fn)3Q(*Vv+*!J|p;)Dfxe=G~Rm$}gbZ6^$7O5B%-LkpAaqU3 z-_d>z7&Rrb3i;DdYXo^31M<*jjQc!WnG;LLuG#iVZMtT+CLOb z!W`NTChXtAKLu;1V+uki0`eWnW+E6q@OmkB+Ti(kr?aXb+pF8<=Qc&7E|pG7ptTKFCf>cll_+=q^U~mf99{xDN4442*e$BU~qC z$W8B1GW>BshVOP{_#vMRUxMl-n`8kZ!%bz53}1}twn+HL86v~~-gUNx3~SaIjuiW3 z%WbiXP4c7yzJ8q`s|8lp(%ZjOc*K_SLhqeK8afUPyCUwjO0 z2obb9i}esTnQ%W`>;?+fRxS!dUf@#L$Zo>H|55O-X`|&`0J5&gmJb5n+G8ZrpF2YL zOO~UfQVK`6O;VqAYN#eVU=*L-?YkLqh6deGIju?7S&hwjGU_@rge2qcWiB4nz*~IK zfX;ZJ(}7e@RvFomk*j+*nn(_rXm_*0}|O& zx~tCS-HI|yu=2Qd=|*hD4gh&?)1VCQVv*HDK1cN}u!@o+-zEHEvzsJwt8HJ7xgqDn zTE15yCr(X_G?W*$h~%OnI-|@msVxdNW8M3`xkng&&dAu4r92sYDx3+ z#UOkxte7;4nWKrBj3!3bywMOFs;%0J-E|RaE3I_3V*}qa91_zV}5sLBM#?uo~DE>m_tRovN6-+g0-> z-@J4VZ;q+ctmSoZ0Bm}vBF9=S*KNvb{LlfpG+d5-dnH3o7qVU}wGCV~u7nC*&AMnA z+Bb$tMqmh1zW6ot2B=KU;!!BO(3m;^Hlsmq%h~DtT|loNX_eDvUZBe2RVVzU0enC=~`uZK9k((3TvNgMtx*_qKFdGUn# zz{DGI4<91@I+`OdyM*%g=6#)i4MSLpYRR{64zc-(AI+0LvCKuT_WxePso2lUD?zZe z9tU-K((9|nZ2wK`Kh1(6x($Hja-|@&FprfxmH&gev~ak$&$X>w5|p&KB+&3Gk_?y= z`@xi+8G(6xh%kL`dofQ>va)mZ?;Ba!)r&rfXn+*A;j8Wr8?RfqJErH5MCy0mUWhh7 zkiHJm^^+p%w=)lC_&Y+IAUK}hws)1;=4viNggnc+zi2`pX9B2;H){qa)4zQ0By+wE zMOSEM!4zj9VX5?FvlyvFC-M8FDZFKzXnare?$A1o0oh*9@Dms&S$ocwhDmx^NoX!|zbH-J{dMiomIW83sW0Br3t!tA?)i5p?4CFoD8O+Cy6@DlKGavfE;Rh= zGZh9Jxv=!y_Nk>Q*Ekopw`{waGvpf?bmf~%$SoUFmWxjY3nyEeA2}^}IG&5?)@p25 zXVd^M)(~PSOnzmEfSqk_BFuZ#yjJcXuiLFT3QpRX8RqOuwK^f@G+Bt%L=UF7FNTQR zBXDQ??l7rfUc?=J%v|3txGhSzn!>va4Y|&ZZ)P>cq44NAfYB_aGvwyK$$Z9HP}$+t z70Sm=#ccvOWs=X^ao^k?Gc=2~A@Jwm0YqYj!=ne7Reytx%qQC7^_`N@1AxS;zbT0x zrrvCLm5M+PN~5N=$Wx4_>dRrlMGmvj>UE(UONtst>$l4)P@W_%;wcr zygVB+{r3vH#kg?j>>F4!@Nh_*a8K7#F7_vMZ?g&EX`J8BDW6;W=z0I6+gf~dTkuf` z!#6u;621qe=kfvQiN{))t@El?W@e5o!ZH`D9f1~FH?Ol#I1UZqwl+}Ten{X+4zjPS zzCBdx+rf@^To+5z-rCnMNs}}+O?_*Ev3!ysB4;AfyF=vHI;6w$YKU=b$_xP$Z7tmyG~KaZ{TA94qzr0bzTPAZ{ezcvm3l_$f5Jks<+Lr>Y}apd0E?g zEY~Xv``teiYY*oM7yW^k2+BL7ne+i#DG8HQUzMtkLjsqm&_u>1S zc;8)dP7>w3N2w$?%|HJlf=}USe5$s=r!dv^FLb6$buBg2DIXI*{UDo*{8Pxd+QXKJ`j0x zwNl!eHzTfW@*PXBo$OzJW_oEGuAgW0FFzx_a#=;PVn{1Z7Z>;C-}2;N`VTqnjJ~I7 zS<0=K?5VZ@SK0Kow*F1uVg1Vo9L9d4OJ ztal%dab*=}TNhg2Td?ea{q+k!PTwVuDxqg4u9Ic|b)f$qd>k;)c`D+)Ii&yDf3-f0 zcvFU+fcR-PbN{5@WdAd5H8y{$Cn#?m4ykdxDo+RNPZ!+uOkIC4I9B?oj!2D5IYbaX#Lctk@C&p z{zJ-xm;NBA_Ll)8P7T|j7Qg}ttz#ojo~M^50bSBLt@4bc;$PiN@Ou37fWP`4w|qBp zz+fK&Exjo5{M5D%TH&$DSyYoAWIb7FyvbdXdFc~12>AXwWI%a^e$%J#ElP)>FD<_{ z*Ruxwb-#U8i|25SZAUQ&%IH&eM zi#ZNF{cH(ZOsXwoRl#$Y9s?V{$bCbtCwEx+*PmM~X z=u{Cqb%S@PEzoaXo?d=h|G{<@dGPzEi_=a&%X;Ec=#xIxXTEMZ{Rh9dR0mvKQN!i| zb(80=9^BxlQa0c$e>qqg--TRlYH0_b+W#+qu|w@7Y$_j&)A6Z)t|%*W>qntQyr4$; zpwrI8b2#N2yJ^q#eW95E-uV5K100rh_V@Iu1I{k9P^SPy8aTkZ$aZN$ldh_mWRP~7 z@#OEGrfE+_^wP3rKpXI!|`8lxvkTYF51F@9w)YN@b?lyD}fokvo=f0a^UKy2bcnPwUqJEox~IB7ZO9-yaUN8@-~I>d)em?Y zHelpP=W$&`1cwxvN^VaP6fDo68aMODmP8_OX3hO!t%&(87ezxC$J=CQmN3`il#*-S zQ*apbfg(tuqd`D?nDG6GT}z{AJntM;q+pS6MzP18&z0_|M)%6MdkY!k;B<4% z9K~a~i(J-Ayc+)6E3)UkTCYbh%y3A~t{XFtC_Od2;-+l5>@aT`iIKufimN-1QbsXN z(eu_5;f_hJK+9|`_|yAZroP70*JiJpzqYRl1h`gTUt)DjU*~hDgKH_OV>-JqMrWUn zpr1){Jouc_7M)#8Rw%!-rd+-EnoQ(;l#!Q4QHCx+hyO%YlE1dUx-1l+_YX&^QA9l@ zk+6ZP|3O}uJge5)g?SIR!E=_#67G-T<5PMxIW?{Tp=B}Q_uV(gv{;|(uqp!^2;L{9 z@q6S)?1^fY-d-3cKO-}r`$mfzC^B~;tlxaZy+?Gvy^@&18D=h*BzZ+VDDIG|W1JKv z$jg_`dU3fT0wN zKVq)LVU6rj2r>(mlEn_LS%GHY1-mEiNUwTei;An=1{sdE$fyQsPNNOlAeXa2-eoiJ z!|sp|wL_+`A(`U4(MH>U1}|;zA4W?YZlzCSo)GyK5P7-R$X|w zi>vwCH}zR@?mPbO_RT-D>YDb=^={w1?C%@@ahcmUAf5`?H!o!=Vyj^6@0)OaXE`*j z8ikcxu9==$#s1id6eP>-%0Lkw(kHGtf_hP_FCh1a=4_Bl3~r7c7$I@RkuAt+R1AW#(CNofr| z?;PBE?FR(^KRmS+s;?%1M%M~%;ZeBHBpTqF3`H&fEAF%7D!rr4+Kei%xQqwe0#AyXgiA0zgDSlcsrA~Q>=nj$CHhpZnJGu-DsHIb)|etv zhqY&+c_gY7(Ctm_DEyiVhk4#ET$JXLS*B9k`w#eF&^)&onAGwP#}XaY zt0J}hEYVjnvm3SkAP+N8O9AKF+3Q&rRrZ8_L-ykvu;**9TKm;d-oexmrOUP{Yl&5n zN}6o2{ws6X_&8)I1i}vuGng{EjxRbw^=0Hcmy3ILvfb_1kExR-;YJw)o<9yp1U~s9 zqt@$iB6njXW|kA(RIe8~9Kp5@u|vK5iPm^`6V}OWunCzEfUk)CKzm=w)qTP^1vEC} z<7-0~7qzc_+$Ke4`s-nSD1TlvxNTf1KT5nka7U`<$r_g}%Sd|d%URo}GW_e15YMlI zmBZ5i4qvJJ3*omJdUJ;~36Y1&Y6DIrhu}MwvI$m@tr#4_9jZ&;9 zVOtrX{hI&1=KNl9-C$I2FdvN7uFov`JxmLc8L%8Oc6K9?rXXH@cw2HISRJuopjpv>E&gnBmN z=F_NNo710XSr@pP=f+}4>nX}^374GtuY$wv&2R4HwH#*)ms1GVnfZ9YZj zS>^Hgm9{LK>yZrNhU;E9`(q|KE{T~$J++wS8BF*$RcfM`r98~GaSv|aO-YQE2cG=H3>%KT@AV^p_?j43O33S?tDmroxh!!&8@MIQf2|>W|I%$XK&S; zLoWkJRttu<4JG1Y67LE)m$L`r7(?jybP&5cOaW#M2?*3Y!RT$mMf!xU#1guyF^p7Z z#P%fl0Ca6v?&W`^Sc!I@1)*btuN2Kf#>WZ{*umstR=~zxJ=!h_gV>N+H1u@#QAY>` zm@8tISz6AlL0tg3iA~di?T{O*fJV^+^(y7dwFzPztesZ3yV;Y(l~cWr6#^C^dKu+! zWJzhUK(XUHnm&rB(+LDn80yx*N8=a4PZwhPbM07C^>iSsd45dU+jcc?3K}2ad69?f zd=bCuFiwF+P0OLD^`yY?Pey08a}#d-K$YrLxja(jMdBTth0;#JQ7+%-_K82R65==K zyA2h-y@=bbsMk3`eoRFj?QWJ2R}MHV17p3tT`nR7q!J4Kt(TX7A6FJ9@moxj??4!~ za=-24k8Skv2z_L!kAKB#Y#-CHxpaLP_>x@=i4%L-E^p|?2u8pJ#~%s36uSizfhUP4 zB71g?nNta|9W%Sa0{+o1<+)%-f$3E0CFWa*f1cG4?MC(v4tn!4L_ThMD1k@=>&kbR zbGGD}zqy??1^X|oBhB>TGN9qS0!jB`EB>z7>{UW|S|P%b$WA9~z-k->1 z4WPlPp9+jQX~2L=ZWS1FwhWB(LBE28X$Q;RdAZgWp4W8dOfrA7TvaaISe{AB%b*7m zQ3Ld6t1}1cH;Y)ktjx}c{Fi6?$-R06_^4QGISKRT*vLMxiGK=7wvsEfO0s*fw5Br{ z18?Ao>Ysw|yK)|a7oT$F-29N`_BDk&_#XI86LZ>DYOv>H2QzyZNc0;;Bhk^4 zA=Al8Yg(CX7bYv` zwo3DxYF@L+&lUR^t1{<~s}~J8Piz0>SkY!~fMNe~+2EhZ-TfaK?B?5HX*%!|_FGre zh5BT92Do(#X7wEurk221Z0`|C8zHNQ_d_zl$XntTyjM6JSRlLbEKu_?!~3qta7V+h z6iL_)QK$jxJP-SwYw}?4%zljSL&zE3UM@etccDfsS~VlpS!51N@`-1TX1s4x4g8&* zNwA0cDE+MSFBtbGr+N>XdXRVw?GHtyg>OTog_O2uqr~Ff;9h7I2p@*58#6z(nRyR! zWb+mnj~?{%idd?jS}J*PiPw1p2GLNzq)=uA&^V!=IfzKpCx~6)#IH0`cWoM7$}fFS zt-ItGbb=<#1b5}_ALW}0iq9f{aS!|xs_{J)mfZrNQhIFmfnC6Z+5FR6>A%LDP-70# zkxUO~)7u|?uIEF;3P}L6pU;#1?@MC2VMwTz;N>&S9|+$depj#n!Wi9%S7rlaSPRNT zh@YV_i(n8;GRH3wKF|Y4cMhn;qxNX55Cj+U8T+{|69pTLI}Pdqy=b)A7x1{ig*MyA z67*ril<=ujFkPtgM6c`o>0D^uU%2s!o=YC6oa-Dn4$ev@9Y&m>~$W-1Log_ zM4JDj_~gRfyj_PQ7!YtWHpMIaf!Cn|YiKyPB5&W=HTFd;wyPUgPp?zh0nYBZ^Sw?z zz1+9Y9~|$@f4lkr?H}LGi~R!hM6VRP!2dEB*VAYXIxDGqLA(R2AZYE&-*}n16UKXK zMhSm~8P>n+Zd~UCChR%{rrXCgNUVB}Cp=`WOKlkIWnbCvo#6l;7XFtC=eWWme*`;W zp7nFD^KUICO(ft^k(XsQ4HYW`=TyTH+smr&qrHM5?;>U+-jPW5Jz4)U@V5iZe7$8d zzfuf|R|&HRIKdf7N%MGu|CIPAE!eAL@!#NQF;#YnnLahPV(rtEnqVF0ALZ822mV#Z$wfCAWdWjDDG>d@I7rvdqdDba6hYY$3tkmu z3FJ?h8p5wv(MC_n#y%iXivJVkNdPkTds`r@=gdn7S>3N&0om3H+X9(7_mv_yN-5Gd z)KUktjZgzswh3yL4pMzk&Y!?3?2eRT_w-Bmv>(KYcRzDa2fC*d+|!TT)A2mPxg5qq z{M1LaWtpYUJ}JcQ2DT${0rFAtd$GuYg-Anv`6czb{Tt=XyAs^(W!@1tVy>{i-&JnE zNltUJ5pGq?Z5P5L9y*-$DKKXyy)N;edIdlCy4(YmA=fEy)K)uSQ5h-nJ?r_8qe?K@nsRM0B=@M4%+9 zmn%5V2&fX9O8qsq{tOZDb!cIPk({2^QLs{3w8tyLq;&*%hwy4_BPhR7z8S)LjAa=c z$CQ~%BQ^ZxdMnbv_iXKp6}rz2hZkAdd^In%^{yIGM8*1`V!v2r zX-Z9PwUt?=vC>j?$iNYi@-}$6J(#-3(Aj(!jT1+jNn5rN z*A!n&F49IaQ--?N#Uj)Yo|-lZOieJmW;D6FH3GA>LJOSMXtIbPTRCROf6%5N(4b>!8yq=F}OFW~C0M>A>0=a9XX|7Q`G$ zws2Y|WtvWs<~VGJv;@QwLN*^$TL4m{7J+pi0=uzcsCK43tYD$tc~;x}JhMmPNtO0X z9bX|9eGf3vSk1l=f?J6~8XTQ1j`h@~X$uS%Vok?7cz2uA_XeCy%K5D$z6D5h!~+lr zrzK5SjKxV_hxJh{p#gECu3zkRiLp~#B-99BBf>joT&53uWQ#Qzwlj;iu^7b z3k`ithuec=8v~GXxspm`cO*a|!Pi0m{i6h|Y#j5y7pNdL&V=K@(7)r7b-}%(ej6XA{cW;1a60ObY(}Ft_IGlLHIfSpx2L(oRc9v1<$kyGY8ONZgtI z0z&MwyjK}ZheOWHT|0+V_-lgRO3LE3_ZOR8<@#)k&BhYQve^U+4XN|D&u2ScxL$_= zyzjTe3%hy08i*HZTyS#&y%ku8%y8O?#{oQz*u%Y$T$T-mG|%Fq&lj~@VP#q>DN=ce zR++YKFKmmwvqO6fhi`axb89xDCM^3KaCp?)P^xc7(`X%MwM1gETy zJYPM@NxOP@Lva15RJr#0QOpXw$5%BL}mz=1U9H9%-y?L|o zG>NJb!msi<%{5%rMr7Nwi91ohz7|1uygqjCFmAZHP|!ljWtZ~*3!%V)K|(pw5z)z0;Rc?o7Z9i_i&=<$=K(B^`H3r@6 z6<8AZO0{>eEkJ`iJ5t4K>(`uJXsaQSO62R;)gwtQU6EENSFO4W7$Rh+TYywTn0|g zwvPnZDrxndZS@Fg&gc<_!W8ktTE{5nl8%)h5ICbnyF*>O2!%wtbd-v#zMS7tyPLU$ zSaEQv-1Iw@iBql7fmCa~Bs@PxEEO%xqzLhHP6;a8ktljc<7gC#TxYeMIWTG*tr2kq zERM*q<6gyjwzTb1Wj$gBzOdQ`JftC*jX~iL6mYDtIXwJ#K0G+0QsCj=xwQ!o_bo#Q z9!g7oh0YP!H`qCT+S9l#X0COeDN^>gtTP>qe#eHkx=3jH34nx|(9e(U&r9_4Bl{CY zD8LY;n`xK~>eB7emb#14Z>lX7ETwH~q9V;j_#L7rwcHGQP~1!}Hmef#EXRZ(I7Kyp z=Hy&DOLQcCtopizx^3Ip!B%Uw#UpAE(nMPpg58zQLIlIr*qUy(QrXvSRDm@k@qs3= zrnx52s=e6WT&3T^4r?DjkgM@BuYJ-yJ;tW+mP)Kv#DXxFzDn$+j6fv@#OIImRbnsr zrPh#Zc_yX$=;bkyy)&6fPtFJ^@FnB)=nKP^mP(P+PNdiP0<9Q6=|tftNISq zYW`J*6WT)I4^UfBi*KZF<2DqaUIU|qRK6PKbPoc5V}S1v_hFPC+TMW;NwcfT@8Oh%#^iBr zASDqVDA5Fe{hLVrkn|#990qBH#O!ZPPr$L(LN^g!Rs$^#7`V(GddjB?axG4J&P~rO z%7z&6flh4G$F|}>SvZHvU7FUCg zc}*38zYg>2c#$?P`K>w8zamIpmyIctp~U;*-lyWY^g}EnQM&DhSxR?n6T@}kWdUis z0UeSIr8dAb>C}A-+k9=qDhaYp3cK-M*OPsPo!h4A3On}0dLq>ZdOG3JYUJ+%ly*h@ zqPc4%9KC^XWVLrS7M&WiYkWN)@6hw1#j6aocp%y;I9;d3gSEu3tziCqJf`5teeC1V z4{yMO{mBQrY05M>1z``Aq`z>h`ie8bUrk4l@r^9gzC=b1bZ3!5*&Xhc61waQEQ8u( zOw%cbz03q>vA!8wpTzHIT-kR|^b&`9-pgM8lb&~?HGVvofU>aY_;@)hqrEb`$Y%b* z11wYFAm!loKFTAO>Pp?@ujRLtdNR^^o8S2|O|{OLEDATUJkRoACN=C7elwVs- zeE)Pa$<8JRcZCV)KZ^)=S}X$^OdxrzXD#U9ZH|bZSlnHOC31GGS~ilrI70TOfXm!3 zAF7yaZTvM#0Q?fZfQHV&*2nB$ZB9sfg}r^VPkutS)671fN;CUZ?-(D0O0;EeBL3@M zjN%EV+p{ls?-~?c+>TnBwu^41&Il|?dwU)5itOVRKf|&*^U=Z|dAr_$prm25CM$?$ zs1|1{k7wa-M|hoYqao0CI1#W@3{mH$jY!p^ds&AwMuMwI+}y0ItnUb)xJJ1}dwDr{ zs9Y!fB$Ea|t%2}M_GgVsU$j5x>*ovh=dJp=jGs&#K0UN+)k=d&Si6?$m;C{d-2QPs zlFgCW`i$JB)}E&|)}55u4HlYr5@~oZDB8oB)ut=1DCYs;JWS)_`*FdCyC%@uDYk~Q zQ(JF>DWKa|QJ*oIhoO=g{LvE+kkVm@slC0ue$SUU^%cdYn&HWE73Gcq_|7SGt_P%+H8pnwH~dEZk+_0NdrsBx@MnMSZPYcI?DshO3$-N5he zq*cQ*eJX{;P@>4m9lZ`OYJMw6%b}J5@JnJi{bTV@|1WzThUj&?jMUwAR5$LDX5s}(W_ zgsNJha^U7+<~oDpytxWicuNF}Hg+Y$ojIkdiD+$?tvY=%!W9{AV>rT-xqM6` zhx|HRx4XzLUfx)y9g8@5bQ!mb8%&AUwTOpe?*#jBc+xwl#6wF=k#d4oeV3$WrPgGw zO)jxYKd)Efid4z~IU>iO;LnSeWP;~UL92+_EPJWR1lxpGT#RLH;T=qZ2rWEb6O~u1 zbXM999kH2>4@0lRo#MR&Z($9f8M(2eOacsFXtNQU`$#x%cjHdljen)-C8Oke%TNd& z)1@5UeLwX56ByMfyHPgsLBxDXLJB(w$jy7vA~T!~xO)nLF<3Yi9PMR4d+pUKxLRcwJaMM>+Qx!p9y?6o;d18yVWC z@%C-GyZjsQlAM`qnLtM_ORpH2H1F`cQ|$2hL^~L1$<%e4oq0j4!~{jS?zAP3`6VHX z=&o1O`ARRZ!o6be#Za$%@lxk;5fYz`p7oB)=FEqVD8eS|vvCA$8T4nOj{h%4IQnw| zkw9$J>pcS2aXM@%TzbO16Lsb%Rby(zrgQY#d-Wa3rk9C!T${PAY`V~jGv6_ldl1Gm z81n-0m8+R+C9d(7WG?a<#YcIB?kvG{Aw!NmcAu=uM9F(SOe?*UiS4lYT!?_SaR0)( z%WyUE+s%J00p}AK~R*<{hY*1~t3}2NsIAc-%5A59;S*_U9t~d{i6<)BQX% zUY0)J$-1+A+Rpc5m%r>1_zE$`AB_?58zxt80`p!|Rsp%h-F{80QoBRIx-kzOtr<{l|DgKWf5xf;)FK-*tz?u#@q zzyUGyq~%^7QJ)WSfh1_vMFQjqFymhwrR@_7Agx7S4#AP|9qUKUUT(wm;ayO(Ggqbq z;1{~aOjmr9Og_v+si>dn&977BKw)-byE5c58!~EF`P#^fY4@OFcL>z!{XD`)?5s4) zdS`MNUTKl}p&zFzy+@8g^+@OgzTRS2=8rb_V9Q?2X;#4N%P4yAyN&;HME42Ye1IvsudUIiXr*c% zASHEpHA)}Up^*|>*S3C0gSY#C(@nove6NZF=S` z#OorD>wYY;131Gzqp}&mi90a0`Pyy);B1lQgx!%k~En;;Dzh`>7Fru_43H98b=>uy7)D7(ZTxNSa*`ue43BJiE+owpJ>#zRv+c z0#wCTIk&}qf_|rR3~7WYB(P4{2d&`SV-;A;Dik^dwJy)ej1oUBVP=ks?3-zCGuOcc z#SbLdOVToG*X0Q9Nq)_kW@$67PDYN&B;^S5CNYFG~wmon@sV~fH^b!{wB#3ap> zhL|@1#cvatoO>~UUU~>!hf7HAw~x8srmoz>+)UIJJue?>gDHX14jRuPIOU&V$F_+j z@MxiKyJqyMB-p!{%#xf+nMK@+^LNXRf}J1;Jdr4iy17A5G&kQXTBiP8O^qx*mL+}L z6xJU^AxjT{hr!LkE4?KW=*1cmmeTU3xLxPV##AW+8(VS=b7pa5IYT?Gt_}_aB@Vjv zI=}=z3*FVEQ!h5NnAU0^H?Fm~@rK2XO=Qc{9G;L#4|6boZ(rKhIz5A;%QH3GwMgqo zWFV4uC2nZ}>|9nwVU}h}J|f!OzLok!D|HW3dd963{`+>NTIo&H+HSp=c{c}6=JI5n z&h>RU@oE=YrPZCkd${wpy)DCct+u^LfZg_-Cv5wpn{E4=009K~5CKX80)VC~1p%sB zK>+r`>Kqsbf-p#tec>>>Bfs9F6J5ezbod<3+M!%vnVRexy8X4q6Ej2cA;L{4NNOR} zrKK#*c3^F=1C?{wU(lvwVaG10x?=1VY5iy^!5WcP*oan0t0vb5W%cPzOUeqw*W`#+ zq?6RDSVKV7+zQ@3%6U*$kAjKC%-KQe?V-*-*%4I{g?iiE*CwV=W4~X!aLeq%(HnF7 zWorv3>S=3km3k7W&B3%L>genarI>EnCUVATzpD#>zXvNFAV5OplQM)FRh*V~06ZPRP*cj&cU>Uy2lcM%_Q z+mC7s*I;p(F@nYH_R^lcHMp2xLK*nEcL*=*5#py*HOv?IK6C(QXJKEe<=GxmUb7`q zuDxoJ6jgbSSj}&8G6zfDDj^RK%jVpYmq)9O(|+SDNkhPO&1 zcTcj~ZL^|C$2JM{whKnbHRF)JRRRsrZ^~v}^30-0q>n_J%UZ}uqSW!~6jIGB2d_Nf9l%ZzSBL}-EeoMwPE+d1;>h~^zH~aj9DA9 z(la>?3@3#L7wVoP2E`EiH5u$}1}#CU+CHxfS*dzEI}vlfigy)`5t_`&e~$IrcKI*h z!6hkuk*M^03dp((t%J@WIQ^T*I&RW!(RG`QwN<*l-!`)Z%`t9^qWIR2{ZxJtdnzlu zZNd$Jn4EDkShdDCB8pc9jAOE&lf{K%U)uPE?^wa^3ja6G7DBfa9#Y`KgxK#$vfw*$ z!ob>|wh!r~6!6D^wlG~j55@z^3+W#71waibh4@)2Bo?ev>+=@2lW!ufw|4pij!hBm zojkK9&XtJe0*KiJ2T(Z%vHEMv>!oPjLwTKEW+JKgHW#2cB9P!P#X(#XZ?KE@gl@05 zDz$$ziV=WN3pbC@S>G$=2syyEDMb?pD3)&QUrs12>7HPO-Z_OMDG&I>C1PPMB1-CWT^!Y)w z%x`dyP}F9BjzejiE#CGkgcN4vyHtW%)ZEb=2#bfln7i~Hpf4_p0sK_1W1U^>87y|{ z?%e_R1I?66Ex8LYatGWAh)IzOIgm!eyN7gXr0F)`yHhHKoCMbAAt%wA@)}JlOs1!s zq{@+!3hatI?O_umE|>+hSX{}Q_+Lx)upo!_o8*4pJdv#Abf250JC~J&wQ{xO>e{w0 z$x&vV4B@pvb#SGzMO~8pf@}a5^}jh)4%V~{ZITZvXJ;^1Zs+#0AQfU??{pK8tV*t7 zn}M0GO0n1D`v-T-k8*q8C9%Zogc%QsJi1=&#m@J-4)S6nT-e&M;u3q!e})&E>}w9LM% zwq=*+VAYjPgt7x<9kDLyG86}0O(l)JN6=u5Q!#)h%d&YC>j6qAkje2Kq{E7vm!jb4 z%>&hrd8H6L|0A%h8;JahX>K8OdoHg)z}E_$iel5?%IHBvQduG={`HExji2Oy>EmU% z;~#{1_`gt6bS7@)&DrjYS8wuAgLO^ibh0ixG~~Ue~^?@nKszmDmXJ29^iD95k z1sJCC#)PB^Lis7kGc(g)=&NHxyZj$sW}qUgni9aF!vB|H}n2Tn_bY`l$k-+Hl-^aoFSDuwrAH$ z`~TXoN~-UV=^OOsjDF$(dPEKIwrjA~vd%pHV}R0)yFD{+i+_C}D!3_e}C#ZMmzK0P{EwrVy> z`-BaV|2o1aBb)0&I_{AI9QP}+cn~m3PZmZ#q9Lsp4cEWW^5_=l5O#U?v~>5#^+)FNFK><0w|b+6}H&Nn`B4?lU6`DZ82 zzx8oO4jz zypA7w*(ZnTt$yOQ3y1%pJ`08)e)lkp!4Z6EP>)&IY|N}{(ez8U=~GN@JqE_mBF;0+ zO=AmMRD07_tMKap!aw*GQW%pDREJ}Vqe~Mm=FHN~``0+L1h$U_wu=CprOZzjh{7CV z=AYwEwint}*$Lftj$f6r=6qz)lr9}A}S%+H;KWe>>^3CndWM+@6 zZ2{0r-Dny#noCAUNRP66%zUPk`2shHFZKJp(YC{>_y)KRQ#=dgqn82Y9$h0dgs0?Y z_yE5lhII%_F;0a$@J{4$v8nW8*SkkBa0#>9joIZVhM{{(O{x$`W4?wK!xJ<<)>PyO~FaI23Zv1?I6K zjlwbWU|uor3(Vs~>g@BvJUIT^v*F=>qP4liZ{`8p%r53BzZv&jVCwv4?zhe0t~&&w z@jVRLQ}A~e^Nj!1J$Vj)mkt4csb!`|eU2)`sVnVF%-I~%J7O+&yS$`9ttLbC_Dx7| zXix)ij1s7UV5_%dPm!A-#jQ!=@*K8Aw^&h4k> zr;X8Lyo1eBtm>^e^;)DV`cv@c1uWym*Zm#iPN(kBCr;h*e!{VLwx`P~8d^;8fuN_S z5^(UxXghB%Cqfvba-1nsbbub8ThB;pE4aY<(KRX}qb?-~bIP!53pS#5aRur-+x#;D zMOa%7{@UJ2Kjp-taGp~*9gqtX<{|{DV^FeegmM-AH+FEP9F@L)D6GAh+Q%v^!|T>_ z>9_qrPke=*&MQ%|xv1Q_hS!WE=A(HL2lX0^T_F93aLON7CtNwa%*!DMCJ1jMLE5Z32HD9h_A`Qg5(g^Bn%be@ z@>w?N(A)Uih=KeVDbl{cI{_CNm*knjzfYKj95Y1eX0WKtF(=`g4Usvn-VVDiR%VW` zc5r?$ zLfpNJ1Eo_UeiTO|C*)rE+S7bq15Y^m<0ovO^iN1VxWJV0!{(8GkdYM3_j(+LXCwMS zOYY`JN*QngRL17Pd~`J1aWA><7pY}%Dy3E)d)U_Eg%$m6_V))zbBEG{&=;y-1rD!FyV@Y$z@M008e`J9G(@^4(4voj>v*2Ve+qSPvq6*za z%6BHa%KtKe#bh*&K=?+`42|jMSiJQ%^M^I!v6X8c5DI*N)OmuY->!thj^;vOrfJU^ zS0BP6_YCzeLH0#{&H zZqF=^jt1IbHD;;F)x&%r#!zJhZyTYY9`La$Ew#Ig{~LSA?i_?K!n6 zW36&^>VE9){9^OhkeHj#@n6Ra)8E^vZrkUrv~IsHbDfvbc+=QA5-_73_6MDgMnF3U zVvvwNBMh!(LvMW6&OzlusnjSjpGBa=efvrtHXD*PmV=x}92B|4t|116tCYiWcm6rm zuEp@G$?n1n+WW5bB>_EJ*DllR!QBPosee8#wp(QD`o(>BfQTh8AVdYM;!htQi z>>L|NRM)=FAl$d1EjDC5qaI<xf999YCg;08p4jVmUNvO&rKsLgYo#|s|ugB0OWvYaCxSe zWj*dB$NP58EHv~=8#%;QBWKTT`^Z^^aa9^VK|()T`gjC3m;q$!3(1xoK-8Ajjb#Nc7zb8l)brPdQ~F%@d6UM~H6LS50J3cu z<2Iv0YjbEF8@}coqy!poZ*dWeyTVhGVz>)2Fu?rV$FXToDzj+FDx7F_NU|j6x!{$=wTUf7fs#{$zQKM!6_Cffc`<($Fjy^fifUn?nk@ zB5%*bTI{W+4cxRq^^Uu7BWep}#Kr0OM4baiBOQ%t$lxByiM=6TdNmqqOxUJNzUyJC zGNmKB#>t(EFHJVsYga1wmVi zHoz}!$*82xzWIS6!RkfMlARVHV{|b8z;I6o#~qBTFh0ymCyO%y!zz?u&cMWJ8vIMz z691A`(!s9gO35ucfbSSyMM05y4lcFndFK|--C8_%Y4O~##dAT6=XR;j;+gFzP|@Z) zx&M0_MT0hKz~DEb#!Z=#-@y7@PyRM59|lp$u}aak{Yr&L4|ORa^2q!KJLN?DFk0)YsFXawQaMt456iAw6{>w1dGKz{L{VkQ(v=`I@66ia^2z&`*nEd^nBk!OQ=zJ;>>T9{ew>>$JS{>l-HyNGCOK|Nju zDcb>R_}19d3_EZfyoxQ$UDF)48im;W z$Sy*mJN zUFpIs&dtXaM;qzGACx`0-Q-g-%2xvTWHH1bAughP_{^cueAaFYp>o(VMs+pM6VVXU zS5o7gBshJp@JExBv5axGLIjp&qGNRiEa8&Rv8EL9!_7ljoNCFQk7>!YLyiP>2zk|1 zNHE*j;T9s73};1jLL8Ok4x3yM=BPLqKKv@8h)-DT+H4szVUZOtGEWXwJY};$p1DsD zz3N11a<9iU(z+gmgSpub#*EG+Y2CkKmx4HZd$@_OCIazppoQI#pG$r66!CeQ)|8mXT5=HZ$)TwG?EW=s_9w1jQn#snDVl(4ymP^W{)!0=k;>vQcR` z>;NM+q)qaR0C>s&Mbq4rHqA?{ZB7&B-JwK|N7VtxQgf7cTPhfvkS=nZs2+f;GA*%g zhHX(~CBVAvZS%^sHg9pGoWN2%i>aT8WD~|g_*-I}=V~v~+*b-O`Q?BV2`EfJKt(S!Als5Vl@huW2pwcBsnINUbQnohEm!jlJySr0X zK&m%jUc&{lbxh~`@EYz;Kopqnp$!hpb#Z(m@LG#>!F6er?yroavZp2U#xUPhhYH~b zYXxh_~EpK08Kf={| zgM|pLM?!$D2>|wJ05I@N5bH>LGg2W&_;-a6`+!@*vw0|@t72l>DkkJf zY&;5hoH5o1+=b%=ITgFB*~LwehH#AUB zC2D(m^R`v&+J1U8hn!m#wO#CAV9KW<f&$G;#acx_{G}0{m3qIGDuzg30~9U_YQW;qg1HtO&NTK#BzP(wN zkWHlp34jQE7k(}@y{*ExC;3H62MTB$t8kPfwS1MzPj>zOBE^dNt7hd*2!4qM8q^QQ zIV~`rTc1F>_=TBX5!oZNFQdMeJ1{$F>~T`208P+SgT_tuP00o?pXyBK-9&x#7huU1 z72N9fa%Gzn3dyU|@f92{Yv3%fCA|vSnbhoNPm34^$A+%v4SaC`iBTI}%>9^UsLeHr ze)j9DQrcXdsI_IYDma@OP(lK?>#PpROkFpvPpqZPk~24wc{1ThQACxy4`(rfKtcUeTziv zK6;*y@`ZxoM^blriAe7*k)Jm!zlHLyiO8;9EI4LnLVAA&wASD`D)`LIjQoODY>B@S zDMF6Y(8$5m=tG6J1HdfAM6`L|k6IMiIe{Jv@=AgVvtGtluqe}IkMkZmR#0Ni;FdQ7 zXH%Yjz(Xm&8tH~NPh^&X$G;3VNQY(^p7CERea=x|W+Bbk*W3FALgE~ZhrK$Wf#pvtp zh#w34m#kM%|NXAA-Py@ZBi%-}DJs?%W?}-q@a5Ai*#vV7i-JcAvcLY+ruR>?Mr`MxTMjD#FI`RT40)#VSi9lU2C5@A??{7#PAO2!H+LxK z!yQCUKSaiHF>`9I)_xb1DgRTCOvPBIbcA;8O7wDT@Om-EIBNX95mdf)T&2F-y=XoR zC+vm3r1*c}&thgT-|ReGr;X5H9DT2`4*T=)tFktJuT)@Uq+D%|9Gs6Mp&64+_lW3W>L$pbSrG zrvTIJcnuoPkH#WKbi_&}1F~7!yt7Wwacj@k(cGkTP%9Ai4^e#dO0+%Ne%Hw6Vh)UT zwwZ|ap$EaK9D}~a5a_DoG5j4)YNwI>9m%tN*hVDH>k$a+A!rUKR5aK|zDg9^=ZO_i zF}32GI5K>aMq3I24<$#uN#WbUnSP7I5Ei%LpCm`vSK%7<>^^raJ zLW40>sJutM&>%)Q_myx6@^az;D@3o|MgFk#W*V~`PE8r^7{etw?)k1HIJTGo?kTv@ z(>z4zHLb)W+31BVR?%I7xuF~+STx2V%zYx8Pmi$&PJnEk%zZB z>yy6-Y?xPwZ4Ppv+*hbj@?!C$iof;@ct`WRf`yJ$ZX;{gL?G;?0!d>75H1mbO3nvZ-Z$9H4t8!V)@oevt2Svo@vXNS{^&{+( zT^LKkn~d=NRAeD9)OpERnzo6oO`5ruTQ5493+=ZXXc$0WqHG($WxBNsFMwfl7f!QC z-snLYz5rQ5QfDbQK|dVjKF7-*OPKYN7+l3&{ASkABX$lJnisa5_zcy~q$D%?1K7z|@wkif)pg|m@}J@K zb-N(}0hJ~M<|xo%Nk+9P#}3*miuVwfuR>FhV^)lb91N=*YtVh&jY^S0aFj7c%J9@j z$0o_`bf`tamup60vk%49@2f`XdWH_xMH%M|h75ZDD_R=I4Pn|Sd_M5$`ha2QVv(0) z-C3q&DxM5UO2tJ^6bTO$?Am3dv{F``dKmPv;=!(&&k8yN=(mwIIy+($fUMw_K+7(dFfho3~L zaM38R>UZjAKSdsmeB@5B)Md)jGEIxKgh2dD62#@2>6v`0Rp}`eS>#mSFv%ZC+FBzR zp(h+?LzX|B0rI((sAnbi+@6)#`#&pz5Erh*e`QAPN_?KRqgUcRSc4pMLZolFB@VJX z;)EjeqewBUps?2#gO?)SaQG-)>b_h%k5+tzm zsxh{yPxSkuF|d>Q2*eTY;?GAaW*dDKDcOuZZ;WnUt?SE|^1!i}`D_L~reP-Vumt4X z@0NgU5m@{DzY46kQ2Hnvp)5Rg{jok9Kwn5So!k$WDl>l5+@g8vtj;7oZRQRXl`lFi1I#V|~K z=%V?gr#(~>d4$lBMdRZW#(TLF@$(H5AC~&rAW3{E7mq6hfp_EzAJus#4txbMH&}4? zn#6`rtS9Ql`uQUYw5QgS_y%w50jT3p8*d?2VyQGhlqIAA#O92%q2F@^VxepWA0N%lhSGHN`=QY~ z2A_l)?Q^Y{_Z7FrFyd`(W_abxkqG2tmQF;Pa;L^C%GnT5khrp-2Ad!07yVuH?5B3~ zyB94s|8A+9|MJXMIYzCOJ(%yy`c6-ntuCYv=l?9^q4-lO$v_GfZ@!QRrDS=32h9ik zUXi&R5g3K_hl-IoMQQFQ>zv)dIV-6`)~d?>IX+rOe9S!a(I~VkUE;&M{jvPBPLNj_ zXH@(qD&>Q`6V1dyW%i3rNRql2Um_+m$z_RldCK%Ab>oO)>m53>QxE3baIR4CAv=$jQwrU)gr$Psz~}RIark zQGmXbmJb407Y*VP@-xIrw)(qLPhGBH2S9il3LOD>Jt5cx;EM@Y)a6=l|GBm$A|qIf z?Ettlec-<919vLf>>Y4_Z0n!byk|8WfVPUb3!Pz%_K%IURVOy9ijwb4miizGnX{r; z(B(cY&dVafb);6eV9b+{?7&^agTloUJ2Ue1WbgO@}KR`taI0)w8TH?PdcI8H* z9yWnQy$PS_?3O5f{gpsYuCMt~8&J%=;CEFsy4u@+q1X8k+sX$hNB!P{CP3XgCG9Q+ z%>d_p;HhT)wEcd6u5($*L+!_?NrR8+8v4x`6zhM1@cjvlSNQxce>I4)WM_IeK%?ff zqilj_YPy@UgNV8kXgeN~wh(ngEH=S^8N7LdH$4+4dmT^qdQR~=PVjoh$9vg(cxe@1 zqGHEH{6Ul={pwNjbO7w}`4|t~?s@TrAjL?;Yp-CQmp9+@-t`LKgi#fP9XkWa4?xgb zJCa=qe|R~m+!>2`S2{Ho5`98@$#fvy(fx?N)thQ@^9L7G?>bY<91Dmf*ouwg<^*a+@i`ZCrHIgMy&hV+xf zaCM%ffgzBnYB?OgNh!TQnx}==Me)`C-)kraf+gl5-EKXQ$5@{lQm48P5;M!yovpuw zin8Gk>r#r{r?fWPZzbiYSun)Ly-;9Ebd2#1?qVh!x$H5}v|Yoi6Z}^x+TAA+`A;C4 z=qsdt{}CZ0?LFZVEObsl&n~y-9x=J1gV0M*!V8d9+|ZuD^51YK3a|f>4O9&2rM1wV z|Hf^5L9{$nj^U=-;qwWQ>uI+{hhsi|vSNJyzl~w$heX4&v2a5i`*)ZCSROM)M7rWm zVtcThONju>pADj2{b%C;S@Hje_v*KT>PvhgWzHdjs>zR+w4eds_xlg+_)bP=wr@Ab z^Mt$fPA->m03it6vm_+HJ5s{mGI9EZ8lnC!TqD#Gu9pI?y1cx|uHD?_5r&x|@tnqA8LqJN`&@vh1ze{g_&*(s94Hy5&OAQM#zJ`rt+R57yfwT;86Qd& zB}FOpWUc`x`WV)L9bqIo#ZHEPm3o~@&B9?AxkePpV=@OmmYvi@`?xSG4ii#~4J&?l z+`xLWaP{y`L2qc$IkI-7@U=wcY^?f>oCRGDc%dqxnY<=rPTX<^Lp=5Z=d*2EJu7ZwtURa zyw62vIJsxDq<8##)8vBCGU7kFnFU#vNimyo8THI~asy<$pg5a|HQ{-^Ol6k1#cFfi zFtiV_*KfxC_>5jk?9(^0ky5LNqN>0&1n#Q?H?i<)vv7KX3vVFEFP1-1fc(`tHD*G) zDyePPC_&`qLyM#TEj>qfY_tfGiuqJKvAVBi^77iTWwO6tp9#A(ZEQV18Z=KVs92$P zC{dP>7zGgwciGD5$z0d?T-(%g zS4=n&Ii}fbR;Ify8|Co~Qs}_revvIat1=UDi~`d(XO|!daGNcL`>l#1EX2%ti6SsE zX}+wmw<{A9u1c4n3Lu@`F3D1@=PFeiwado!Gf#r*wPW?SfmJFn^9X2=Z9dA-&HA|& z)zQvioSBxx?c(~Rj0G6hcqOsljFm0>aCU;VQ2&f+N}@D=BnqeZiIKP;8fu2q-K@-D zMwe7zx5Eg(N;INmPGWv#xBj^~@a^YTu+M^CqS*)$D{S1&JTslW26I17hJ$_=SJDNj zyoUCIZ%X`c5cQ@J5y)>zW*KbGac*?Zr*j1t^i04kz&D+0hEx*b+MB8|8{haMq#TXe zlE6Mfp^u9ebNnQmxnDFCVF%p$R6bf44lR*{^_l$fE}+uhw%kj^dpQb)17AqM>aFR1 zu31A|PMJT<94W&!J@@mv9&NYY%Qht8&gN#WGIpoRjNwQ$HO7dlK<+cO;iejLo#1 z(}^YJ##)>{*7+K1%p3qz85x5(til!K#qjiPgl;xpnd9KbhjN2M%ZKr6aB5) zcoD;WBlhRq(mf0DcrIl*$$0Jd=Hy&~%U;^H|0I60!qYuS^ts2i?Wq&9AXr z*AkblZQZgEFSW(o);&WzSAYWktAJk2Q#tSN z)*AVtv5j2V4YkHhY|?w=DE&+lFu;P4ghuDptK<*wqa(13ZbbW;0Vs8N=dzW=Om6^p zN~H`#c0!#q6_+!}N6hT1fVV~Fk2XqFcQ*6s{S+*7XT>EgGN+;WAVEe(rQM7-*@Leu z{zo!W!hbta=IytHH9tY8#U&NhTOijV=}lkrZf2Kw3ABF&^Uu z6mhaVpOojCxi6=z1>?Jb)y+$oY>t^+4#@>Xx~JnObEHX4n%ZQe22+QAS8U#j3aHJi zthOiPm8WwQVeY;pAl?n0BZoul74&`NW`(s_niJ>byEDlGK1cG^?tk&R4#y>i=6ShH zt9xs*Uf;b*jOb2r1!y}}K>>Sl=*^}H&b*g+(`!D<+1@-No5=z2SuB=aLmNtKC(aT~ zC$?z~?b2E_P=G;3e*?r;a~c2&Ffup1u-ltXK~Vb>Bs*=a9QR6F=rpda&t0j9G3SMUNidR9K*>r=kEUSIi^ zk*SKJ$D5TmMZ#U5>*sSxtvor8Mtpas)bd-}D1TbztqkUEmHTd2sqIwCaiW#-tJ^5Q zu8r~=+bEZ7in2q!lEjrx9L=YB=!dMMNXW_5^DUOyf5(J6wQjaKuN|bw`T|@>%uAi0 zJ0#$*HtOp^%*SvPtKBGOrHx_+qln9fK0^^B8+Yh18q z-m&AD)ILD_KU%^?ckBr zrj6twM#7!PkMZ?LdL$$^3r5T0+(+(RVJPn=6@aLYS&#=wrdA&EJ1@Ab86ulhFsMiFNyt6uHK_0=F7QT+QD|HS;3 zn{RTy-FzEH`J1mz_7&vS5NEB2n;3BQB={(Lyo6mBb^ayAX6C2P0lhMYz#_3j(y z^qbf=G;t)Y)O&bDQ16SJxPOe zDM(xs&XxjA&aJi}P#?Eizd!ZA9GFtSf6#t#a9^Ot6XwBj@f!1Z2G-ej-L4#j!tPac zh}H(Qw|wg3h-cfajd9A!3-LLT<^7xyDT*06UT&LW#x*i43wC_FJ8jM@lTLM zmUECGe22mwx7!H{gh)lM;sD;ji4_8aM zxdK1W-}>s8(K-YNBMRYRsg~Prpv=Ax8}ReG6j9p2+&@x6O18Nb8Jh_7*ztDjYbS93 zU~A8G*O&$_#T%V?`J^m^*C!jI$VG1&38#6)22$>pw`MT_*%L$?IaO7r#6 z=wht-t@l=pq&Z1*RgBx$)dNB7Ckslr+`tS3ZeX^?`qsdDH;&thS<|^CM`X9Ap8+i7 z|8I8tW;TH*h_MN0QRvq5y1{HYx0>8iScT9wEGIg*t*>UDc~`6X4_1@f^ZeCZyN#<^ z2@<`l)%3rAvVaBffpC|Aumm9ZOXH_p4JUhFA(t6-138_g7)_Yv7!gU``zATUr2eh8 zIm7f!J5Q0^dQVi2h04?!H?NKaAR*4Ma^J3f%Pf#trZRIFs7z#1jazDE+@g^&%Et%F zMBHu@fdOkzkYQ0_OV;W+mYEp-CoE@{-*awnOo|w9BWa*yZq{l(Z!fX}Pr-qHB%TjV zOYPG54mR-X&ykLM81y}z3^!BX`@}?k!b}qWB)5>XoE7ZlXDmN9IK`gCZkJ?V2~(NZ z&@vta=R-Zgb#ly~VOx&3Y{(&?p<7;(?_!+snZIG34N?!z1BF#*- z*Zl;7C~yUl-_QH0S$a+>hKJ)xFnKII*6XLq*&~;L3~VlJAUVLH!E3Ov5+`NoD6SJKZTZWDrq}0_h`Fn1tyAQkdaMP7^#l1Io4V`&ws#)zQC8`~ zpP4i7WHL#B00ER1B7$`&f@RIJpQ~QK%ND<@yBhc2D@z+>rDu{*6AhNtwFFUA(0~nF zz+Q-ou8k;SL5(6Ps|Fi3V(;JoIp=-fDVY=?gy`bWA9?33r#$C5&w2W@gghiUGp+rf z(X+kJnJsE!OeO)f5!(bB+NHFSQ)KOLU~+HbTlCUJeIc~_9Ry)}kf?*zKn|_?x#e;W zyyqjS*ei5@pn4p;uZ;UaJ-#k#h#B4%Gdw`H(#cD6tb+v~k{BXAG(oT53Os-P#{z&C zSwN?p>akWAm#dmDIR?H52v|%o=%sNK&YuaajztnzXGu=vF1WmZU#hM27vQX;mnXi3 zWzxdtQb{PRTi{Tkg$ONhZeQb-WDlE5HC?$m)#u3rfV9t_i5op*!D*RG4C;1M99)}A zp;vlj)ijT7v{W)>>wckT^T~mFtWdCr+@2hue1?2~s<3z$d8z-+aZEjCGSgui!ge=G zWdZyLC{x~zs2ufTs6aCYYi6^i?{IgN^svTa%~s9M_p?ub#KqBI6Zh)L1){l}mtayl zpf^x z`Fy`Zc%Cum1RJEhc_ASa{UOjL7g@y&?o{5zjiW8aSuK{{Pr zR^R{@svv;nkqi`|FD|PQMT`8EhG1!r3!c7BZv|34`lTNrpP>1^07>~BGH^b@>u^3tE zaxWxv34EA_>-vtubjE#=-^3Tk$}pet)-g;;4&yr&)SFM})v==f`2oRkU-stG>~hVK zepMo=tXja5mh)MTdc|9@7D{+A4%=~j zXjqzp|La0DHL&ZhKBuI!gR2n-Qw1r7L|{6&Mo@V(1=K)S+k};`5ySU4FDnz(s1dPI z!~87b^Qlll7;51(*c4{?m|NbSlrIy8&nL+>&((&^i2YPfg|{bZHe7$@+-D!WJ;~N+ zJ(*o$zpd|TFv81cRO-9uYfl5-W!|!9W43i!jkm>nudhr#`l9=*z=4xu2$;DZB`9wp`}3(@kUrO-2T z9JpiXHZE^ubPDb#i8Z2s9|i2-j3LF$}t zA6RzQHMfh8+>dKi1u^l4;=G1aP6)Yh$z0(5kJ%CDF3Q^wzDmpF_Bn*s!`hSwSOoH2 zXixw70o(D+ZT}q7N0`CYkS&8**mi4Ol7`$~!etCot4rAh+h*C>$6rgQACUlfjP?Qt zsgMkQnPmU}*Q`3(D2oC%Prbi$BHgNNSiKyy^?jyfCCk3zzm1Vu3Nx zq5Wj8?Hx9_2W#oReXg(sU*rA`Wm)3IpUuh)P7pw<)l9X(8mPW2kx*aBfi_t4DUWjs z6A`N($FapyS3=}_srMy2@KRVRj^uyAQdv~ZtBk)->sz?rU6*^k2!%p-R`yas?#Mz2_N95A43ebv;{JE`s-cnlX8*l*8sRFZlKlxAiNcba=M3-n=8O4#ANi zF?z;#MJF3%n;t>j{)4mZr@D#BH@b)tQxeF4@;535Sc6&L)4LO(4G=e?w(M_%(v zGWtg)HT`G-`DPE;#QM z@}iL!U!pQh&%^9nl}SFI4W9(m@A3f+du$D^cAd!`03(Ymdn^jRj`f-Zeo_+U#^Kah zM!WbH9Qn!OkoE$ZU9B{=PdOx;Ferwg{nY-qs>L^>@}~INIG-aH|J6vvw^)uh2ej-B zw7n+_t^Lu1vGtHZ#Of(5AGCB6jOEGdh7$24{cl_gPqjL4pwaBOM$Jl}Z@HC9Wc2E& zaMEicl20>zFSd*ut=LAIco)u$`s8|41q`Yn#h|j(gk0hFWqrFs{cI0mT4g6}^}s4! z2JM6A6|{r)wFi%3!KtZ@V4jSy+8w<)U74ACy4q<0SreHcL|V?;_BKJ0(qCv~f--Qm zq^#CVZHz-!K85=fmp%^fvTEd;dWu89Omd!LxfsJa^dJ=`xWTyy=WA|Ama2~Gh78Ha ztaEgm+v4djwNCeMF0fc0zLM(WX;?gI`GOYF3+FKWTWV4r6Lh3Q1Gc=40-+TfsZ;^WOJ$(ZS zs_bL+C3-!*w{=i(rj_2y$_>u4(tGkgN83N=G{a19Pa$+Y%qPhZsIjHx!|WYIan;xA z87!8;9^?ym+a1GvJY+-jK`EYR{BlI)CeZwl1epe4)kV#fj^7^fLqlv0zWIp|J1fH; z%J(F%O(pE=?k4tk z#Irb)g@J{rLL6LMsAEFz&BQv{*UF}B9mjk3z#$OJ!U{QMpUh;RRu|UDiTF@v6v?9y z{W<){JyIroZ6Ooho86Zwksi@N9v>7|AquFwPz;J5{AL&sGXPG^b%hdiB;TU`4pd3+ zTvyZSQ&#s~)@Rh(m+|2LofjamL%YYmi{bl3*}?CSOl1f%Pe=!zs@j>ARu>~lo(W|% z8I`MeHB)_>UTz(v28fe0-(6AUatW}g*O2%aexZ&FUFaKWm8d5tfapYPfVwc<{Qit| z#ZCW~fyw(?ld86ma!TlPT#yjjY#3g{OOAA3mY2RRMsk!hpETQWnxTk{lLbOM{Z=NB z@BIMxS-f0zHOt-`+hHb!0RtEr@E4!2cQu<%){e`o^kw2*UuUtnkB#Fi2ElLGUd-{gAA?VF?>ppeokIk_?u0IC ztU6Du4b}kCdzXg z$CGD7nbEFXT7;X_E-j3d;zH4CD{qjV!Zt4iTihU^GTY_VqD}J6c(u@3Z*}=p%w^Y= z2{j-x&-k_6N6Pb-7!kk{-2!xw7Q{&b49}uH*GqvX4LnJHK5eiz4MFKsBW0LABvOsSlMaU~lOW~-^4GJ8n=Y`3U`_DyD z16~O`YO5qnlv}(D-&jmdx0Pw3M19doxYz0_HGCVuYghbuE-kA|@}J?EDRSa!B z9UB+pTqy#AyT>!#mv0me>Z?#CD9kD-qSg?+MOx>vXtS@Ljq>yw(K8D34@pAV3Ckvv zxLeentHt3<_3%N$rm8&o@H~Kn3ARJEU8C}k# zVUv5Q19;~qG@AWkEkwk=rxe^-CmPbbP&D=t6Bvii-J&mhR=T_s4JjA=r9PxQ<(s?B zo3F|Bax|i^@q9V=Xmf+KM7Clq>~eJjDe)Qn8!RZ}?qg4}Hg1YTcuN#Fy!93(K!u^1 z?TkDAz2UrfwR!Iy8Q0=cI)A~mD_N`z@Z!Jd&lfAr7ca{fw=x#aX(Ee(>|k*t=_%EI zk5wzPN>r6L?t2<$@9CjWHHm#di(j+_Vc&VfCrAkI5d0}NgV2{{pq~@PEI39`jc8r(^QMsj-m7+lgfkljBE z2Z>d}3T`0f-sP5cGI;eClqU3Te47%2nynrX4@!yO^{DSX5!sFN#o&0Rc9f7MO^^7) z5a17IiJwxYI>DG{-(ki=!0=N^@GLOwQdSzcCyLola8NXi$-1!l8$e~{tpciEr# z3##Q}4SbDk3Yui2$!#)VyK%o@?SxQALS2cG-Z(QXTH@ttx!TL{bF03Y^IL=TOw2xc z*yg)QFgO$cvDA09_J{yLH>Tw#?cg8M#F~7HK7y_y3I^!o>lt$=ayRj!E~X~7`o|P_ zP@|S2PW`E!(n>kUF~mdk?_bTVZq#F1LuOl=fs9mL|FaxDS9K9O-b0Fp0jYH*qzOi! zPxy$Q&?3pAAv5|BSC)Wp$lj*ZRy<96f@z5_+{;M8`qf)AW0N1}(7B2RC8TF9LUgAUDMtqZxl-43XpPY^=qt$|5(pL<;JPDR=D_S@2WAx{WMtF4i8nU8 za~ZO{4E__p48A8$+VK8w@C*gV^?q%gAdf$rZ5xG?ZP1B7m=zB?w(mxZcV3@~i@5`D z0IK0_L$n|UQIn>|9pa7gKzzprVuh3qAU>Qyk_@lb9%FRJ$Jq4p`UeP#I71#MNN{sX zc;3!nhlJG4^EkQ$3ikj%S@dTmnI~Yq4$y)7ud$Q%{!G7tI~Z?tRnG}zuf?6p#>ZG^ zpw?XtP-~UxXjvoQ#TvqapnW|OCzVZ69OlGBLJ3y1a7w`M(UkCeir(Nt zq_&yWe*t2r#D)LH+II$j#7m{f3jdDFT-l^|;vv=$)6PPfrtaP$OncsRP6!YO0ELnf4sBbOu63v6@T>+~x~W%4^awg_ zF4k_u*GW|8>&5lr?|DOdgzZ)gGObLHvO72!vvhgdpr{y&Mcb(EKqHs+Dcdqb0@&py z2k!NhL=UKL&K+L6DV>}k!9LvWiVu?xes*`|h3HLthE%3+xYz398z3TSNj0u%(Dr=- zf1#85z}et=NuBsy+#ZxN8qbp(>HwqymbMEA=jIZr!ltgn#+^+>#6qjfW6}uk@Jfx< zCGHI=;gLI<3N@bd>&BZOL7m9 zGChtKym-8XhHzO1k-0CG?beorc`la!;L%VU$s)0euQ*(ulXmW)0xf$9uWPdIjD(tp zxst#6{0)Y=5IV*P*W)S$YEhI8$qXqrtw#5U!__$P9o?kU7o@A({JtYN2$6W-Ipmr>k3~l#N3&g!-ufeEJNSy+MAi0;`E!HY5n3)Vmg@wq} z!sIc+B7|_LOt(D-U1G5jV$p-(6|~x>lrfZHRwZxes2c;Oyx#`g0po6TRMk>4)>xFy zd&Z(%tt4Vxa|=+exiH(;g1VZCxX%~SE!+}-Qx)^_eQp!{cvFf>uoToO|!_1@7$8SG3new{M9NkdGn>Y zsKhRXk&c^Twz}WUFkRIEH8Gqcv0*x(A;$SBv|4MqT=1_a`9Z*`KY?-mmn4l_%DK>yAgh;vocYv@;=0aN^hD{Rl88AJ#@nYx_tRVk?X z22!@I#-qB0f4usT(&#;ktPCXfV#-Jc)byz8Sgxk)nx+VwNvLuJtOLuk0D<@OEf-44v4K9+hFqE~4hwV)o=BFC**VB)|?;>^X&T}KT`1J~rIr}6YQJVMOVJm*6U z-h)GDL%Aass{G!$feC%B&ih#1ZnZl1GgQNU^#RWB!X{U#Oj-i3h6AX zGfqXn=d|nw*4m-1?svM2g>(_MjwzQeikj}?;e;*_3#5xYtMe%hyI}0jME3L2LxFV+ z2}<(={f#k?+j8ytwBR{(;(bq*c=}Rp55n{z%s>ax@ z74<*lR0=YQ(aX+#b+N4;-X_smAbLG9E{si`B~tB=_{M2+y+qmJ6{-7#E-*jS=ex8{ zM4m7v^>Yy(-sg8tp`0LiTl6@E#)si#QsM8;k?_91K)p&*m^>>_JuF$YJ}<2jxKxNA z;-_e`ozBf^-d*POHB~|N*3Gj9x}aVJc^MjzFcgn^A2(CY5lBKXNs{w^DJ|DiA~#RI zC*_3I;rAS#G_Nz|TqIGC_46uCXUi4mwj>O5p6S6|AR%1C2(OCxp5 z@8Gy5KwCV^Xmnmr%ct6)-MMj@FiooS2rbH!qqouv;NQYsm;n+|iBgEPrb|J970@fJ zE*cD=?O7TO<}G)D2e?pO4tbUlKM&&s?9?4I@qE9;%3GlCK9eRh&QbTwBo^T!EAMxE z?(Ts@JH>~}7^Yqo!_@Y6moRhoY#x?T*|RSbI1JrJdSOe8{}~7Ib2$1yAMb{J(NSx8 z);{iTt%e4M$>=FG@QFrfU;*~-@_1rbm4evaF2rs)s;6N#y;}ue?9jU!o8JA?rgy8M zcf$j<)-YQQA@8~*PhJ)Ra(@d+-fElVJ*r9GaJ3rpI1JHG6H{r~rh7GLEn@B3bPuBT zs2IR?e3=9b33+?KP`gI~n9j-(e|}LkKn@Bda^v{$gM`+;L9D7iCooa#bK+*lpn9z| zPL}dKFJ}nSFf=-#4m8^0N7E`eP&G|{7;!1@Vm-V^)5@prt1<6kXk?3T>Te%}x{Bpw z0k#Vl|ocfxhCzvLmk0=VEUEP>y;@>c0>+fQR4PM^HIb7hTdPR8#LyOwIzx z^C#X)>qvfzXa`?V0rkd`vrS~Yi+L;;@cI{txVKHtt&8cnzcj)10r;lNofo?SU+&F_;DBVMfoXUOFYAI20Z;W$6E45Kel|4jilVm8mMhMsC zbP#{|);Wwp!r@zcVv57Jxton0zFKysYvb>&=Cab8l^L;n@AjYIuXa)-zYZxC;+g+v+Ick7bx zf`i0HJ4}%Qzs(F$>YVI;FbD7ATx2sIjDXTG)v4H_s+22InQBFvyV=x=*xF0vO4WsLp@FGe8=Ckt720>DBPU@*Ce>=}1rodUU(51{ECE zjd}T8NBCRA-vaq-dH@q%=9-b-MF+iL-}OA-_0(%-6;q5c(M0WO+v{W!k$oecS6gP* zJ7^{2?jJv8&9&Mt(z5@Wp1QoC&KHO3jq`}x(GU>wwQ~SK{o9*#`Y{Mp#m!c&n^(_c zV8S+hejc_x-K&9$*}Z7cj1mjzqF8eycmcCS53`IYUPm(agk_AM3*X;`p-edVPYAx@ zQEyT7SlJUGvBq%3UUkL6r$D~FgI)Dz-rzCbjV3jI#L+Vu-}8$kw!D5WZfAO{KkY-C zcQ0kq&2n6%P$ltH`h(;?M=|%l>MdL;@>C^DE!U(qf}p6YDOS~2y@|(u%4d4uBg_s^ z-Kk*|FT{{)pZ5Ez>%?{Qc$>gnB>sl=WSIdm@n58duE;sxm6~3uS!(wR+~;9^7yY!> zFC!qogoCX%rNzs8F@3Bgs&EySC`ke7q?-)kP8EXzue)kK^_9$YACIL<07 zKrKvgJQ`^&#(fMY(TC7=PHB%MvJ^jVZ6mccwfzO%KJ*#{xE8X}p9VJ*FC<2?Z!;ya zk4HV1ZGPV|r9eMFr%>vX^iW?Qt;zG3a*U*>}ibrd!tc&yz+s#~L*YZZ|52Gs|_o0A$nL zIynTF#*9O;MxE+W9OG9^b*lcRU!BuOu50jOlwg*S!06pNeqg4q_gye2JfFhGr2+^o)PtPaT*P}lBu31BQ9MDkKG(=!V-*RhgE3SK%agRTx<9; z;BNRbR-s(%WIx8)$r^5&*rCUfWKO9b2!`Sy6L++N5i)X;eMq>5u8Sm0N;5GLt@N(O z1Sf6*OBY8lI!$9AERVAfib?Tv;)j^{4jKscd5AsGW>1?i5RPbQAgty9t23-qJw{XE zMHbJhX1EYSeLUCr@&h$`YvDEqeQ#(Mtd6}H43CU^RfOm@*dZ&WdIzV%?F58n_L4)J z42m&@uWgfLkvLZ!E>1Wn8H%nnuHL~4YOICYZ65lPuZab_Z55JatRqzk2})%xlq@3g zM#AEj83`Zo$-$JZo@D0IOEtO3+4pz^Gu&GA6L62%HT1Lle8%+hwEgbARQNXUf|j+Y zk6ZL^Lc2-!5?mLJy+or+6ZVoCeb_zG2ue8i5?TAI#I;||+7FlH2gB@)dDnAxJInvN zz5Iz*5|AbC-53VQ+XAxdb_xSl+Zgbu#sD#%9q%te_?~4PE+<&!UcX z#rg7Uq|w_*St>GX>}x~CB#%mqzQ#cUrqx!iAYO@0Mem3ggs$Gk9!#`|j0`MIw1@zs zW-KCiq_&92@swy0!NuudPWBwBZV3g9SwwUSc-5Riq-ni1Ru$3zG-mRsO#O8GRhOKU z3)#Jn>JkJwbYr5npRedVY6{%B?3M!ONYTu94gK&Cu{WDk|yO;hpA+> zBqI#|(dxkJHLI6I8v7jonLeTzlRB{X#t22F(T{=0_}HjmfqKC&+?HUs!FIv!JdwZt z0i{h6`;+jy(ovT=_$}YcjyNyIQzYVasxM4W@fhsb^aQ?fraY93RjsF7jA-;pRxWDI zWW35z!%!>0u(-mEh;CO)D=(wV7Ud%1BFe>IGQD7uC>Ugtny@4*!(Dx0)XIHI^o8}p z0T|b29dbtutlw0Q#T+bLV#L8K6VrOVsB(5pog|LUXp~?LF$)MUSYHYaMB#pr*XhFu z7uV0hoGX1edN`}kkyfu$to%u$14L9o;fRhA_7R;}zADFFExI>RIOY#b%XUYcWk?nEWnP1T_U6fLCj zV_d0B*muP|4)(Z!ZXwZq)$4PU6qsl2^ruD(iEM)I5qEu(uOu@T9E(q*mu%pN5);t~ zH;}3RT^tsr-W8gp3#6VwAQ~@58mY_?Bg2h}kw(gNAJdXZo5C7Fd^YI)o|(_RDy;~+5@%VX9xZUyqjH4TjCT|$5a&2dG%*ZL zOCLomTG&b=KDSLPAVVdk?6r1RA_A|))6^D5q2l%PjB;1k*mY#%wvmrS#;&(Sddx%M zDbO-^%zLb0dj+81VLDnN%t@k7S0@QFI$Z?5_N3H>Ql0|GR3OS-NDsEzW|X_)apgg| zYpXz9<*sH_MPDdreIcREdBm!HK1XK|Qy1`Ch{9*aRAdJTNzIP<&CtG4xUo&SecQ>v z_lBA5fp6yKqO}g@w@7Qf2kcs$iP6Fx0sCzN_D=x&0s(s}b^IV#%`EEpKDf(<6g+P0@_=x=rJ1v?(BH!NXq=jE&LF6|mp z>x4Vsn-Ty7=sqjz10iB0Whlpb+?zsi+eBo!(C|%PdCNJ%iO4(;QKgqe^uB;cD@vV8 zKN)Tb&F#v&^G~nfSyxgaVK2=-+3H%vqg>K)NqewzU!%902y|9T)quZ5)PN}Eugt#^ z>N}!Rs~KKEy)w}{MpaXo;a4c%G~4kcyxc^J?o^lH+;Cr6mzDGbBAV7a*w_t9+B9mOf zG0?C;d7I?a80=rBcEW27J7(P~9&`3!_B#=~u2s5p}0y5Hl&9_b#>9W&wrc zb<%|4%;0xX$-z2;llr$h(c7Dn?Y;G=8Nj) z8SLg66Rh;3tel&y%oSGpkoi2HU1ksF`- zWo7Ow$=t&%2@ABz16E$opn&maQU)_iHB-W=Z!W7&nx|%|FZII##tjhYwf%&Pc5uRk zLV4J~m1Pw&bwqs7S0edX{H+9;3Ru|h%+FUzXz=kBJP5O^dSKaPFZvNJFTp<6o1L_Y zT)9Ejk3j!@STtm*URYnfbyz(@;KOA&UT(!`Xa3gMf2;Ug!2RmDzp_1P{#&-EhvGWe zw4gzsh(#SrwGR*f??8EQt}%8I!R5=6K;!mG538goAjq?w^sv5BdUywk2ZbJ1l!0h2 zL0oMU#LE&0;%caqkjXm}3F000?Q6ZLF@6pN5prb{M9Cb{h7>VK?%0-+#7D8=v5nX{ zuX(B)r;Y80X6zi1l$CI)WbQAYN(yC+kx5SD7@5Q{n@A>wewO>w#Jl7+@-PT_d}9a5 zW1USF>*N0JEP1>Ob`f6pH=5Udnmp%;yzW^YAhbHOz_rtHjpaOTof!V!lIcNA%{n}} zw-s`QkyR$ofm#!)08ky(sv@x^JqbgmeSpp+alCWeIL!2MINwY?lSO(aAGaab-bb|J zS@u-=CX7a9p)>EU3aKjQ8_?bA-cw56af3iWOOfe@%M$SccDQ)=>)zt(FI#F1sT16p zOEo^R8UTdkD}P^EoPj32%4->B9WO5q8c(T>St$1OGF~_h_a@$~6aV(BFfqW@d?+mF zrMR*ThEWSiItLEa4Mq8K(!S$^Z(NKo^E)Uz^$J{_A-P_=s<)$@}q?|rkV^Wu67lT z)nj?Y(I(K7OJgNZ%0c81eIcr|N~zm2Bxfb>bH`4NGR)azour6)@Yf{&T8MX5j`|2U zmCjoX-F9EPUuQoEhSYnKq;GSyTp}S>WN`gr6p7!~JV+c+4^<_y)B32^p5oJ+#tz$} zW0c|YS7sp2t*4RzT+^jwN)4+1yj&A?-2#nyz_#6rzYcQW7GAW}B}8WoLNwcqW}Dk& zbmPk<(Xcf2ma6v;2GS2m^KVmv*Zyv#zI#6&HR56O1j8Pnu1||_y@_aS^M&Xwf@D@5 zNt<2dQB_h$Uj&iQ?_r3x<)cco*!Rzg;@@GCEnneAFqlTa%Nj{GwVvwg88udiORb(4 zSRMYyWSL0?P~fwD0ELN<11Qwk1!z?qK+#d_1Rok$kA(~fqbWfMgd^1gOD^nXyBBS@ z!0c9nDh7~6Qa*o#RN`59xH8}+QMz55QKP|CmC)!Hvix!2s%{Eg0r7$J1=Lfah=$m6 zMZo$=^ir%e-fup-x@BH9k5E7%-1yQ(^kcnTOkb9P2kqu)Wvk#LGO>$~DZ!T-1A$tw z!UkWJpyMU;A^_@RMChP8QR7u*O1w%0l+keAKc^xNublKR`b4$lu^R#xF&LiVKC5bT=2dD?DzkRaUd1?;dR2V8& zuFce=XpKFe3dUmK)mv0DH;Ue&mdKjMcf7zm?81A1l#nRr_4ClTnNN2F>eBx}brZ@B z5umpg8O!+bd^Wi>v(##zkMwL!0+<&XLiidD;nhBJ8UkX0b{CkwZ}TRj(B9r{~6 zr&%4YHOWKbS43XYhr`=hoNb1XlR;yq)w7g;O`f}?_sNwunA4RHI@=%U{L@dOZ`a#) zl^mO~ZL9Gm4nJz-BdGE-E_--NLsJBZm|WlWU@U8&~aFlm$BD`Y@=0A=jQ#L#WjX_zkY^rweSO$zp)Qq zu^US4VZru(@XGdn@R@v&AtzgRr|TD)ah7mpAs?|F+DoQ;96(-*14x7W_B6Klelq{q zg>#=;Dk7v&SVj29E(mXTm)iVe7iXv+hh!Z9>jVS7mOcQkslRB+gN7V{&5^<|G|!RZ zz7@wnA>p_TR0@vN^)QlCYIkv@DOoI?wo`N1O|e*-k_kuJ1;^5t=7dcwXbK)GB8=G9 z41#^sITHJFaZ#>0@wo=3;s>Pdi-}ym`G~B1?ne%vT#x|eM%Yxt-@`S*G`Y;FFnw}H zXx<;<54Rc5nHp|Bi8F(&g@ zBV-SlC9tlN5<-uO^8)}C*juC_`eGr2TL<{Cb8kd7JGU(akCC(paYo)aQOiXHMi7VC zEP#vHsn{-ouxeZ~2-n#hz(^ynU4pBw=4!#H?&=9GR54o4DdBD0(Z&HhkzIBG?%+pr z{H`_~*Mz8i6HtqynoD&$p|?5>Yn#&*i7;U(DM%5*>rlhU>WYQHS|D8!kK(NgT|tnP zOs$LN8vY{2hRfq1t@&9&SeKu5;4QG0>{Z(h;g;~W4zvZpYqmycF5n`{fV7SE;Bc{|Y@>>YwjLx;?Q}Tp<#U{|PIATyAA+G{p&sgI zwhA<+gu|()bIYB2wx^2OBpEE#g!NdDbVl=vUk}IFU6zwwt^wpkpAOM#-tH2yx|vkW z8=<+PncrMku4lP4#QsG2US}H&sLo0F0UkU~73ogSXv(ny^>Os7KiF2F=Jn@or&sMH zde!-ky(oFb^VtaZ+q%pet;@u5hC4PgALUH5!Wg>@x_;bd#;&6T0~R=gKPoQ3`!d_u zwH0I6QTWqdrj1=6#2dSu+vdn}r}8#aAx_>b{8jC6#TYkMCTG&Wb(X;RvY8b?aoZ5> zcZs?2w}L)<+k5b6XDmQp@|c^!yx$ICc(fqSA_s=1rfa{O(_;6;6VcK@54h5n)KpTvE8UE5P9&gr`^_D=sjmLeB zQz5~{;|CabNE^%_pG!#=;o(=Sax3&JVtoH%g>Ykid@kijXUEvYR zWn1c>EuL!&uxv;1p2MHmPAP95?+l@_jFCUsVAjjwwA_<&gUx9*zfanDwQh8HvSXan zX`AsvHyq*xZFW>1W9>_nl4CV?M>1-UO|V6M8mZH<-<0 zPSAavlfSMVo}hZ%OPmw*I0q-bfnvhz9)#UNV87Ack8L5w94B<)TZa~oaz=EY9#QZz zE1Tei;D1}$z2RAWLpmFAXScj|sx!7MEn*$5LG@vqZJ<+yY3pF~ntR4#eAN&=+bvv@ zrOA=jLF!?Qjk2P|2@Lzy(RYRzjv^41E+6K zhx=XL;*+%P&LM`4ud;J~4sgc3lJj$4D8Gis`ZSCq`rO5qcR0pvq8$ZJPqz46Z2@P{ z8vG~xzyQf}d7E>tHZ~uQoL|&@erfBoXFj{jV>faC9PiMBKKfL>%#KFvmKcWk|D3ma z*l&gGn8lEZSq$}p$TX&t{v(uholSV}(uDVqP||gc5#Im8%(TgV{d)cSf1yI#wd0GXr09DohT?5Aw=FeBjmVp0G7wjn%84mHpd*dYuwq+M@D0 z0jt9)2fS`Bam*hPoQD&O|4{jSJ?TrN)sG3#m(*1^p+OMmtT!nBCHKE2X;KJ}&@06w zv4U(A!{w`bkBQsAS+e+WN4+AscP}c_&PMbb>n^N5j_>Y;R_(6b|6gJ>JEs$J?6*_x z1Ss1iZT-b_YZMnYZl+q0ldJ<>^y=g#>h55*Tv0)kTstR8uBduKCMCJ*uZ_+)>Gd>g zKVB!>&!sJLG!FqJOiI74XX#dQU2=a(?+T{ zx%h8ps=rIt=^IIgnoUS4V+s6@&%XB1&`QR^%D(QAhQ9DL(b7e_rQg%grc!C>dMOPN zIE}9%2PDO&u^UZeH|bFgX`-#mbX&(Z*4D3RYgv3-hd0_*i-0T3_PrMpX4XwZ7e>iI zw~D{AqUzrsy2BlsxVP8J3*{T68g31BH%w2P91oAHn%T?i3y6Q!a2Q?Zdm?ZS3D^!9 z@%K6YQr_>Ia6eXVG1qGy8i-m0tE@wFjgxokAv*o`q&j2Bu9n-}7~5bh149w2Mdmti zjFnL9Mak4u@M&wf#Z|Tx&;{&N-Kjx$NZj%^T=LciXMyqBbJtrhZGklqVl%YD#)Xtv z*b2jR&$h)yx@H?(a0Sbe*b#>#`!cA=@WylhO{)NN3mh{N-?A2na zbt{||;TUjMa`J4Gq8;!qyr8)(Q#3rD%VI3ya^qg;Zi$p*dC3{ei@SR)`>2=a;?16t z<=id6*+vti8Zz@M$2{FLZ(jxy!0t|i&aE<~Ng!F*^BCK-R) zd@xOkEV5i}KcFUrn%y#>#&D-;feyyE^~g^1xU*XZ(-iLPo&hz1J8d$c`TE3)EmxJM zJLL`N&TbpbhaNMSc)GJ&22+owq%w9&v|LltN*gPArRq?n#EmEZ)M^v>yn+JhA7$jD zl!FS>fWzoW=ZjpX24%&~WnsxzbU=ZAv#OC75$$==$z5zh0G&cI$yzJZQp9aZsBF|I ztYYkxQCyva|E7%SS}BuZ4og&1H<#(4XDLL2u1NCC!g>YNr=lw&rl|8* z@nn*~xu<%UBwC^X`xM9h##ysC(0%BDPVhSw=u*x7L;M5;+_7(@SK%RB3Pn#qT{pKt zFAE6@DQOdHFaelOyX_g6I_c`0q~!~!Gbk-hPPdmxzAS81?c4~PwmNas8X%*-JhQmk zS$5(QB$b_xHh;<1R@S03{Kykg3(F#8Ed9u1So!rVQv(Q5KB?G1=-fuoO>0dB!BA~g zphLA8dQ*PlW)j(?LLRAu64PQD|bav zvwzSy`G(XxnFOB-?l++aA3(mju;hpz@Kc;BTr!3&wX<{?iEZa36T%vrSBR(TbZ4ZG zmUJp=YxRWWU3?%8osyK|E?(^*WP{|QajgvTvy8D8O)+0h^T{olWo09sHo;)+e5Y*! z+Iag-Ba_^VVwBwMCw2&OEum;>}We*gySas?d?l8y4;j(?CAht<% zn5%0^pF0lJW@+rcB(b5c4Mn;+;gTS_hq~?*x#m7~tFzxq~xl_M34s9QkhZfqNuAxcQ~jIEX^u}7$dq`b}=VTI<~a!y<} z!zK7b$8qmghoz3`G-g@Df~5~1tHXTfVJsb@(}2UI?sy9}FSdgX*eplf7@L}aW1qT( z>4Q1xL2_n4LveR?w{IjDEF$&be3gY(_mky8m3<$ZllBC<1?*9^GX#P95|rZ8ZbEzo zl04$8wfdexEh?+;kp!As>Z-IzfC6{a=#(VTrdA(nl7(}Eq5zGF>V z3ysekE-2DfiVJ~;_fkTN_n(oX=4-8-i>PfypQJ3`EOp(lA?f92s+elruk0+AuWa?f z6mAZ>g(;W>h! zKQbbDcmA9xDuv8yo=HKz6-e`Q^98h*QinwL!nyeE#_a_`Yap>eME+0amP@|)B`SiB z=x@Fe#7L@c`Bu-Ptlt0R4y8PMpC^A=o#5qGx2LVpXSPw#I>0rr-;T3$?kUy*KUul` zten|aXBX2Guqa3ULsi5*Y}f$XU?*Exvr`SMunxG@$~ii2j4hnN!!3ot;zl6gG|)T* znroq12sGJ1vk*x5x&a|zpFJ~Aun7FRhn?0vc(RoXUO9U$U(WhHo(qx zo0=X}2t9Zh;$Za+UJdpQKGN#@vP~1J8qx&8Y4zGX)V+opkmR5#dSK-gTRnXLkz?if z!fe7sQcwvgAeUKoV7cBli#q#;h`Z3<>g~xjjnIN>>PU2;Bp{g+W&nh1sCG}YANkNS zFC=}9y|)cn`FM7v-oJ({6Pp zpF|NTF(?$_^B6^Nu;Df~!vR!Z5|VJSl{?=$K$bs#SH&Era3#r6=PQ);F41tBS-ri@ zTp8a?ylWvDP~kG)(zuP;UTZ|4!1`0UImIn! znDXGb5W2p}I5fX9rJCf=C+)?hWPM)5-`V{A(!v$mT4-s%Xjq9pmURq|&doAI!>1veGm_P0dn)T~g!`2gm0u%z8C=U#vH z$!rs6vo*jo$(!BuP>6BaSG_nxXXaMx(>T3<9;)s4$sqZby;Mh+WYD-kQRc!>XCP_(ClsYaKHva9_aq1En zXYq1>Z7Mt0_Hw7+KdI|GVXC`+inz*?jofv0Z?QMFZse+1BS@1tyz9G5JGma=33%rp z2bn+LJ_(jkhxbovqa``<8HP|EA}Z}$sn4B!PNfP%qH6Re(!uV+^`GbGq}U(WzA-zh zj<*y2-&ux38T-ku2+(Hnh7R6r_tq1fY8UijFEvo;e6Fm}sxl;Adx5U&EDOY)6zemB zNJ_rhI1SnO@@$slNRE)Y>2+X4I?`M%H!IcC6bJbeXdbk~s8j8#LpwUY@{~3r zkfbc?uBxZnhcoWK%^_;ymZXkHNWEcyzGk~W2g|FiKUJoHaZZRR5V-Z@@cF3KEE=5b zm&EdBsKLYkmlZBwD4V_0?nIkyQCu>#Drq1x^*Yk)x-J22m#qRdwG|?>V zTnN(kIM#p*l#R$PF9e|9kWjTDWo;cSYKD6dVl0upJCRu?0{!90Zsl4ciIgLmJtN!9 z-s(Xct=yz-!OgAL7!D{{zIozl}%+5MvD*XEOWz~L2%?dOl9o5!!lWwQRAI1wJ%8`Fv8CP$3 z@cFs6O!lKKNTn7`*w2N{1&}qazfw3l7jv z6^e?=8S5}7!y|rJzena&JF1#0Exlc2>N;zaf_QI}Ehl7xb48p6;ltuTYbC!e z6teFV*eW{UNAR>4G1DHXR!_zE*r=nG1jveCUh09iqKnl?%4X^S5(-6$42+YRpDNR~{qp@ely_Fmg@;Ua;XZ;qs=rrJApz&CX! zH1#ZLv*b6!7_{4zAI*}-Ux2d28j+xYJdV2EBeX*5sp%;07#1^A;O~zf$(4V79EKWfos_Ns=02JtwU0+TyiHRuLmFLw0m!q|gU+-TI zAR5d{xci@M?tXcD=k6Pf{sgO=`U?MRVaQghb}pMFkG=sjCt8P>C<|?*y!EARq<7e{ zBUSH-sc^_oOfiz}zfvUuAKCIG;F0auk*4O`8^HDda_2uBu>N(oKs9;ou_IaPG20OH z*6uOH#1X|cU4-~uTAE75CJU`WYHVoQK7&za1Qtb%GR7AOql`Sw!u=DSsv4EAjkqnm ztA0bZlfh~M#lMWrM(49pEwtHyy-|Ne^h=kaY|c}or9@V?RNTr_Qzd(U53={?sndkZ z`ja|8yK&L@Xt?~RDZe1ZWMg_eCnnp&f9lnXHvqMjdNWocbH~gAl8UD#8F2K{HfI%R zumwfDf6Zgod+n^544sTCeCkG1Js4 zp(4B3h?^eL`jNqEd8t^DSzj*-9}K@Eomr@qW;Oruz_w;emDOG6SCcGk8mAtLk&6aP zg-xLmPlbG{Gh1r4G}lb6YTe0mu}&J`sA%}As2Q29X6c$FIg%093ih|Mad!yrYi0M; zO>D$N(6-?vH?i9`e^X+6j4;I5aY_8Sak^p0N&K0_jyC{5<`D<{Nzc;N8baU1VwBn- zxWoL8=%#YjV^a&X8Dlkmvdx<@nhrF=k*URj_j;i}=wzq-nCz@G&M|Jm`L@f-J6V#O zcDA$fx?>@U5o0k0Al_=T48eLVy_3f>$ZK_T(!)M)kEK1ODc7SOoIL7Z3k1oZQ^CKK zou$nE-dyP_L{i^AB=zkZ&-h52>N6_F+eW-N22V;<%hR(;oTt+q1iB)=lFt@RuH$`z zc3mZ(X;RYUN~a?E7-u}V_<=;1g6`?+`L;Xe{A0u;;b40~=-kx{3GBuIyT7{yn@(`X z`n^dif0Q2VPj=$-m_L=k&VK?V{1S1ukqLdAmHU7Z?<%HK8vs9nR`Cd<6Fj(oa1yh- zVRwoP#%bb*^X3ppVVvSlKEgs*E_;Jb{qYhOnu2sIbs)0pSIn6mlk2U*$qtgJ4Tw2l}F9XX-a`Fsa>iJ_2$HfXvQX0Qk!MXUV; zSG`3DQaYNqi^yj&0@Hc@9M-L}Oxv)Y_Hcb~S+Gj7y}ae2pGvH~9IOHLWOlB9Ukp~S zcyY9Qds3wgg*Yyf!R!m0vc9vVnX}YaC4_sJm@o#ma86hx`A_{3yC+6hSr(;bDb35c z&LI1tjNuGsAlyz}r>NaYwRBQI(F!{GL}E4;%&Wj~#z5W*74S|MRV{H|b(8W@!d=y+ z8X)oPf?1sPfI{6+EFo;fkQhi9C_HHb(x_3I3JQ!j1_c`FPhev{qf1xc&BKayFAz!r z6d8*P6b-|xy42aAkZ_t-goQnO8D~+xf0RJxYy}LyBPEfu{0x*u-|^)KO<4ZAR5RTj z%Rg1n=NV2TQ9wTEW3pe95XUAS<$5=KFT3GR(nhhU&v|MEE^4LT2PwBjuzW{$#ZH5z zRW}8|kgXGy-Jz!DOCBtBF+WXk17m%I4DZ^{Wl0)hLn54@BSa2lrJHw#VAC)D2~XC8+_qeDN2)2#|(6p!VmB zW1IS-j|$5dCzvnr#Tmr7(8#l;Ie$8vJ?;OqOmR`y3Qha2ogVQYO-Ls+!R%<%hnlRl zWJAkN1~Z5tj@!!h%_F!B;HoaQ4pkf3nmd^V3#cD00eug3{hR`gv~PQ%j_hUG)cmb* z_cUHM_O#0rrp?l7LROPR&J7`J`MjGVVFXbb3PwO~18Qyxkkxe}@YfK*YE8_am<$S5 zmVqr=?y1dSgWeLYlV@_M=!Z3O!AmLs8pWi`3>uaP*$$RRs^d9~4l{&P*?(7eb^ znM}z47r2AFsMyXewJw8=qCS@(9JA6@_U3}UX|TC8+XX|!4zxFya70yx0>IDdyXObl zO>a-qWKtO3a*dyN34VSz*Tv83U4fsU34VS{C-x?1+cmk#o7mK_=1H4+k>1qzm$htD z%iFT4pYzze`i?T$*7w7@8j{d(TQ79C^|^lEv3s`lt~kTlwH%>Z%0Qt>)yiIhTC-JU zLkCD1=*0AZiJ!(%!6~J)70YFAZfWV~(opRO#$m zz4yK>sj>GfU$^i5YWC@gj>7sz6v6{==l~R@!LayFS9zn>fd8;EUb6=D(swI`bGuXS ziUlH5g=*!BiSmUlJlf@Akqu82N_mr0SkvuhGkHt0L!^4QRF3bjlAq;tamDBeW~k|M z6_TrBt}d~%iPcu!<@ZEW-sqZi38jnKAna)E6M5tELX*=VOTC|2PUmt*m(pwchS>P! zja=uG*o{^X&ZY}g@&BT-r;amnLGoBYL*7*Deo*_mv@h+j9{1zaCedD1?zp$5X-(p9 zfi*IOU6a(dKzDO%kGZdZ%j>K>2zK_&8Y=^p1|o^*0?zWgfloF1#>Om1k$>TKmt;dO z-k~DjCyGq-BgGYEMDts7M5x|&U_^H1u2kih^>Tcdmb@HipsdF{b~($@m`4Ek=Xe9S z%knJRX_lpeZI$gSlMShTqhcGfgKWSVY)IWQe;3Ju^Y>EiYM{Ev^T}p|-btx~MmFd< zvkAG;yX{-cY|wLN+Z%MdZkP=!$)jYG(?%0FcF`7o4yC%@!ebrc*-wLhp+=rfZD^Ss zD-2L&=VVaW@`}IZtM_uM`5T1;QSav317CDg7$?(%Z{wO#0|e z#GX%QSYJ|^%u=VJU#I1-)1ZFOmP8Cs@me}SSYDjZdm{ow>J;$eDB2jQGfizIMqecI zOC&^X;T(C3wcdmiu*9+jqgr+ zGlu*uqtdO})$d$*Z#MAWTDk|`tpxA+l4E&sWAOgLzuc()dQUnB7T9%ti}_$`OYFt?L8i`O6JUgI9howw*-bi$h1?p5Ow7_+b zKoIKqzhSkHb_jXr{eU_t-%#I+)6qb0D=uIfm>v#d41cPS1FRQ{mT@(r!OY|8)EW_B z_u=Y)b-s>VuKrphUkrui4TRMnqgH^zn7Djs|52Bau3_9D+WdKY2x%)3QnEZEea>xU zV=u#I2%da7r(NU8%@j#b#FHAo*N<8>q|PQW&UDWE@8>Yhd(k`CtPV=hl)R3d^S5Ij z6f*X5sAW8ke=r=$4Mo*-1j8{4ZP`t8awXT_^ZsgbjAW>X=b-Hjs@2H&8N_TGZRVqC zxqR47-G-mGhdf&4TrVO@P8xYtYWhke?1;7g0=Cv(>O8N^q=Wj3@D3oG)i&)bSX8a#k(;q=CXF8w!hUD7+I71^t$+ z0!%NOUHSICS$1ZXLWk!aLS8<{KlRym=$~3BWOAr2bVQs{lidk3i^PSB1pR&kA7Ab9 zNHmVRaXM;od1ph1UE}c>ksOL0lE?RgcF0tHk#w5~1(M8Jw!i!YXJ-58nPu5Cb3BHV zd^smDvsKQ_*6gC0O+d4%`r9)Dgsy-kj;IsJP`AN#;!S>f8XC`KZg$0}J-5BAexcw3 ztM7keI`!>qCqdfIhy8-5Sbh6i{g%qV{R6>rqb6$8R{DxYv7fKFiyjFRVmuB1eagB2 zpBn$Zv2#D#zTa8u-VP`eqE=s0E!kRyCp+cZH|qH$OYMr^T1j!|RGkE}@zh|uCczJr z>mS(9C^H%^*iNskQE7hN4r!Q~x7KII=Di1tuGaCUUDexBnB&FRq#+}spAiLZj(Udx z0{rr0w>di{b>;~)Eq_q`E7~{Nb5)5rfF+KYTNW3mlmJgC@rpPds=K0f8kH! ziM?i6+VV!?nZRDWYF>(Tk;!KQo6}etY-3z&?&g-!Mt9ABh9|6@rL&b&=nBjW(9-y5IJx9P6OXZzN*xZaAjZ{B=TTbT`n0 zln`yucp+e*qiiqWq4_=F)@0RR{qyr+?0Bd?S0ySSFhGi9`SmUe`8*~y~qsh zWgLlHcsCHm2KuaBbT+!%Xpac%Xi4o8Sk$B~LxW__ZjT5XuV#qx*@@8H4d-HmP30VP z&G4psIh^U9L$CFW2XWi1y-@vs^Km5Z&pn4;8{5#@3-+}P4fY&*sSi1`iocXYZ~JBN zpOry68Hw?e-sv!h#!QJe1OHIku9lm3okZR?ExRH~tH}LsYmR`^Q0}kO>3r7}ONECl zbys?o&QWkXE@md;UBW>;61kjj@^LkGGA3iwE|vqtY_bQNY@eM*bx-d4@4=?V-5h?V zIz4x78{gY|bb4)VTWl|EY=d#MOTJc!_|HwNuxH!t(OtCMx2WB2yVmvwYp^X$81Wtp zllC~?g9ZqOvTJbA{x@by_MpKYG}vQU)8QF09bvN0aC?6zZmRZRSVN%PqdG)w)H+cJ zd!V`VUf@MeB-{~Rf3ej+q^6Rtt%!}7J(Ayh^RvMG%=H(msg?dBm7Njgb40D78kb~=Bm*+>HYE}V z_>5iCq2BU%{GN3l5A}<@-*w26KVJF8|AjNg4w^V6I;e2k_^}g5PntM;{J2r$CKivH zF@CaV(2SzO=-5GH#~ym<=yAgiJ^YB_!w(yB*yu4w3_W!4;IW4tHhA3V!^aLebnuYT z!y=JG4jD9Q;+PquXUrNjcIu4rgQVdpMUy?AapNbApD;Q)K0KpPdYn9UoLu=lo+(pj zOdeHu+QdlIepJLjMok_)cE;2~`xX0TJ{vP}3QdoiG+G6L?6ArG-^rUua|KC7bM*oX$9``Ry!N|1-nj`5~sOl|%(f zLqu7UA?6A)#E|0bBT`(;IIh(X|BrgJq|Q1ZP$BmMYALx!I|pEC~N2C1q)iNbG?69IZO( z4K5;DyZ_Uqr7X>NT9t7QQ|HWNdRt3_5ee~L>@8q=z0?Hm{Zv}+yjc+tm<=GOV@bq1 zNOi5T2EAe(WFYsNfn2VtvO8SClyB&D`%5= zVC!7g`AW%+{w_&m$?UX5)mT0IS=mqOcV8z6c;*M1o5|tuS;O-si@<#vO?;$ zxq1;hsGAfq@ZIR-K;6l{jdqgQxMvrP=~-t?ckkesPGZ)6&u5KJ!GTk&oQ6By$kb_t zNh{`_pd6|8d8y>Q)TgT7y~op}^Od)fmN+w{E}dI#b@@#|k@iN(`E+qQD9r9UEvkAH zfXtNDB&)@&usl^~NVc+V#TC32mBUHSCdwOqL9QFYz%8`z_iSzqvch)=7Pbzb(K?WI zfeBK?_C-qA#USjNuO~V$-IGDVIGD?@9^8BEOQIT>O0%xa{RvA(pcoIet zL&3>KlTuTXoDlh7YXVgU!+PaHTyoSODl|$RV*jeKf2r+C3V?dd?W&+7TL9>rlzjzX5hV*@A|)jZR<6#ogR)n!3w#9B}Ihu}o3=WQImv&mtvV5ByBACU>x!Fp52g-?~zapNZuP3Op(~H&=4QS*1g#gjd1RLSVV$)m=Oo-}FH z*yz+5gDOcSG~P8mCX$YH0Aj|?3$WK86U$hg6W4;eE2kYlaPv7^UKL~_*41TtuL+$7US zT9)}?KMMvX>vz(F<0hG_kUuhG{P>K(xJmLiGtGW6D{I`u!f8_r$B!C&TG5o#J7lxl z#?P2CdeW%LF-C`$e^q8qLqS^k!F*8o@9N?|7(`Kc0_If&w8dVq_ zJ@)ib)28Y+Jg<1ur_Go;u4wG|8HK*!q|s9*6pfxR-s?XBz<4rwGe=fNcgZr!h>`7bLHXOp@WAWa`2GB2M<1Ee`~BXang`O!-K=aa`!te8l6`7t3iV% zOpKmZG$uTD>f}L_CKa214yN(HjUOA$9X)>7&>=@0I%e#!BMyl~#vgvzVWSTlf5^B< zX^}!3J(kx z0?32M&y4!~P##a9x6eaPLjfMIi<%%|Vbe0a|HtQ@IomsHwr6%AoiDr|!Kz?DUwSgQ yCBLPq6Js#;CcxC!U`j&=hX;2Y%fP3`X4-Xd_%MMuNIdaZqsI&%J#5(F`~QDi4(DM2 literal 2042868 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%0A=LnW+oVj5A@}f`eVrtA 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�J|0DNQ*|g3 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

H1zkN_nj9!6Qr9|V0BK5u3}r<+Psn5| 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%0Daoz>iaeyb)=yAW5G!aor%UsRr~ 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

5m~;XH?Z;o)j}?z$CXK+vDY(0t#Xj7Nhsl6! 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℞5%KdSDQ&vuGOPjwSyR7m)UeR?H&Rj>L2z-K~Ndp4nY90Zc{w1Y6BWT2EJ#da{H+@2i>ynaVB0gy-w2NxueTRFKVN+jYO? zgjosnyn&pTVmHC_TejMh7KP<4U!B*GIgy5w_>gGS$|zttc&HXc<#xr*n|d}+I2W+r z*o6DMRqf!-T}LMLYp8n0W;=DZsXJY7ns(!tV zlpCd}$pFTt9FlDOVr`_v1W%$n<+YOW_NwDcx&b(51U;iHjCGWhpb*$Wm|;Aq+!utn z%wjZrU*`r0LkYPqzu6Wgs~?vWj5c`k=ivnba>GJ#78QXX4_fmOCYmq#6nEWPr2-p;w?QWeEAE49tFiDpk+fx+)K|a`O-PMdXjT(whV8P2 zbxX-q1id9$&v9FK9F-HShm`C%Mlr)`rV<32NfdOTSG|J+nEha0p`0>VnM!qo`~lX= zX3!`h?FY~R+q46fnsK!81Dm!-)V&K8Ib$sF^XZ7C*Q!XHa5O{1-@q2osG>_q0^9g0 zxL(xpJg8#S!(4#tv~4HPC~Z)ouG5{57!jPQY6Z*MF8kF4FEJdM(Hk}lB>JViF3O33 zY(FOAK~%JE@Y6FsPSDoZ3DTP}HD9B{x+KJQ;W$=GY>(Cf)kf*@*q2XrN4|=^R~7+x z6^+7Y8KA~&syJJ9Bpl8T+J;3aS1htg2L+%?j*bPF7}eJc5slDe$JI`pG~EZR zJkFLk;WysZ5W`8ONE|1nGV(k+%UUUIV}>VUP$JfrGyo=viA&DJFp+IKYyh1Y*1w74 zyl%W>?qu3|XF(Lg7w<9&%~x^xBE&*Y2@(f;E!cV0vdn8(F9kSFA_m80ysh6ta4o!3_Hvx>)k;&CsKtVtKFzN|#}O${0^W)>7Q=HsV83F2}o#A4VEVKd^U zYe)8p4aLx5K9JyGlZ1~s=`_lXa=DgZFu+qL-(22wm^z-JUto|fHxKW_xs}=?C3fn# z*|<41Vxq$8xRiPtdM@iBnn|b?l%Lfkt~XHB)Ef5Fe#uDQYw**mRF<_8x|LdDR$E}F z0FiOe&??*2tu@=_db3upcJSe-=cm!>X#5}_-7LbLcyH-}DH4F7IhUAE0M~~JuZv4s z$u-o-%V^ROJYMaoGY|sf&W)|X6tWF;+MGHOC6#)1qE1F7pR_^81b?kl22Pd);4YUc z6(nuf&e@K_2`VjBbIa<;u~1p+1Lm`d{|oUlcqT!mP&^s#-oWRY&Oa0OAA*Z90aYWI zzoZk`c5EcyESjt?jI#)`*@20jhDz~Q=!DZ`LsC%&RI6nyT9Nxks;Q8$jWw8J7c7*w zs!4uM`G94LQNa>%iQ_IGDZBO^r=xNn>PV}D_v_*YnbB?LRc5mhm)eaQ+FZiWd^ejy zd{%SV$b#X@A!bt%5}C-TWZ$)}7lzGMa=*(RNjHs&fbQO1A zOyziZVfTbtvw$KUE9Z<2jdIu|q`S<{g<`dCo;qhXth~2f0C&*jXyJ%)mt0S3In|k{ zEhPvbKaVM-8n=1(h*fFY08pm{h)-dD!w@wl?3{4&oyfMc z3h?2XA-VGSdL;>A$=SD|@{P9px~xh?{3Qu)&=ZaVgV33<$UOo4hGajKG>9}M2E7W- zUY$l8rFg!noF?3+81Rh|qPt|zx$upV#T>*Xcu>Xg9JPG{Lg0XGTQ(NWz_JNM7ZtN) z_g{lUo(a@qb7){(gBy?0IT|oKZJP#M14m(Z5;7Vf_l?Z}zBSDoO$Mv0ZVP%c^{7ib z)l#kGV_OT{(}wk)5o_%?b;p$~KuF~FSk`rA=>+#PlqKj^i9M@~^+;st`f52QOsKq# z^;V$HDT)QE#X836DS94^0D}BuOvLiWK2~3R4V(C@IrKGHV-{{|dp#QgYB;P_;OvvI z7IN;o?ML10^0PP>f*}bsmJOg@0S&Yj~0pY=CQMgRp~WY{gF2^h$?IH9x>WT*5ap-;|Otm+7Mf>qtr@F<

Ga`<`daxL2z%fk(!MWmePiMlPz#Wnco-U0_ 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

Wasm Component Demo

+ + + + + + +

+ + + + diff --git a/component-model/examples/tutorial/www/package.json b/component-model/examples/tutorial/www/package.json new file mode 100644 index 0000000..3dbc1ca --- /dev/null +++ b/component-model/examples/tutorial/www/package.json @@ -0,0 +1,3 @@ +{ + "type": "module" +} From 77dd7a5f1cebfd1601348210ed5be356df485f46 Mon Sep 17 00:00:00 2001 From: Nuke Date: Fri, 1 Mar 2024 11:45:35 -0700 Subject: [PATCH 010/175] Update README.md --- component-model/examples/tutorial/www/README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/component-model/examples/tutorial/www/README.md b/component-model/examples/tutorial/www/README.md index 047a5d4..21c0c3f 100644 --- a/component-model/examples/tutorial/www/README.md +++ b/component-model/examples/tutorial/www/README.md @@ -18,5 +18,7 @@ wasm-tools compose command/target/wasm32-wasi/release/command.wasm -d composed.w jco transpile composed.wasm -o www # Serve required files (index.html & jco genereated files minimally) npx live-server www/ -`` + +# Run CLI example +node www/cli-calc.js ``` From fd88dd6627bde0d9917dae9b1b946bb1a2a50b33 Mon Sep 17 00:00:00 2001 From: Nuke Date: Mon, 11 Mar 2024 21:21:29 -0600 Subject: [PATCH 011/175] Update component-model/examples/tutorial/www/README.md Co-authored-by: Kate Goldenring --- component-model/examples/tutorial/www/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/component-model/examples/tutorial/www/README.md b/component-model/examples/tutorial/www/README.md index 21c0c3f..4bb69d5 100644 --- a/component-model/examples/tutorial/www/README.md +++ b/component-model/examples/tutorial/www/README.md @@ -2,6 +2,7 @@ ## Calculator with `jco` +This is an example implementation of running a component that exports the `calculate` interface from a JavaScript application. It uses`jco` to generate JavaScript bindings and shows how the same component can be executed in the browser or locally with Node. For another example of using `jco` with components in multiple environments, see the [`jco` example](https://github.com/bytecodealliance/jco/blob/main/docs/src/example.md) Using [`jco`](https://github.com/bytecodealliance/jco/blob/main/docs/src/example.md) See the [`jco` example](https://github.com/bytecodealliance/jco/blob/main/docs/src/example.md) that was used to create this minimal demo. From bded97810d29a8392de24a2bf8a372386f4638a3 Mon Sep 17 00:00:00 2001 From: Nuke Date: Mon, 11 Mar 2024 21:47:01 -0600 Subject: [PATCH 012/175] mv to jco dir, gitignore artifacts, use bindings dir for jco artifacts --- .gitignore | 4 +++ .../examples/tutorial/jco/README.md | 20 +++++++++++++++ .../tutorial/{www => jco}/cli-calc.js | 2 +- .../examples/tutorial/{www => jco}/index.html | 2 +- .../tutorial/{www => jco}/package.json | 0 .../examples/tutorial/www/README.md | 25 ------------------- 6 files changed, 26 insertions(+), 27 deletions(-) create mode 100644 component-model/examples/tutorial/jco/README.md rename component-model/examples/tutorial/{www => jco}/cli-calc.js (74%) rename component-model/examples/tutorial/{www => jco}/index.html (92%) rename component-model/examples/tutorial/{www => jco}/package.json (100%) delete mode 100644 component-model/examples/tutorial/www/README.md diff --git a/.gitignore b/.gitignore index 17b163a..2ac0772 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,7 @@ **/.vscode *.swp *.swo + +# Build artifacts from examples +**/jco/bindings +**/examples/**/*.wasm diff --git a/component-model/examples/tutorial/jco/README.md b/component-model/examples/tutorial/jco/README.md new file mode 100644 index 0000000..d6a061b --- /dev/null +++ b/component-model/examples/tutorial/jco/README.md @@ -0,0 +1,20 @@ +# Wasm Component Calcultor in JavaScript + +This is a `node` CLI and browesr based example implementation of running a component that exports the `calculate` interface from a JavaScript application. It uses [`jco`](https://bytecodealliance.github.io/jco/) to generate JavaScript bindings and shows how the same component can be executed in the browser or locally with Node. For another example of using `jco` with components in multiple environments, see the [`jco` example](https://github.com/bytecodealliance/jco/blob/main/docs/src/example.md). + +```sh +# Wasm refereced here was generated by cargo component. +# See top-level README for commands to generate it. +# +# We want to *ommit* wasm requiring Wasi, +# thus use `composed.wasm`, not the `command.wasm`. + +# Transpile to generate bindings for JS: +jco transpile ../composed.wasm -o bindings + +# Serve required files (index.html & jco genereated files minimally): +npx live-server . + +# Run CLI example: +node cli-calc.js +``` diff --git a/component-model/examples/tutorial/www/cli-calc.js b/component-model/examples/tutorial/jco/cli-calc.js similarity index 74% rename from component-model/examples/tutorial/www/cli-calc.js rename to component-model/examples/tutorial/jco/cli-calc.js index af598c5..7c35f36 100644 --- a/component-model/examples/tutorial/www/cli-calc.js +++ b/component-model/examples/tutorial/jco/cli-calc.js @@ -1,4 +1,4 @@ // See the README for details on *generation* of the required import -import { calculate } from "./composed.js"; +import { calculate } from "./bindings/composed.js"; console.log("Answer (to life) = " + calculate.evalExpression("add", 21, 21)); diff --git a/component-model/examples/tutorial/www/index.html b/component-model/examples/tutorial/jco/index.html similarity index 92% rename from component-model/examples/tutorial/www/index.html rename to component-model/examples/tutorial/jco/index.html index 6137858..9da9a08 100644 --- a/component-model/examples/tutorial/www/index.html +++ b/component-model/examples/tutorial/jco/index.html @@ -10,7 +10,7 @@

Wasm Component Demo

\ No newline at end of file From e660f426b2410643082791689f7de44f759911bd Mon Sep 17 00:00:00 2001 From: Kate Goldenring Date: Wed, 9 Oct 2024 11:53:52 -0700 Subject: [PATCH 075/175] fix: use wac plug in tutorial and running guide Signed-off-by: Kate Goldenring --- component-model/examples/tutorial/README.md | 1 - component-model/src/creating-and-consuming/running.md | 2 +- component-model/src/tutorial.md | 6 +++--- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/component-model/examples/tutorial/README.md b/component-model/examples/tutorial/README.md index 8ab393e..e434e59 100644 --- a/component-model/examples/tutorial/README.md +++ b/component-model/examples/tutorial/README.md @@ -38,7 +38,6 @@ world app { } ``` - To expand the exercise to add more components, add another operator world, expand the enum, and modify the `command` component to call it. ## Building and running the example diff --git a/component-model/src/creating-and-consuming/running.md b/component-model/src/creating-and-consuming/running.md index eb27bda..63b6c71 100644 --- a/component-model/src/creating-and-consuming/running.md +++ b/component-model/src/creating-and-consuming/running.md @@ -24,7 +24,7 @@ If you're writing a library-style component - that is, one that exports a custom 4. Build your command component to a `.wasm` file. You will not be able to run this in `wasmtime` yet, as its imports are not yet satisfied. -5. Compose your command component with your library component by running `wasm-tools compose -d -o main.wasm`. +5. Compose your command component with your library component by running `wac plug --plug -o main.wasm`. 6. Run the composed component using `wasmtime run main.wasm` diff --git a/component-model/src/tutorial.md b/component-model/src/tutorial.md index d288b36..edc669a 100644 --- a/component-model/src/tutorial.md +++ b/component-model/src/tutorial.md @@ -124,14 +124,14 @@ For reference, see a completed [example](https://github.com/bytecodealliance/com ## Composing the calculator Now, we are ready to bring our components together into one runnable calculator component, using -`wasm-tools`. We will first compose the calculator component with the add component to satisfy it's +`wac`. We will first compose the calculator component with the add component to satisfy it's imports. We then compose that resolved calculator component with the command component to satisfy its `calculate` imports. The result is a command component that has all its imports satisfied and exports the `wasi:cli/run` function, which can be executed by `wasmtime`. ```sh -wasm-tools compose calculator.wasm -d adder.wasm -o composed.wasm -wasm-tools compose command.wasm -d composed.wasm -o final.wasm +wac plug calculator.wasm --plug adder.wasm -o composed.wasm +wac plug command.wasm --plug composed.wasm -o final.wasm ``` > If you'd prefer to take a more visual approach to composing components, see the [documentation on composing components with wasmbuilder.app](creating-and-consuming/composing.md#composing-components-with-a-visual-interface). From b9ed460d74bf2934732a217f88ead77e58730ef8 Mon Sep 17 00:00:00 2001 From: Victor Adossi Date: Wed, 7 Aug 2024 14:34:04 +0900 Subject: [PATCH 076/175] feat: improve javascript lang support docs This commit improves the JS languages support docs, adding: - references to Typescript integration (via `jco types`) - installation instructions - instructions on how to use generated bindings Signed-off-by: Victor Adossi Co-authored-by: Kate Goldenring --- .github/workflows/mdbook.yml | 2 + CONTRIBUTING.md | 10 + component-model/book.toml | 4 +- .../src/language-support/javascript.md | 545 ++++++++++++++++-- 4 files changed, 522 insertions(+), 39 deletions(-) diff --git a/.github/workflows/mdbook.yml b/.github/workflows/mdbook.yml index e177caf..caeb6be 100644 --- a/.github/workflows/mdbook.yml +++ b/.github/workflows/mdbook.yml @@ -31,6 +31,7 @@ jobs: env: MDBOOK_VERSION: 0.4.21 SITEMAP_GEN_VERSION: 0.2.0 + ALERTS_VERSION: 0.6.7 PUBLISH_DOMAIN: component-model.bytecodealliance.org steps: - uses: actions/checkout@v3 @@ -40,6 +41,7 @@ jobs: rustup update cargo install --version ${MDBOOK_VERSION} mdbook cargo install --version ${SITEMAP_GEN_VERSION} mdbook-sitemap-generator + cargo install --version ${ALERTS_VERSION} mdbook-alerts - name: Setup Pages id: pages uses: actions/configure-pages@v3 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 586f059..3fd0e73 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -10,6 +10,16 @@ You can run the website locally using the [mdBook](https://rust-lang.github.io/m To use this repository, you need [mdBook](https://rust-lang.github.io/mdBook/guide/installation.html) installed on your workstation. +This repository also makes use of mdBook plugins. To install mdBook and the plugins for this project, you can use [`cargo`][cargo]: + +```console +cargo install --version 0.4.21 mdbook +cargo install --version 0.2.0 mdbook-sitemap-generator +cargo install --version 0.6.7 mdbook-alerts +``` + +[cargo]: https://doc.rust-lang.org/cargo + ### Running the website locally After installing mdBook, you'll need to clone the code via git and navigate to the directory. diff --git a/component-model/book.toml b/component-model/book.toml index d04f565..e8c3123 100644 --- a/component-model/book.toml +++ b/component-model/book.toml @@ -8,4 +8,6 @@ title = "The WebAssembly Component Model" [output.html] git-repository-url = "https://github.com/bytecodealliance/component-docs/tree/main/component-model" edit-url-template = "https://github.com/bytecodealliance/component-docs/tree/main/component-model/{path}" -additional-css = ["theme/head.hbs"] \ No newline at end of file +additional-css = ["theme/head.hbs"] + +[preprocessor.alerts] diff --git a/component-model/src/language-support/javascript.md b/component-model/src/language-support/javascript.md index a9141a0..4f06407 100644 --- a/component-model/src/language-support/javascript.md +++ b/component-model/src/language-support/javascript.md @@ -1,81 +1,550 @@ # JavaScript Tooling -[`jco`](https://github.com/bytecodealliance/jco) is a fully native JS tool for working with the -emerging WebAssembly Components specification in JavaScript. +[WebAssembly][mdn-wasm] was originally developed as a technology for running non-Javascript workloads in the browser at near-native speed. -## Building a Component with `jco` +Javascript WebAssembly component model support is provided primarily by [`jco`](https://github.com/bytecodealliance/jco), a command line tool +which provides tooling for building WebAssembly components. -A component can be created from a JS module using `jco componentize`. First, install `jco` and `componentize-js`: +[Typescript][ts] can *also* be used, given that it is transpiled to JS first by relevant tooling (`tsc`). +`jco` generates [type declaration files (`.d.ts`)][ts-decl-file] by default, and also has a `jco types` +subcommand which generates typings that can be used with a Typescript codebase. -```sh -$ npm install @bytecodealliance/jco -$ npm install @bytecodealliance/componentize-js +> [!WARNING] +> While popular projects like [`emscripten`][emscripten] also build WebAssembly modules, those modules are not Component Model aware. +> +> Core WebAssembly modules do not contain the advanced features (rich types, structured language interoperation, composition) +> that the component model makes available. + +[emscripten]: https://emscripten.org/ +[ts]: https://typescriptlang.org +[mdn-wasm]: https://developer.mozilla.org/en-US/docs/WebAssembly + +## Installing `jco` + +Installing [`jco`][jco] (and its required peer dependency [`componentize-js`][componentize-js]) can be done via NodeJS project tooling: + +```console +npm install -g @bytecodealliance/componentize-js @bytecodealliance/jco ``` -Next, create or download the WIT world you would like to target. For this example we will use an [`example` -world](https://github.com/bytecodealliance/component-docs/tree/main/component-model/examples/example-host/add.wit) with an `add` function: +> [!NOTE] +> `jco` and `componentize-js` can be installed in a project-local manner with `npm install -D` + +[ComponentizeJS][componentize-js] provides tooling used by `jco` to transpile JS to Wasm, so installing both packages is required. + +[jco]: https://github.com/bytecodealliance/jco +[componentize-js]: https://github.com/bytecodealliance/ComponentizeJS + +## Overview of Building a Component with Javascript + +Building a WebAssembly component with Javascript often consists of: + +1. Determining which interface our functionality will target (i.e. a [WebAssembly Interface Types ("WIT")][wit] world) +2. Writing Javscript that satisfies the interface +3. Packaging our project Javscript as WebAssembly (whether for use in WebAssembly runtimes, other JS projects, or the browser) + +[WebAssembly Interface Types ("WIT")][wit] is a featureful Interface Definition Language ("IDL") for defining functionality, but most +of the time, you shouldn't need to write WIT from scratch. Often, it's sufficient to download a pre-existing interface that defines what +your component should do. + +The [`example` world][wit-example-world] exports a single `add` function that sums two numbers: ```wit package example:component; + world example { export add: func(x: s32, y: s32) -> s32; } ``` -Create a JavaScript module that implements the `add` function in the `example` world. +> [!NOTE] +> `export`ing the `add` function means that environments that interact with the resulting WebAssembly component +> will be able to *call* the `add` function. +> +> To learn more about the WIT syntax, check out the [WIT explainer][wit-explainer] + +[wit-example-world]: https://github.com/bytecodealliance/component-docs/tree/main/component-model/examples/example-host/add.wit +[wit-explainer]: https://component-model.bytecodealliance.org/design/wit.html + +## Implementing a JS WebAssembly Component + +To implement the [`example` world][wit-example-world], we must write a [JavaScript module][mdn-js-module] +that implements the exported `add` function: ```js -export function add(x, y) { +export const add = (x, y) => { return x + y; -} +}; ``` -Now, use `jco` to create a component from the JS module: +> [!WARNING] +> When building your Javascript project, ensure to set the `"type":"module"` option in `package.json`, +> as `jco` works exclusively with Javascript modules. + +In the code above, the `example` world is analogous to the Javascript module itself, with the exported `add` function +mirroring `add` function `export`ed in the WIT. + +With the WIT and Javascript in place, we can use [`jco`][jco] to create a WebAssembly component from the JS module, using `jco componentize`. + +Our component is *so simple* (reminiscent of [Core WebAssembly][wasm-core], which deals primarily in numeric values) that we're actually *not using* any of the [WebAssembly System Interface][wasi] -- this means that we can `--disable` it when we invoke `jco componentize` + +```console +jco componentize \ + path/to/add.js \ + --wit path/to/add.wit \ + --world-name example \ + --out add.wasm \ + --disable all +``` + +> [!NOTE] +> If you're using `jco` as a project-local dependency, you can run `npx jco` + +You should see output like the following: -```sh -$ jco componentize add.js --wit add.wit --world-name example --out add.wasm -OK Successfully written add.wasm with imports (). ``` +OK Successfully written add.wasm. +``` + +[mdn-js-module]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Modules + +## Running the Component in the `example-host` -Now, run the component using the [Rust `add` host](./rust.md#creating-a-command-component-with-cargo-component): +To run the component we've built, we can use the [`example-host` project][example-host]: -```sh -$ cd component-model/examples/add-host -$ cargo run --release -- 1 2 ../path/to/add.wasm +```console +cd component-model/examples/example-host +cargo run --release -- 1 2 ../path/to/add.wasm 1 + 2 = 3 ``` -## Running a Component from JavaScript Applications +> [!WARNING] +> The [`example-host` Rust project][example-host] uses the [Rust toolchain][rust-toolchain], in particular [`cargo`][cargo], +> so to run the code in this section you may need to install some more dependencies. -As the JavaScript runtime cannot yet execute Wasm components, a component must be transpiled into -JavaScript and a core module and then executed. `jco` automates this transpilation: +While the output isn't exciting, the code contained in `example-host` does a lot to make it happen: -```sh -$ jco transpile add.wasm -o out-dir +- Loads the WebAssembly binary at the provided path (in the command above, `../path/to/add.wasm`) +- Calls the `export`ed `add` function with arguments +- Prints the result -Transpiled JS Component Files: +The important Rust code looks like this: - - out-dir/add.core.wasm 6.72 MiB - - out-dir/add.d.ts 0.05 KiB - - out-dir/add.js 0.8 KiB +```rust +let component = Component::from_file(&engine, path).context("Component file not found")?; + +let (instance, _) = Example::instantiate_async(&mut store, &component, &linker) + .await + .context("Failed to instantiate the example world")?; + +instance + .call_add(&mut store, x, y) + .await + .context("Failed to call add function") ``` -A core module and JavaScript bindings have been outputted to the `out-dir`. +A quick reminder on the power and new capabilities afforded by WebAssembly -- we've written, loaded, instantiated and executed Javascript from Rust with a strict interface, without the need for FFI, subprocesses or a network call. + +[rust-toolchain]: https://www.rust-lang.org/tools/install +[example-host]: https://github.com/bytecodealliance/component-docs/tree/main/component-model/examples/example-host +[wit]: https://github.com/WebAssembly/component-model/blob/main/design/mvp/WIT.md +[nodejs]: https://nodejs.org/en +[cargo]: https://doc.rust-lang.org/cargo +[wasi]: https://wasi.dev/ +[wasm-core]: https://webassembly.github.io/spec/core/ -Now, you can import the resultant `add.js` file and run it from a JavaScript application. This -example renames it and imports it as an ECMAScript module for ease of running locally with node: +## Running a Component from JavaScript Applications (including the Browser) + +JavaScript runtimes available in browsers cannot yet execute WebAssembly components, so WebAssembly components +(Javascript or otherwise) must be "transpiled" into a JavaScript wrapper and one or more [WebAssembly core modules][wasm-core-module] +which *can* be run by in-browser WebAssembly runtimes. + +Given an existing WebAssembly component (e.g. `add.wasm` which implements the [`example` world][wit-example-world]), we can "transpile" the component into runnable Javscript by using `jco tranpsile`: + +```console +jco transpile add.wasm -o dist +``` + +You should see output similar to the following: + +``` + Transpiled JS Component Files: + + - dist/add.core.wasm 10.1 MiB + - dist/add.d.ts 0.1 KiB + - dist/add.js 1.57 KiB +``` + +> [!NOTE] +> To follow along, see the [`jco` example `add` component](https://github.com/bytecodealliance/jco/tree/main/examples/components/add). +> +> With the project pulled locally, you also run `npm run transpile` which outputs to `dist/transpiled` + + +Thanks to `jco` transpilation, you can import the resulting `dist/add.js` file and run it from any JavaScript application +using a runtime that supports the [core WebAssembly specification][core-wasm] as implemented for Javascript. + +To use this component from [NodeJS][nodejs], you can write code like the following: ```mjs -// app.mjs -import { add } from "./out-dir/add.mjs"; +import { add } from "./dist/add.js"; console.log("1 + 2 = " + add(1, 2)); ``` -The above example : +You can execute the Javascript module with `node` directly: + +```console +node run.js +``` -```sh -$ mv out-dir/add.js out-dir/add.mjs -$ node app.mjs +You should see output like the following: + +``` 1 + 2 = 3 ``` + +This is directly comparable to the Rust host code mentioned in the previous section. Here, we are able to +use NodeJS as a host for running WebAssembly, thanks to `jco`'s ability to transpile components. + +With `jco transpile` any WebAssembly binary (compiled from any language) can be run in Javascript natively. + +[wasm-core-module]: https://webassembly.github.io/spec/core/binary/modules.html +[core-wasm]: https://webassembly.github.io/spec/core/ + +## Building Reactor Components with `jco` + +Reactor components are WebAssembly components that are long running and meant to be called repeatedly over time. They're analogous to libraries of functionality rather than an executable (a "command" component). + +Components expose their interfaces via [WebAssembly Interface Types][docs-wit], hand-in-hand with the [Component Model][docs-component-model] which enables components to use higher level types interchangably. + + +[docs-wit]: ../design/wit.md +[docs-component-model]: ../design/why-component-model.md + +### Exporting WIT Interfaces with `jco` + +Packaging reusable functionality into WebAssembly components isn't useful if we have no way to *expose* that functionality. This section offers a slightly deeper dive into the usage of WIT in WebAssembly components that can use the Component Model. + +As in the previous example, `export`ing WIT interfaces for other components (or a WebAssembly host) to use is fundamental to developing WebAssembly programs. + +Let's examine a [`jco` example project called `string-reverse`][jco-examples-string-reverse] that exposes functionality for reversing a string. + +To build a project like `string-reverse` from the ground up, first we'd start with a WIT like the following: + +```wit +package example:string-reverse@0.1.0 + +@since(version = 0.1.0) +interface reverse { + reverse-string: func(s: string) -> string; +} + +world string-reverse { + export reverse; +} +``` + +As a slightly deeper crash course on [WIT][wit], here's what the above code describes: + +- We've defined a namespace called `example` +- We've defined a package called `string-reverse` inside the `example` namespace +- This WIT file corresponds to version `0.1.0` of `example:string-reverse` package +- We've defined an interface called `reverse` which contains *one* function called `reverse-string` +- We specify that the `reverse` interface has existed *since* the `0.1.0` version +- The `reverse-string` function (AKA. `example:reverse-string/reverse.reverse-string`) takes a string and returns a string +- We've defined a `world` called `string-reverse` which exports the functionality provided by the `reverse` interface + +> [!WARNING] +> How do we *know* that `reverse` actually reverses a string? +> +> Unfortunately, that problem is not really solvable at this level -- this is between you and the writer of the component that implements the WIT interface. +> +> Of course, with WebAssembly, you *can* enforce static checks if you're so inclined, *before* you run any given binary. + +OK now let's see what the JS code looks like to *implement* the `component` world: + +```js +/** + * This module is the JS implementation of the `string-reverse` WIT world + */ + +/** + * This Javascript will be interpreted by `jco` and turned into a + * WebAssembly binary with a single export (this `reverse` function). + */ +function reverseString(s) { + return s.reverse(); +} + +/** + * The Javascript export below represents the export of the `reverse` interface, + * which which contains `reverse-string` as it's primary exported function. + */ +export const reverse = { + reverseString, +}; +``` + +> [!NOTE] +> To view the full code listing along with instructions, see the [`examples/tutorials/jco/string-reverse` folder][jco-examples-string-reverse] + +To use `jco` to compile this component, you can run the following from the `string-reverse` folder: + +```console +npx jco componentize \ + string-reverse.mjs \ + --wit wit/component.wit \ + --world-name component \ + --out string-reverse.wasm \ + --disable all +``` + +> [!NOTE] +> Like the previous example, we're not using any of the advanced [WebAssembly System Interface][wasi] features, so we `--disable` all of them +> +> Rather than typing out the `jco componentize` command manually, you can also run +> the build command with [`npm run build` from the `string-reverse` folder](https://github.com/bytecodealliance/jco/blob/main/examples/components/string-reverse/package.json#L6). + +You should see output like the following: + +``` +OK Successfully written string-reverse.wasm. +``` + +Now that we have a WebAssembly binary, we can *also* use `jco` to run it in a native Javascript context by *transpiling* the WebAsssembly binary (which could have come from anywhere!) to a Javascript module. + +```console +npx jco transpile string-reverse.wasm -o dist/transpiled +``` + +You should see the following output: + +``` + Transpiled JS Component Files: + + - dist/transpiled/interfaces/example-string-reverse-reverse.d.ts 0.1 KiB + - dist/transpiled/string-reverse.core.wasm 10.1 MiB + - dist/transpiled/string-reverse.d.ts 0.15 KiB + - dist/transpiled/string-reverse.js 2.55 KiB +``` + +> [!TIP] +> A gentle reminder that, transpilation *does* produce [Typescript declaration file][ts-decl-file], for use in Typescript projects. + +Now that we have a transpiled module, we can run it from any Javascript context that supports core WebAssembly (whether NodeJS or the browser). + +For NodeJS, we can use code like the following: + +```mjs +// If this import listed below is missing, please run `npm run transpile` +import { reverse } from "./dist/transpiled/string-reverse.mjs"; + +const reversed = reverse.reverseString("!dlroW olleH"); + +console.log(`reverseString('!dlroW olleH') = ${reversed}`); +``` + +> [!NOTE] +> In the `jco` example project, you can run `npm run transpiled-js` to build the existing code. + +Assuming you have the `dist/transpiled` folder populated (by running `jco transpile` in the previous step), you should see output like the following: + +``` +reverseString('!dlrow olleh') = hello world! +``` + +While it's somewhat redundant in this context, what we've done from NodeJS demonstrates the usefulness of WebAssembly and the `jco` toolchain. With the help of `jco`, we have: + +- Compiled Javascript to a WebAssembly module (`jco compile`), adhering to an interface defined via WIT +- Converted the compiled WebAssembly module (which could be from *any* language) to a module that can be used from any compliant JS runtime (`jco transpile`) +- Run the transpiled WebAssembly component from a Javascript native runtime (NodeJS) + +[repo]: https://github.com/bytecodealliance/component-docs +[jco-examples-string-reverse]: https://github.com/bytecodealliance/jco/tree/main/examples/components/string-reverse +[ts-decl-file]: https://www.typescriptlang.org/docs/handbook/declaration-files/deep-dive.html#declaration-file-theory-a-deep-dive + +### Advanced: Importing and Reusing WIT Interfaces via Composition + +Just as `export`ing functionality is core to building useful WebAssembly components, and similarly `import`ing and reusing functionality is key to using the strengths of WebAssembly. + +Restated, **WIT and the Component Model enable WebAssembly to *compose***. This means we can build on top of functionality that already exists and `export` *new* functionality that depends on existing functionality. + +Let's say in addition to the reversing the string (in the previous example) we want to build shared functionality that *also* upper cases the text it receives. + +We can reuse the reversing functionality *and* export a new interface which enables us to reverse and upper-case. + +Let's examine a [`jco` example project called `string-reverse-upper`][jco-examples-string-reverse-upper] that exposes +functionality for reversing *and* upper-casing a string. + +Here's the WIT one might write to enable this functionality: + +```wit +package example:string-reverse-upper@0.1.0; + +@since(version = 0.1.0) +interface reversed-upper { + reverse-and-uppercase: func(s: string) -> string; +} + +world revup { + // + // NOTE, the import below translates to: + // :/@ + // + import example:string-reverse/reverse@0.1.0; + + export reversed-upper; +} +``` + +This time, the `world` named `revup` that we are building *relies* on the interface `reverse` in the package `string-reverse` from the namespace `example`. + +We can make use of *any* WebAssembly component that matches that interface, as long as we *compose* their functionality with the component that implements the `revup` world. + +The `revup` world `import`s (and makes use) of `reverse` in order to `export` (provide) the `reversed-upper` interface, which contains the `reverse-and-uppercase` function (in JS, `reverseAndUppercase`). + +> [!NOTE] +> Functionality is imported from the `interface`, *not* the `world`. `world`s can be included/used, but the syntax is slightly different for that. + +The Javascript to make this work ([`string-reverse-upper.mjs` in `jco/examples`](https://github.com/bytecodealliance/jco/blob/main/examples/components/string-reverse-upper/string-reverse-upper.mjs)) looks like this: + +```js +/** + * This module is the JS implementation of the `revup` WIT world + */ + +/** + * The import here is *virtual*. It refers to the `import`ed `reverse` interface in component.wit. + * + * These types *do not resolve* when the first `string-reverse-upper` component is built, + * but the types are relevant for the resulting *composed* component. + */ +import { reverseString } from 'example:string-reverse/reverse@0.1.0'; + +/** + * The Javascript export below represents the export of the `reversed-upper` interface, + * which which contains `revup` as it's primary exported function. + */ +export const reversedUpper = { + /** + * Represents the implementation of the `reverse-and-uppercase` function in the `reversed-upper` interface + * + * This function makes use of `reverse-string` which is *imported* from another WebAssembly binary. + */ + reverseAndUppercase() { + return reverseString(s).toLocaleUpperCase(); + }, +}; +``` + +We can build the component with `jco componentize`: + +```console +npx jco componentize \ + string-reverse-upper.mjs \ + --wit wit/ \ + --world-name revup \ + --out string-reverse-upper.incomplete.wasm \ + --disable all +``` + +While we've successfully built a WebAssembly component, unlike the other examples, ours is *not yet complete*. + +We can see that if we print the WIT of the generated component by running `jco wit`: + +```console +npx jco wit string-reverse-upper.incomplete.wasm +``` + +You should see output like the following: + +``` +package root:component; + +world root { + import example:string-reverse/reverse@0.1.0; + + export example:string-reverse-upper/reversed-upper@0.1.0; +} +``` + +This tells us that the component still has *unfulfilled `import`s* -- we *use* the `reverseString` function that's in `reverse` as if it exists, but it's not yet a real part of the WebAssembly component (hence we've named it `.incomplete.wasm`. + +To compose the two components (`string-reverse-upper/string-reverse-upper.incomplete.wasm` and `string-reverse/string-reverse.wasm` we built earlier), we'll need the [WebAssembly Composition tool (`wac`)][wac]. We can use `wac plug`: + +```console +wac plug \ + -o string-reverse-upper.wasm \ + --plug ../string-reverse/string-reverse.wasm \ + string-reverse-upper.incomplete.wasm +``` + +> [!NOTE] +> You can also run this step with `npm run compose`. + +A new component `string-reverse-upper.wasm` should now be present, which is a "complete" component -- we can check the output of `jco wit` to ensure that all the imports are satisfied: + +```wit +package root:component; + +world root { + export example:string-reverse-upper/reversed-upper@0.1.0; +} +``` + +It's as-if we never imported any functionality at all -- the functionality present in `string-reverse.wasm` has been *merged into* `string-reverse-upper.wasm`, and it now simply `export`s the advanced functionality. + +We can run this completed component with in any WebAssembly-capable native Javascript environment by using a the transpiled result: + +```console +npx jco transpile string-reverse-upper.wasm -o dist/transpiled +``` + +> [!NOTE] +> In the example project, you can run `npm run transpile` instead, which will also change the extension on `dist/transpiled/string-reverse-upper.js` to `.mjs` + +You should see output like the following: + +``` + Transpiled JS Component Files: + + - dist/transpiled/interfaces/example-string-reverse-upper-reversed-upper.d.ts 0.12 KiB + - dist/transpiled/string-reverse-upper.core.wasm 10.1 MiB + - dist/transpiled/string-reverse-upper.core2.wasm 10.1 MiB + - dist/transpiled/string-reverse-upper.d.ts 0.19 KiB + - dist/transpiled/string-reverse-upper.js 6.13 KiB +``` + +> [!TIP] +> Notice that there are *two* core WebAssembly files? That's because two core WebAssembly modules were involved +> in creating the ultimate functionality we needed. + +To run the transpiled component, we can write code like the following: + +```mjs +/** + * If this import listed below is missing, please run + * + * ``` + * npm run build && npm run compose && npm run transpile` + * ``` + */ +import { reversedUpper } from "./dist/transpiled/string-reverse-upper.mjs"; + +const result = reversedUpper.reverseAndUppercase("!dlroW olleH"); + +console.log(`reverseAndUppercase('!dlroW olleH') = ${result}`); +``` + +> [!NOTE] +> In the [`jco` example project](https://github.com/bytecodealliance/jco/tree/main/examples/components/string-reverse-upper), you can run `npm run transpiled-js` + +You should see output like the following: + +``` +reverseAndUppercase('!dlroW olleH') = HELLO WORLD! +``` + +[wac]: https://github.com/bytecodealliance/wac +[jco-examples-string-reverse-upper]: https://github.com/bytecodealliance/jco/tree/main/examples/components/string-reverse-upper From 725ada2093a42d54f52bc51a78d2e8fd019892ae Mon Sep 17 00:00:00 2001 From: Kate Goldenring Date: Thu, 31 Oct 2024 12:46:00 -0700 Subject: [PATCH 077/175] Add sitemap generator script to use from GH action Signed-off-by: Kate Goldenring --- .github/workflows/mdbook.yml | 8 +++-- CONTRIBUTING.md | 1 - scripts/generate_sitemap.py | 58 ++++++++++++++++++++++++++++++++++++ 3 files changed, 63 insertions(+), 4 deletions(-) create mode 100644 scripts/generate_sitemap.py diff --git a/.github/workflows/mdbook.yml b/.github/workflows/mdbook.yml index caeb6be..1263f8c 100644 --- a/.github/workflows/mdbook.yml +++ b/.github/workflows/mdbook.yml @@ -30,7 +30,6 @@ jobs: runs-on: ubuntu-latest env: MDBOOK_VERSION: 0.4.21 - SITEMAP_GEN_VERSION: 0.2.0 ALERTS_VERSION: 0.6.7 PUBLISH_DOMAIN: component-model.bytecodealliance.org steps: @@ -40,17 +39,20 @@ jobs: curl --proto '=https' --tlsv1.2 https://sh.rustup.rs -sSf -y | sh rustup update cargo install --version ${MDBOOK_VERSION} mdbook - cargo install --version ${SITEMAP_GEN_VERSION} mdbook-sitemap-generator cargo install --version ${ALERTS_VERSION} mdbook-alerts - name: Setup Pages id: pages uses: actions/configure-pages@v3 - name: Build with mdBook run: mdbook build component-model + - name: Setup Python + uses: actions/setup-python@v2 + with: + python-version: 3.10 - name: Generate sitemap run: | cd component-model - mdbook-sitemap-generator -d ${PUBLISH_DOMAIN} -o book/sitemap.xml + python3 ../scripts/generate_sitemap.py --domain "component-model.bytecodealliance.org" --higher-priority "design" --output-path book/sitemap.xml cd .. - name: Upload artifact uses: actions/upload-pages-artifact@v2 diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 3fd0e73..d32df22 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -14,7 +14,6 @@ This repository also makes use of mdBook plugins. To install mdBook and the plug ```console cargo install --version 0.4.21 mdbook -cargo install --version 0.2.0 mdbook-sitemap-generator cargo install --version 0.6.7 mdbook-alerts ``` diff --git a/scripts/generate_sitemap.py b/scripts/generate_sitemap.py new file mode 100644 index 0000000..bab48a3 --- /dev/null +++ b/scripts/generate_sitemap.py @@ -0,0 +1,58 @@ +import os +from urllib.parse import urljoin +from datetime import datetime +import argparse + +def parse_summary(): + """Parse URLs from the SUMMARY.md file.""" + with open("src/SUMMARY.md", "r") as file: + for line in file: + if "](" in line: + url = line.split("](")[1].split(")")[0] + # Add .html extension if not the root URL + if url.endswith(".md"): + url = url[:-3] + ".html" + yield url + +def determine_priority(url_path, higher_priority_section): + """Determine the priority based on the URL path and specified higher priority section.""" + if url_path.count("/") <= 1: # Pages directly under the base URL + return "1.0" + elif higher_priority_section and url_path.startswith(f"./{higher_priority_section}"): # Pages in the specified higher priority section + return "0.8" + else: + return "0.5" # All other pages + +def generate_sitemap(domain, output_path, higher_priority_section): + """Generate a sitemap XML file from SUMMARY.md structure.""" + domain = "https://" + domain + urls = parse_summary() # Add base URL to the list of URLs + urls = [""] + list(urls) + + sitemap = '\n' + sitemap += '\n' + + for url in urls: + full_url = urljoin(domain, url) + priority = determine_priority(url, higher_priority_section) + + sitemap += " \n" + sitemap += f" {full_url}\n" + sitemap += " weekly\n" + sitemap += f" {priority}\n" + sitemap += " \n" + + sitemap += "" + + # Write the sitemap to the specified output path + with open(output_path, "w") as file: + file.write(sitemap) + +if __name__ == "__main__": + parser = argparse.ArgumentParser(description="Generate a sitemap for mdBook") + parser.add_argument("-d", "--domain", required=True, help="Domain for the mdBook site (e.g., component-model.bytecodealliance.org)") + parser.add_argument("-o", "--output-path", default="sitemap.xml", help="Output path for the sitemap file") + parser.add_argument("-p", "--higher-priority", help="Subsection path (e.g., 'design') to assign a higher priority of 0.8") + args = parser.parse_args() + + generate_sitemap(args.domain, args.output_path, args.higher_priority) From e65baf66c9b9bf63cb042308d1bb89bd1516f79d Mon Sep 17 00:00:00 2001 From: "Jiaxiao Zhou (Mossaka)" Date: Mon, 4 Nov 2024 23:56:13 -0800 Subject: [PATCH 078/175] component-model/src/language-support/go: update to use the new wit-bindgen-go tool and wasip2 target of TinyGo Signed-off-by: Jiaxiao Zhou (Mossaka) --- component-model/src/language-support/go.md | 332 +++++++-------------- 1 file changed, 111 insertions(+), 221 deletions(-) diff --git a/component-model/src/language-support/go.md b/component-model/src/language-support/go.md index 1c29748..ef4297b 100644 --- a/component-model/src/language-support/go.md +++ b/component-model/src/language-support/go.md @@ -1,288 +1,178 @@ -# Go Tooling +# Go tooling -The [TinyGo toolchain](https://tinygo.org/docs/guides/webassembly/wasi/) has native support for WASI -and can build Wasm core modules. With the help of some component model tooling, we can then take -that core module and embed it in a component. To demonstrate how to use the tooling, this guide -walks through building a component that implements the `example` world defined in the [`add.wit` +The [TinyGo compiler](https://tinygo.org/) v0.33.0 and above has native support for the WebAssembly Component Model and WASI 0.2.0. This guide walks through building a component that implements `example` world defined in the [`add.wit` package](../../examples/example-host/add.wit). The component will implement a simple add function. -## Overview of Building a Component with TinyGo +## 1. Install the TinyGo compiler and `wasm-tools` -There are several steps to building a component in TinyGo: +Follow the [TinyGo installation instructions](https://tinygo.org/getting-started/) to install the TinyGo compiler. Additionally, install the `wasm-tools` CLI tool from the [wasm-tools repository](https://github.com/bytecodealliance/wasm-tools/releases). -1. Determine which world the component will implement -2. Build a Wasm core module using the native TinyGo toolchain -3. Convert the Wasm core module to a component using - [`wasm-tools`](https://github.com/bytecodealliance/wasm-tools) - -The following sections will walk through these steps, producing a core Wasm module that targets WASI -preview 1 and converting this core module to a component that supports WASI preview 2. - -### 1: The `example` World - -The next two sections walk through creating a component that implements the the following [`example` -world](https://github.com/bytecodealliance/component-docs/tree/main/component-model/examples/example-host/add.wit): - -```wit -package example:component; - -world example { - export add: func(x: s32, y: s32) -> s32; -} -``` - -This is a simple world that exports one `add` function. If you want to go beyond a quick start to a -more realistic example, jump to the [section on implementing worlds with -interfaces](#implementing-worlds-with-interfaces-with-tinygo-and-wit-bindgen). - -### 2: Creating a TinyGo Core Wasm Module - -The TinyGo toolchain natively supports compiling Go programs to core Wasm modules. Let's create one that implements the `add` function in the [`example` -world](https://github.com/bytecodealliance/component-docs/tree/main/component-model/examples/example-host/add.wit). - -First, implement a simple add function in `add.go`: - -```go -package main - -//go:wasm-module yourmodulename -//export add -func add(x, y int32) int32 { - return x + y -} - -// main is required for the `wasi` target, even if it isn't used. -func main() {} -``` - -Note, we must still provide a `main` function. This is a limitation of TinyGo's support of WASI as it currently only supports `main` packages - commands that run start-to-finish and -then exit. Our example program, however, is more like a library which exports an add function that -can be called multiple times; and nothing will ever call its `main` function. - -Now, we can use TinyGo to build our core Wasm module: +To verify the installation, run the following commands: ```sh -tinygo build -o add.wasm -target=wasi add.go +$ tinygo version +$ wasm-tools -V ``` -You should now have an `add.wasm` module. But at the moment, this is a core module. In the next section, we will convert it into a component. - -### 3: Converting a Wasm Core Module to a Component +## 2. Determine which world the component will implement -In the previous step, we produced a core module that implements our `example` world. We now want to -convert to a component to gain the benefits of the component model, such as the ability to compose -with it with other components as done in the [`calculator` component in the -tutorial](../tutorial.md#the-calculator-interface). -TinyGo is actively developing a `wasip2` target (in this [PR](https://github.com/tinygo-org/tinygo/pull/4027)), but for now we must take additional steps to convert the module to a component. - -We will use -[`wasm-tools`](https://github.com/bytecodealliance/wasm-tools), a low level tool for manipulating -Wasm modules. Download the -latest release from the [project's -repository](https://github.com/bytecodealliance/wasm-tools/releases/tag/wasm-tools-1.0.44). - -We also need to download the WASI preview 1 adapter. TinyGo (similar to C) targets preview 1 of WASI -which does not support the component model (`.wit` files). Fortunately, [Wasmtime provides -adapters](https://github.com/bytecodealliance/wit-bindgen#creating-components-wasi) for adapting -preview 1 modules to preview 2 components. There are adapters for both [reactor and command -components](../creating-and-consuming/authoring.md#command-and-reactor-components). Our `add.wit` -world defines a reactor component, so download the `wasi_snapshot_preview1.reactor.wasm` adapter -from [the latest Wasmtime release](https://github.com/bytecodealliance/wasmtime/releases). - -Now that we have all the prerequisites downloaded, we can use the `wasm-tools component` subcommand -to componentize our Wasm module, first embedding component metadata inside the core module and then -encoding the module as a component using the WASI preview 1 adapter. - -```sh -export COMPONENT_ADAPTER_REACTOR=/path/to/wasi_snapshot_preview1.reactor.wasm -wasm-tools component embed --world example ./add.wit add.wasm -o add.embed.wasm -wasm-tools component new -o add.component.wasm --adapt wasi_snapshot_preview1="$COMPONENT_ADAPTER_REACTOR" add.embed.wasm -``` - -We now have an add component that satisfies our `example` world, exporting the `add` function, which -we can confirm using another `wasm-tools` command: - -```sh -$ wasm-tools component wit add.component.wasm -package root:component - -world root { - import wasi:io/streams - import wasi:filesystem/types - import wasi:filesystem/preopens - import wasi:cli/stdin - import wasi:cli/stdout - import wasi:cli/stderr - import wasi:cli/terminal-input - import wasi:cli/terminal-output - import wasi:cli/terminal-stdin - import wasi:cli/terminal-stdout - import wasi:cli/terminal-stderr - - export add: func(x: s32, y: s32) -> s32 -} -``` - -### Testing an `add` Component - -To run our add component, we need to use a host program with a WASI runtime that understands the -`example` world. We've provided an [`example-host`](../../examples/example-host/README.md) to do -just that. It calls the `add` function of a passed in component providing two operands. To use it, -clone this repository and run the Rust program: - -```sh -git clone git@github.com:bytecodealliance/component-docs.git -cd component-docs/component-model/examples/example-host -cargo run --release -- 1 2 /path/to/add.component.wasm -``` - -## Implementing Worlds with Interfaces with TinyGo and Wit-Bindgen - -The [`example` -world](https://github.com/bytecodealliance/component-docs/tree/main/component-model/examples/example-host/add.wit) we were using in the previous sections simply exports a function. However, to use your component from another component, it must export an interface. This means we will need to use a tool to generate bindings to use as glue code, and adds a couple more steps (2-3) to building Wasm components with TinyGo: - -1. Determine which world the component will implement -2. Generate bindings for that world using - [`wit-bindgen`](https://github.com/bytecodealliance/wit-bindgen#creating-a-component) -3. Implement the interface defined in the bindings -4. Build a Wasm core module using the native TinyGo toolchain -5. Convert the Wasm core module to a component using - [`wasm-tools`](https://github.com/bytecodealliance/wasm-tools) - -For this example, we will use the following world, which moves the add function behind an `add` interface: +The `wasip2` target of TinyGo requires the imports of `wasi:cli/imports@0.2.0` and thus we need to include them in the `add.wit`. Below is the minimal `add.wit` file that includes the required imports: ```wit package docs:adder@0.1.0; -interface add { - add: func(a: u32, b: u32) -> u32; +world adder { + import wasi:io/error@0.2.0; + import wasi:io/streams@0.2.0; + import wasi:cli/stdout@0.2.0; + import wasi:random/random@0.2.0; + + export add: func(x: s32, y: s32) -> s32; } -world adder { - export add; +package wasi:io@0.2.0 { + interface error { + resource error; + } + interface streams { + use error.{error}; + + resource output-stream { + blocking-write-and-flush: func(contents: list) -> result<_, stream-error>; + } + + variant stream-error { + last-operation-failed(error), + closed, + } + } } -``` -Our new steps use a low-level tool, [`wit-bindgen`](https://github.com/bytecodealliance/wit-bindgen?tab=readme-ov-file#guest-tinygo) to generate bindings, or wrapper code, for implementing the desired world. +package wasi:cli@0.2.0 { + interface stdout { + use wasi:io/streams@0.2.0.{output-stream}; + + get-stdout: func() -> output-stream; + } +} -First, install [a release of `wit-bindgen`](https://github.com/bytecodealliance/wit-bindgen/releases), updating the environment variables for your desired version, architecture and OS: -```sh -export VERSION=0.26.0 ARCH=aarch64 OS=macos -wget https://github.com/bytecodealliance/wit-bindgen/releases/download/v$VERSION/wit-bindgen-$VERSION-$ARCH-$OS.tar.gz -tar -xzf wit-bindgen-$VERSION-$ARCH-$OS.tar.gz -mv wit-bindgen-$VERSION-$ARCH-$OS/wit-bindgen ./ -rm -rf wit-bindgen-$VERSION-$ARCH-$OS.tar.gz wit-bindgen-$VERSION-$ARCH-$OS +package wasi:random@0.2.0 { + interface random { + get-random-u64: func() -> u64; + } +} ``` Now, create your Go project: ```sh -mkdir add && cd add -go mod init example.com +$ mkdir add && cd add +$ go mod init example.com ``` -Next, run `wit-bindgen`, specifying TinyGo as the target language, the path to the -[`add.wit`](../../examples/example-host/add.wit) package, the name of the world in that package to -generate bindings for (`adder`), and a directory to output the generated code (`gen`): +Next, we can generate the bindings for the `add.wit` file: ```sh -wit-bindgen tiny-go ./add.wit --world adder --out-dir=gen +$ go run github.com/bytecodealliance/wasm-tools-go/cmd/wit-bindgen-go generate -o internal/ ./add.wit ``` -The `gen` directory now contains several files: +The `internal` directory will contain the generated Go code for the `add.wit` file. ```sh -$ tree gen -gen -├── adder.c -├── adder.go -└── adder.h +$ tree internal +internal +├── docs +│ └── adder +│ └── adder +│ ├── adder.exports.go +│ ├── adder.wasm.go +│ ├── adder.wit +│ ├── adder.wit.go +│ └── empty.s +└── wasi + ├── cli + │ └── stdout + │ ├── empty.s + │ ├── stdout.wasm.go + │ └── stdout.wit.go + ├── io + │ ├── error + │ │ ├── empty.s + │ │ ├── error.wit.go + │ │ └── ioerror.wasm.go + │ └── streams + │ ├── empty.s + │ ├── streams.wasm.go + │ └── streams.wit.go + └── random + └── random + ├── empty.s + ├── random.wasm.go + └── random.wit.go ``` -The `adder.go` file defines an `ExportsDocsAdder0_1_0_Add` interface that matches the structure of our `add` -interface. The name of the interface is taken from the WIT package name (`docs:adder@0.1.0`) combined with the interface name (`add`). In our Go module, first implement the `ExportsDocsAdder0_1_0_Add` interface by defining the `Add` function. +The `adder.exports.go` file contains the exported functions that need to be implemented in the Go code called `Exports`. -```go +## 3. Implement the `add` function + +```Go package main import ( - . "example.com/gen" + "example.com/internal/example/component/example" ) -type AdderImpl struct { -} - -// Implement the `ExportsDocsAdder0_1_0_Add` interface to ensure the component satisfies the -// `adder` world -func (i AdderImpl) Add(x, y uint32) uint32 { - return x + y +func init() { + example.Exports.Add = func(x int32, y int32) int32 { + return x + y + } } // main is required for the `wasi` target, even if it isn't used. func main() {} ``` -After implementing the adder world, we need to load it by passing it to the `SetExportsDocsAdder0_1_0_Add` -function from our bindings (`adder.go`). Since our component is a library, `main` will not be called. However, only Go -programs with `main` can target WASI currently. As a loophole, we will initialize our `AdderImpl` -type inside an `init` function. Go's `init` functions are used to do initialization tasks that +Go's `init` functions are used to do initialization tasks that should be done before any other tasks. In this case, we are using it to export the `Add` function and make it callable using the generated C bindings (`adder.c`). After populating the `init` function, -our complete implementation looks similar to the following: - -```go -package main - -import ( - . "example.com/gen" -) -type AdderImpl struct { -} +## 4. Build the component -// Implement the ExportsDocsAdder0_1_0_Add interface to ensure the component satisfies the -// `adder` world -func (i AdderImpl) Add(x, y uint32) uint32 { - return x + y -} +We can build our component using TinyGo by specifying the wit-package to be `add.wit` and the WIT world to be `adder`. -// To enable our component to be a library, implement the component in the -// `init` function which is always called first when a Go package is run. -func init() { - example := AdderImpl{} - SetExportsDocsAdder0_1_0_Add(example) -} - -// main is required for the `WASI` target, even if it isn't used. -func main() {} -``` +TinyGo will invoke `wasm-tools` to embed the WIT file to the module and componentize it. -Once again, we can build our core module using TinyGo, componentize it, and adapt it for WASI 0.2: ```sh -export COMPONENT_ADAPTER_REACTOR=/path/to/wasi_snapshot_preview1.reactor.wasm -tinygo build -o add.wasm -target=wasi add.go -wasm-tools component embed --world adder ./add.wit add.wasm -o add.embed.wasm -wasm-tools component new -o add.component.wasm --adapt wasi_snapshot_preview1="$COMPONENT_ADAPTER_REACTOR" add.embed.wasm +$ tinygo build -target=wasip2 -o add.wasm --wit-package add.wit --wit-world adder main.go ``` -We now have an add component that satisfies our `adder` world, exporting the `add` function, which -we can confirm using the `wasm-tools component wit` command: +We can confirm using the `wasm-tools component wit` command: ```sh -wasm-tools component wit add.component.wasm +$ wasm-tools component wit add.wasm package root:component; world root { import wasi:io/error@0.2.0; import wasi:io/streams@0.2.0; - import wasi:cli/stdin@0.2.0; import wasi:cli/stdout@0.2.0; - import wasi:cli/stderr@0.2.0; - import wasi:clocks/wall-clock@0.2.0; - import wasi:filesystem/types@0.2.0; - import wasi:filesystem/preopens@0.2.0; + import wasi:random/random@0.2.0; - export docs:adder/add@0.1.0; + export add: func(x: s32, y: s32) -> s32; } +... +``` + +## 5. Testing the `add` Component + +To run our add component, we need to use a host program with a WASI runtime that understands the +`example` world. We've provided an [`example-host`](../../examples/example-host/README.md) to do +just that. It calls the `add` function of a passed in component providing two operands. To use it, +clone this repository and run the Rust program: + +```sh +git clone git@github.com:bytecodealliance/component-docs.git +cd component-docs/component-model/examples/example-host +cargo run --release -- 1 2 /path/to/add.wasm ``` From 78029b782daf8265a26775b970aa8de0bb1d6ef7 Mon Sep 17 00:00:00 2001 From: "Jiaxiao Zhou (Mossaka)" Date: Mon, 4 Nov 2024 23:58:48 -0800 Subject: [PATCH 079/175] component-model/src/language-support/go: capitalize section titles Signed-off-by: Jiaxiao Zhou (Mossaka) --- component-model/src/language-support/go.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/component-model/src/language-support/go.md b/component-model/src/language-support/go.md index ef4297b..4058568 100644 --- a/component-model/src/language-support/go.md +++ b/component-model/src/language-support/go.md @@ -1,9 +1,9 @@ -# Go tooling +# Go Tooling The [TinyGo compiler](https://tinygo.org/) v0.33.0 and above has native support for the WebAssembly Component Model and WASI 0.2.0. This guide walks through building a component that implements `example` world defined in the [`add.wit` package](../../examples/example-host/add.wit). The component will implement a simple add function. -## 1. Install the TinyGo compiler and `wasm-tools` +## 1. Install the TinyGo Compiler and `wasm-tools` Follow the [TinyGo installation instructions](https://tinygo.org/getting-started/) to install the TinyGo compiler. Additionally, install the `wasm-tools` CLI tool from the [wasm-tools repository](https://github.com/bytecodealliance/wasm-tools/releases). @@ -14,7 +14,7 @@ $ tinygo version $ wasm-tools -V ``` -## 2. Determine which world the component will implement +## 2. Determine which World the Component will Implement The `wasip2` target of TinyGo requires the imports of `wasi:cli/imports@0.2.0` and thus we need to include them in the `add.wit`. Below is the minimal `add.wit` file that includes the required imports: @@ -114,7 +114,7 @@ internal The `adder.exports.go` file contains the exported functions that need to be implemented in the Go code called `Exports`. -## 3. Implement the `add` function +## 3. Implement the `add` Function ```Go package main @@ -137,7 +137,7 @@ Go's `init` functions are used to do initialization tasks that should be done before any other tasks. In this case, we are using it to export the `Add` function and make it callable using the generated C bindings (`adder.c`). After populating the `init` function, -## 4. Build the component +## 4. Build the Component We can build our component using TinyGo by specifying the wit-package to be `add.wit` and the WIT world to be `adder`. From 84ee37842877332999cefd7153d0b901cb09358d Mon Sep 17 00:00:00 2001 From: "Jiaxiao Zhou (Mossaka)" Date: Thu, 7 Nov 2024 08:20:37 -0800 Subject: [PATCH 080/175] go: explain why the cli imports are needed and add more comments to the wkg command Signed-off-by: Jiaxiao Zhou (Mossaka) --- component-model/src/language-support/go.md | 46 ++++++++++++++++------ 1 file changed, 33 insertions(+), 13 deletions(-) diff --git a/component-model/src/language-support/go.md b/component-model/src/language-support/go.md index 4058568..aa69ad9 100644 --- a/component-model/src/language-support/go.md +++ b/component-model/src/language-support/go.md @@ -1,22 +1,43 @@ # Go Tooling -The [TinyGo compiler](https://tinygo.org/) v0.33.0 and above has native support for the WebAssembly Component Model and WASI 0.2.0. This guide walks through building a component that implements `example` world defined in the [`add.wit` +The [TinyGo compiler](https://tinygo.org/) v0.34.0 and above has native support for the WebAssembly Component Model and WASI 0.2.0. This guide walks through building a component that implements `example` world defined in the [`add.wit` package](../../examples/example-host/add.wit). The component will implement a simple add function. -## 1. Install the TinyGo Compiler and `wasm-tools` +## 1. Install the tools Follow the [TinyGo installation instructions](https://tinygo.org/getting-started/) to install the TinyGo compiler. Additionally, install the `wasm-tools` CLI tool from the [wasm-tools repository](https://github.com/bytecodealliance/wasm-tools/releases). To verify the installation, run the following commands: -```sh +```console $ tinygo version +tinygo version 0.34.0 ... $ wasm-tools -V +wasm-tools 1.219.1 ... ``` +Optional: Install the `wkg` CLI tool to resolve the imports in the WIT file. The `wkg` CLI is a part of the [Wasm Component package manager](https://github.com/bytecodealliance/wasm-pkg-tools/releases) + ## 2. Determine which World the Component will Implement -The `wasip2` target of TinyGo requires the imports of `wasi:cli/imports@0.2.0` and thus we need to include them in the `add.wit`. Below is the minimal `add.wit` file that includes the required imports: +The `wasip2` target of TinyGo assumes that the component is targeting `wasi:cli/command@0.2.0` world so it requires the imports of `wasi:cli/imports@0.2.0`. We need to include them in the `add.wit`. Tools like `wkg` can be handy to build a complete WIT package by resolving the imports. + +```wit +# wit/add.wit +package docs:adder@0.1.0; +world adder { + include wasi:cli/imports@0.2.0; + export add: func(x: s32, y: s32) -> s32; +} +``` + +Running the `wkg wit build` command will resolve the imports and generate the complete WIT file encoded as a Wasm component. + +```console +wkg wit build +``` + +Or you can manually include the required imports in the `add.wit` file. Below is the minimal `add.wit` file that includes the required imports: ```wit package docs:adder@0.1.0; @@ -66,20 +87,20 @@ package wasi:random@0.2.0 { Now, create your Go project: -```sh +```console $ mkdir add && cd add $ go mod init example.com ``` Next, we can generate the bindings for the `add.wit` file: -```sh +```console $ go run github.com/bytecodealliance/wasm-tools-go/cmd/wit-bindgen-go generate -o internal/ ./add.wit ``` The `internal` directory will contain the generated Go code for the `add.wit` file. -```sh +```console $ tree internal internal ├── docs @@ -134,22 +155,21 @@ func main() {} ``` Go's `init` functions are used to do initialization tasks that -should be done before any other tasks. In this case, we are using it to export the `Add` function and -make it callable using the generated C bindings (`adder.c`). After populating the `init` function, +should be done before any other tasks. In this case, we are using it to export the `Add` function. ## 4. Build the Component -We can build our component using TinyGo by specifying the wit-package to be `add.wit` and the WIT world to be `adder`. +We can build our component using TinyGo by specifying the wit-package to be `add.wit` and the WIT world to be `adder`. TinyGo will invoke `wasm-tools` to embed the WIT file to the module and componentize it. -```sh +```console $ tinygo build -target=wasip2 -o add.wasm --wit-package add.wit --wit-world adder main.go ``` We can confirm using the `wasm-tools component wit` command: -```sh +```console $ wasm-tools component wit add.wasm package root:component; @@ -171,7 +191,7 @@ To run our add component, we need to use a host program with a WASI runtime that just that. It calls the `add` function of a passed in component providing two operands. To use it, clone this repository and run the Rust program: -```sh +```console git clone git@github.com:bytecodealliance/component-docs.git cd component-docs/component-model/examples/example-host cargo run --release -- 1 2 /path/to/add.wasm From 94885cdff3b51d5a9873223c63a206f007f93363 Mon Sep 17 00:00:00 2001 From: "Jiaxiao Zhou (Mossaka)" Date: Thu, 7 Nov 2024 08:23:47 -0800 Subject: [PATCH 081/175] go: use go.bytecodealliance.org instead Signed-off-by: Jiaxiao Zhou (Mossaka) --- component-model/src/language-support/go.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/component-model/src/language-support/go.md b/component-model/src/language-support/go.md index aa69ad9..2686883 100644 --- a/component-model/src/language-support/go.md +++ b/component-model/src/language-support/go.md @@ -95,7 +95,8 @@ $ go mod init example.com Next, we can generate the bindings for the `add.wit` file: ```console -$ go run github.com/bytecodealliance/wasm-tools-go/cmd/wit-bindgen-go generate -o internal/ ./add.wit +$ go get go.bytecodealliance.org/cmd/wit-bindgen-go +$ go run go.bytecodealliance.org/cmd/wit-bindgen-go generate -o internal/ ./add.wit ``` The `internal` directory will contain the generated Go code for the `add.wit` file. From d38f950da6d75e1cd985676239c6edc115725017 Mon Sep 17 00:00:00 2001 From: "Jiaxiao Zhou (Mossaka)" Date: Thu, 7 Nov 2024 08:25:13 -0800 Subject: [PATCH 082/175] go: minor tweaks to the wording Signed-off-by: Jiaxiao Zhou (Mossaka) --- component-model/src/language-support/go.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/component-model/src/language-support/go.md b/component-model/src/language-support/go.md index 2686883..1341563 100644 --- a/component-model/src/language-support/go.md +++ b/component-model/src/language-support/go.md @@ -162,13 +162,14 @@ should be done before any other tasks. In this case, we are using it to export t We can build our component using TinyGo by specifying the wit-package to be `add.wit` and the WIT world to be `adder`. -TinyGo will invoke `wasm-tools` to embed the WIT file to the module and componentize it. +Under the hood, TinyGo invokes `wasm-tools` to embed the WIT file to the module and componentize it. ```console $ tinygo build -target=wasip2 -o add.wasm --wit-package add.wit --wit-world adder main.go ``` -We can confirm using the `wasm-tools component wit` command: +We now have an add component that satisfies our `adder` world, exporting the `add` function, which +we can confirm using the `wasm-tools component wit` command: ```console $ wasm-tools component wit add.wasm From 0c9134357565ea4950d6b554d51273b9dfc07350 Mon Sep 17 00:00:00 2001 From: "Jiaxiao Zhou (Mossaka)" Date: Thu, 7 Nov 2024 15:51:23 -0800 Subject: [PATCH 083/175] .github/workflows/mdbook: bump python version to 3.13 Signed-off-by: Jiaxiao Zhou (Mossaka) --- .github/workflows/mdbook.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/mdbook.yml b/.github/workflows/mdbook.yml index 1263f8c..85ca8da 100644 --- a/.github/workflows/mdbook.yml +++ b/.github/workflows/mdbook.yml @@ -46,9 +46,9 @@ jobs: - name: Build with mdBook run: mdbook build component-model - name: Setup Python - uses: actions/setup-python@v2 + uses: actions/setup-python@v5 with: - python-version: 3.10 + python-version: '3.13' - name: Generate sitemap run: | cd component-model From 32efb4236b53948fa0889c93d543335b5803ed8e Mon Sep 17 00:00:00 2001 From: "Jiaxiao Zhou (Mossaka)" Date: Thu, 14 Nov 2024 22:51:19 -0700 Subject: [PATCH 084/175] component-model/src/language-support/go: fix go docs * Delete a confusing where I described an alternative way to write the WIT package * Fixed the file name of the resolved WIT package Signed-off-by: Jiaxiao Zhou (Mossaka) --- component-model/src/language-support/go.md | 60 ++++------------------ 1 file changed, 11 insertions(+), 49 deletions(-) diff --git a/component-model/src/language-support/go.md b/component-model/src/language-support/go.md index 1341563..56f9cf7 100644 --- a/component-model/src/language-support/go.md +++ b/component-model/src/language-support/go.md @@ -20,7 +20,9 @@ Optional: Install the `wkg` CLI tool to resolve the imports in the WIT file. The ## 2. Determine which World the Component will Implement -The `wasip2` target of TinyGo assumes that the component is targeting `wasi:cli/command@0.2.0` world so it requires the imports of `wasi:cli/imports@0.2.0`. We need to include them in the `add.wit`. Tools like `wkg` can be handy to build a complete WIT package by resolving the imports. +The `wasip2` target of TinyGo assumes that the component is targeting `wasi:cli/command@0.2.0` world so it requires the imports of `wasi:cli/imports@0.2.0`. We need to include them in the `add.wit`. + +Tools like `wkg` can be convenient to build a complete WIT package by resolving the imports. ```wit # wit/add.wit @@ -34,55 +36,15 @@ world adder { Running the `wkg wit build` command will resolve the imports and generate the complete WIT file encoded as a Wasm component. ```console -wkg wit build +$ wkg wit build +WIT package written to docs:adder@0.1.0.wasm ``` -Or you can manually include the required imports in the `add.wit` file. Below is the minimal `add.wit` file that includes the required imports: - -```wit -package docs:adder@0.1.0; - -world adder { - import wasi:io/error@0.2.0; - import wasi:io/streams@0.2.0; - import wasi:cli/stdout@0.2.0; - import wasi:random/random@0.2.0; - - export add: func(x: s32, y: s32) -> s32; -} - -package wasi:io@0.2.0 { - interface error { - resource error; - } - interface streams { - use error.{error}; - - resource output-stream { - blocking-write-and-flush: func(contents: list) -> result<_, stream-error>; - } - - variant stream-error { - last-operation-failed(error), - closed, - } - } -} - -package wasi:cli@0.2.0 { - interface stdout { - use wasi:io/streams@0.2.0.{output-stream}; +The `docs:adder@0.1.0.wasm` file is a Wasm encoding of the WIT package. Next, we can generate the bindings for it: - get-stdout: func() -> output-stream; - } -} - - -package wasi:random@0.2.0 { - interface random { - get-random-u64: func() -> u64; - } -} +```console +$ go get go.bytecodealliance.org/cmd/wit-bindgen-go +$ go run go.bytecodealliance.org/cmd/wit-bindgen-go generate -o internal/ ./docs:adder@0.1.0.wasm ``` Now, create your Go project: @@ -96,10 +58,10 @@ Next, we can generate the bindings for the `add.wit` file: ```console $ go get go.bytecodealliance.org/cmd/wit-bindgen-go -$ go run go.bytecodealliance.org/cmd/wit-bindgen-go generate -o internal/ ./add.wit +$ go run go.bytecodealliance.org/cmd/wit-bindgen-go generate -o internal/ ./docs:adder@0.1.0.wasm ``` -The `internal` directory will contain the generated Go code for the `add.wit` file. +The `internal` directory will contain the generated Go code that WIT package. ```console $ tree internal From b229be7104a367166a9f3bcbdc6e171661146886 Mon Sep 17 00:00:00 2001 From: itowlson Date: Fri, 22 Nov 2024 14:46:30 +1300 Subject: [PATCH 085/175] Remove claim that composition requires interfaces not functions Signed-off-by: itowlson --- component-model/src/creating-and-consuming/running.md | 4 ++-- component-model/src/language-support/csharp.md | 7 +++---- component-model/src/language-support/python.md | 2 +- component-model/src/language-support/rust.md | 2 +- 4 files changed, 7 insertions(+), 8 deletions(-) diff --git a/component-model/src/creating-and-consuming/running.md b/component-model/src/creating-and-consuming/running.md index 63b6c71..a76398b 100644 --- a/component-model/src/creating-and-consuming/running.md +++ b/component-model/src/creating-and-consuming/running.md @@ -16,11 +16,11 @@ wasmtime run If you're writing a library-style component - that is, one that exports a custom API - then you can run it in `wasmtime` by writing a "command" component that imports and invokes your custom API. By [composing](./composing.md) the command and the library, you can exercise the library in `wasmtime`. -1. Write your library component. The component's world (`.wit` file) must export an interface. (Do not export functions directly, only interfaces.) See the [language support guide](../language-support.md) for how to implement an export. +1. Write your library component. The component's world (`.wit` file) must export an interface and/or one or more functions through which a consumer can call it. See the [language support guide](../language-support.md) for how to implement an export. 2. Build your library component to a `.wasm` file. -3. Write your command component. The component's world (`.wit` file) must import the interface exported from the library. Write the command to call the library's API. See the [language support guide](../language-support.md) for how to call an imported interface. +3. Write your command component. The component's world (`.wit` file) must import the interface or functions exported from the library. Write the command to call the library's API. See the [language support guide](../language-support.md) for how to call an imported interface. 4. Build your command component to a `.wasm` file. You will not be able to run this in `wasmtime` yet, as its imports are not yet satisfied. diff --git a/component-model/src/language-support/csharp.md b/component-model/src/language-support/csharp.md index 972e1b5..925022e 100644 --- a/component-model/src/language-support/csharp.md +++ b/component-model/src/language-support/csharp.md @@ -111,10 +111,9 @@ The component will be available at `bin/Debug/net9.0/wasi-wasm/native/adder.wasm ## Building a component that exports an interface -The previous example uses a WIT file that exports a function. However, to use your component from -another component, it must export an interface. That being said, you rarely find WIT that does not -contain an interface. (Most WITs you'll see in the wild do use interfaces; we've been simplifying by -exporting a function.) Let's expand our `example` world to export an interface rather than directly +The previous example uses a WIT file that exports a function. However, you'll often prefer to export an interface, +either to comply with an existing specification or to capture a set of functions and types that tend to go +together. Let's expand our `example` world to export an interface rather than directly export the function. We are also adding the `hostapp` world to our WIT file which we will implement in [the next section](#building-a-component-that-imports-an-interface) to demonstrate how to build a component that *imports* an interface. diff --git a/component-model/src/language-support/python.md b/component-model/src/language-support/python.md index b1652ba..a9a925f 100644 --- a/component-model/src/language-support/python.md +++ b/component-model/src/language-support/python.md @@ -62,7 +62,7 @@ See [`componentize-py`'s examples](https://github.com/bytecodealliance/component ### Building a Component that Exports an Interface -The [sample `add.wit` file](https://github.com/bytecodealliance/component-docs/tree/main/component-model/examples/example-host/add.wit) exports a function. However, to use your component from another component, it must export an interface. That being said, you rarely find WIT that does not contain an interface. (Most WITs you'll see in the wild do use interfaces; we've been simplifying by exporting a function.) Let's expand our example world to export an interface rather than directly export the function. +The [sample `add.wit` file](https://github.com/bytecodealliance/component-docs/tree/main/component-model/examples/example-host/add.wit) exports a function. However, you'll often prefer to export an interface, either to comply with an existing specification or to capture a set of functions and types that tend to go together. Let's expand our example world to export an interface rather than directly export the function. ```wit // add-interface.wit diff --git a/component-model/src/language-support/rust.md b/component-model/src/language-support/rust.md index a6aa26b..057c5f2 100644 --- a/component-model/src/language-support/rust.md +++ b/component-model/src/language-support/rust.md @@ -81,7 +81,7 @@ $ cargo run --release -- 1 2 ../add/target/wasm32-wasip1/release/add.wasm ## Exporting an interface with `cargo component` -The [sample `add.wit` file](https://github.com/bytecodealliance/component-docs/tree/main/component-model/examples/example-host/add.wit) exports a function. However, to use your component from another component, it must export an interface. This results in slightly fiddlier bindings. For example, to implement the following world: +The [sample `add.wit` file](https://github.com/bytecodealliance/component-docs/tree/main/component-model/examples/example-host/add.wit) exports a function. However, you'll often prefer to export an interface, either to comply with an existing specification or to capture a set of functions and types that tend to go together. For example, to implement the following world: ```wit package docs:adder@0.1.0; From b7b9bd8cc3f59c58fd87301fcf0ede9f4a58ff6b Mon Sep 17 00:00:00 2001 From: Victor Adossi Date: Mon, 25 Nov 2024 22:20:03 +0900 Subject: [PATCH 086/175] feat: add page to hold additional references Signed-off-by: Victor Adossi --- component-model/src/SUMMARY.md | 6 +++++- component-model/src/reference/useful-links.md | 17 +++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) create mode 100644 component-model/src/reference/useful-links.md diff --git a/component-model/src/SUMMARY.md b/component-model/src/SUMMARY.md index 0b0fa72..11b14f6 100644 --- a/component-model/src/SUMMARY.md +++ b/component-model/src/SUMMARY.md @@ -35,4 +35,8 @@ # Advanced Topics -- [Canonical ABI](./advanced/canonical-abi.md) \ No newline at end of file +- [Canonical ABI](./advanced/canonical-abi.md) + +# Reference + +- [Useful Links](./reference/useful-links.md) diff --git a/component-model/src/reference/useful-links.md b/component-model/src/reference/useful-links.md new file mode 100644 index 0000000..21fe263 --- /dev/null +++ b/component-model/src/reference/useful-links.md @@ -0,0 +1,17 @@ +# Useful links + +The following references are helpful in understanding the Component Model and related ecosystem/projects. + +- [`WebAssembly/component-model` GitHub Repository][wasm-cm-repo] + - [Component Model AST Explainer][ast-explainer] + - [Canonical ABI Explainer][canonical-abi] +- [WASI Preview 2][wasi-p2] +- [WebAssembly Composition tool (`wac`)][wac] +- [WebAssembly package tools (notably `wkg`)][wkg] + +[wasm-cm-repo]: https://github.com/WebAssembly/component-model +[wasi-p2]: https://github.com/WebAssembly/WASI/tree/main/wasip2 +[ast-explainer]: https://github.com/WebAssembly/component-model/blob/main/design/mvp/Explainer.md +[canonical-abi]: https://github.com/WebAssembly/component-model/blob/main/design/mvp/CanonicalABI.md +[wac]: https://github.com/bytecodealliance/wac +[wkg]: https://github.com/bytecodealliance/wasm-pkg-tools From 0fdc10a1f66dce1d4c199de8f8ae1013a5226ab5 Mon Sep 17 00:00:00 2001 From: "maple@max" Date: Fri, 29 Nov 2024 11:56:46 +0800 Subject: [PATCH 087/175] Renovate example-host * Bump dependencies * Update code to keep up with new dependencies * Add sync version of calling adder guest * Some refactoring --- .../examples/example-host/Cargo.lock | 1803 ++++++++++------- .../examples/example-host/Cargo.toml | 8 +- .../examples/example-host/src/add.rs | 58 - .../examples/example-host/src/async_add.rs | 33 + .../examples/example-host/src/main.rs | 11 +- .../examples/example-host/src/state.rs | 25 + .../examples/example-host/src/sync_add.rs | 29 + 7 files changed, 1116 insertions(+), 851 deletions(-) delete mode 100644 component-model/examples/example-host/src/add.rs create mode 100644 component-model/examples/example-host/src/async_add.rs create mode 100644 component-model/examples/example-host/src/state.rs create mode 100644 component-model/examples/example-host/src/sync_add.rs diff --git a/component-model/examples/example-host/Cargo.lock b/component-model/examples/example-host/Cargo.lock index d3568cf..8ddce8a 100644 --- a/component-model/examples/example-host/Cargo.lock +++ b/component-model/examples/example-host/Cargo.lock @@ -1,27 +1,27 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 +version = 4 [[package]] name = "addr2line" -version = "0.21.0" +version = "0.24.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" +checksum = "dfbe277e56a376000877090da837660b4427aad530e3028d44e0bffe4f89a1c1" dependencies = [ "gimli", ] [[package]] -name = "adler" -version = "1.0.2" +name = "adler2" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" +checksum = "512761e0bb2578dd7380c6baaa0f4ce03e84f95e960231d1dec8bf4d7d6e2627" [[package]] name = "ahash" -version = "0.8.6" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91429305e9f0a25f6205c5b8e0d2db09e0708a7a6df0f42212bb56c32c8ac97a" +checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" dependencies = [ "cfg-if", "once_cell", @@ -35,65 +35,75 @@ version = "0.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e9d4ee0d472d1cd2e28c97dfa124b3d8d992e10eb0a035f33f5d12e3a177ba3b" +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + [[package]] name = "anstream" -version = "0.6.4" +version = "0.6.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ab91ebe16eb252986481c5b62f6098f3b698a45e34b5b98200cf20dd2484a44" +checksum = "8acc5369981196006228e28809f761875c0327210a891e941f4c683b3a99529b" dependencies = [ "anstyle", "anstyle-parse", "anstyle-query", "anstyle-wincon", "colorchoice", + "is_terminal_polyfill", "utf8parse", ] [[package]] name = "anstyle" -version = "1.0.4" +version = "1.0.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7079075b41f533b8c61d2a4d073c4676e1f8b249ff94a393b0595db304e0dd87" +checksum = "55cc3b69f167a1ef2e161439aa98aed94e6028e5f9a59be9a6ffb47aef1651f9" [[package]] name = "anstyle-parse" -version = "0.2.2" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "317b9a89c1868f5ea6ff1d9539a69f45dffc21ce321ac1fd1160dfa48c8e2140" +checksum = "3b2d16507662817a6a20a9ea92df6652ee4f94f914589377d69f3b21bc5798a9" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.0.0" +version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ca11d4be1bab0c8bc8734a9aa7bf4ee8316d462a08c6ac5052f888fef5b494b" +checksum = "79947af37f4177cfead1110013d678905c37501914fba0efea834c3fe9a8d60c" dependencies = [ - "windows-sys 0.48.0", + "windows-sys 0.59.0", ] [[package]] name = "anstyle-wincon" -version = "3.0.1" +version = "3.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f0699d10d2f4d628a98ee7b57b289abbc98ff3bad977cb3152709d4bf2330628" +checksum = "2109dbce0e72be3ec00bed26e6a7479ca384ad226efdd66db8fa2e3a38c83125" dependencies = [ "anstyle", - "windows-sys 0.48.0", + "windows-sys 0.59.0", ] [[package]] name = "anyhow" -version = "1.0.75" +version = "1.0.93" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6" +checksum = "4c95c10ba0b00a02636238b814946408b1322d5ac4760326e6fb8ec956d85775" [[package]] name = "arbitrary" -version = "1.3.1" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2e1373abdaa212b704512ec2bd8b26bd0b7d5c3f70117411a5d9a451383c859" +checksum = "dde20b3d026af13f561bdd0f15edf01fc734f0dafcedbaf42bba506a9517f223" [[package]] name = "async-attributes" @@ -112,31 +122,42 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "81953c529336010edd6d8e358f886d9581267795c61b19475b71314bffa46d35" dependencies = [ "concurrent-queue", - "event-listener", + "event-listener 2.5.3", + "futures-core", +] + +[[package]] +name = "async-channel" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "89b47800b0be77592da0afd425cc03468052844aff33b84e33cc696f64e77b6a" +dependencies = [ + "concurrent-queue", + "event-listener-strategy", "futures-core", + "pin-project-lite", ] [[package]] name = "async-executor" -version = "1.6.0" +version = "1.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b0c4a4f319e45986f347ee47fef8bf5e81c9abc3f6f58dc2391439f30df65f0" +checksum = "30ca9a001c1e8ba5149f91a74362376cc6bc5b919d92d988668657bd570bdcec" dependencies = [ - "async-lock", "async-task", "concurrent-queue", - "fastrand 2.0.1", + "fastrand", "futures-lite", "slab", ] [[package]] name = "async-global-executor" -version = "2.3.1" +version = "2.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1b6f5d7df27bd294849f8eec66ecfc63d11814df7a4f5d74168a2394467b776" +checksum = "05b1b633a2115cd122d73b955eadd9916c18c8f510ec9cd1686404c60ad1c29c" dependencies = [ - "async-channel", + "async-channel 2.3.1", "async-executor", "async-io", "async-lock", @@ -147,41 +168,42 @@ dependencies = [ [[package]] name = "async-io" -version = "1.13.0" +version = "2.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fc5b45d93ef0529756f812ca52e44c221b35341892d3dcc34132ac02f3dd2af" +checksum = "43a2b323ccce0a1d90b449fd71f2a06ca7faa7c54c2751f06c9bd851fc061059" dependencies = [ "async-lock", - "autocfg", "cfg-if", "concurrent-queue", + "futures-io", "futures-lite", - "log", "parking", "polling", - "rustix 0.37.27", + "rustix", "slab", - "socket2 0.4.10", - "waker-fn", + "tracing", + "windows-sys 0.59.0", ] [[package]] name = "async-lock" -version = "2.8.0" +version = "3.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "287272293e9d8c41773cec55e365490fe034813a2f172f502d6ddcf75b2f582b" +checksum = "ff6e472cdea888a4bd64f342f09b3f50e1886d32afe8df3d663c01140b811b18" dependencies = [ - "event-listener", + "event-listener 5.3.1", + "event-listener-strategy", + "pin-project-lite", ] [[package]] name = "async-std" -version = "1.12.0" +version = "1.13.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62565bb4402e926b29953c785397c6dc0391b7b446e45008b0049eb43cec6f5d" +checksum = "c634475f29802fde2b8f0b505b1bd00dfe4df7d4a000f0b36f7671197d5c3615" dependencies = [ "async-attributes", - "async-channel", + "async-channel 1.9.0", "async-global-executor", "async-io", "async-lock", @@ -203,19 +225,19 @@ dependencies = [ [[package]] name = "async-task" -version = "4.5.0" +version = "4.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4eb2cdb97421e01129ccb49169d8279ed21e829929144f4a22a6e54ac549ca1" +checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" [[package]] name = "async-trait" -version = "0.1.74" +version = "0.1.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a66537f1bb974b254c98ed142ff995236e81b9d0fe4db0575f46612cb15eb0f9" +checksum = "721cae7de5c34fbb2acd27e21e6d2cf7b886dce0c27388d46c4e6c47ea4318dd" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.89", ] [[package]] @@ -226,51 +248,36 @@ checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" [[package]] name = "autocfg" -version = "1.1.0" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" +checksum = "ace50bade8e6234aa140d9a2f552bbee1db4d353f69b8217bc503490fc1a9f26" [[package]] name = "backtrace" -version = "0.3.69" +version = "0.3.74" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" +checksum = "8d82cb332cdfaed17ae235a638438ac4d4839913cc2af585c3c6746e8f8bee1a" dependencies = [ "addr2line", - "cc", "cfg-if", "libc", "miniz_oxide", "object", "rustc-demangle", + "windows-targets", ] [[package]] name = "base64" -version = "0.21.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9" - -[[package]] -name = "bincode" -version = "1.3.3" +version = "0.21.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" -dependencies = [ - "serde", -] - -[[package]] -name = "bitflags" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" +checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" [[package]] name = "bitflags" -version = "2.4.1" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07" +checksum = "b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de" [[package]] name = "block-buffer" @@ -283,25 +290,22 @@ dependencies = [ [[package]] name = "blocking" -version = "1.4.1" +version = "1.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c36a4d0d48574b3dd360b4b7d95cc651d2b6557b6402848a27d4b228a473e2a" +checksum = "703f41c54fc768e63e091340b424302bb1c29ef4aa0c7f10fe849dfb114d29ea" dependencies = [ - "async-channel", - "async-lock", + "async-channel 2.3.1", "async-task", - "fastrand 2.0.1", "futures-io", "futures-lite", "piper", - "tracing", ] [[package]] name = "bumpalo" -version = "3.14.0" +version = "3.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" +checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" [[package]] name = "byteorder" @@ -311,56 +315,56 @@ checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" [[package]] name = "bytes" -version = "1.5.0" +version = "1.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" +checksum = "325918d6fe32f23b19878fe4b34794ae41fc19ddbe53b10571a4874d44ffd39b" [[package]] name = "cap-fs-ext" -version = "2.0.0" +version = "3.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b779b2d0a001c125b4584ad586268fb4b92d957bff8d26d7fe0dd78283faa814" +checksum = "e16619ada836f12897a72011fe99b03f0025b87a8dbbea4f3c9f89b458a23bf3" dependencies = [ "cap-primitives", "cap-std", - "io-lifetimes 2.0.2", - "windows-sys 0.48.0", + "io-lifetimes", + "windows-sys 0.52.0", ] [[package]] name = "cap-net-ext" -version = "2.0.0" +version = "3.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ffc30dee200c20b4dcb80572226f42658e1d9c4b668656d7cc59c33d50e396e" +checksum = "710b0eb776410a22c89a98f2f80b2187c2ac3a8206b99f3412332e63c9b09de0" dependencies = [ "cap-primitives", "cap-std", - "rustix 0.38.21", + "rustix", "smallvec", ] [[package]] name = "cap-primitives" -version = "2.0.0" +version = "3.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bf30c373a3bee22c292b1b6a7a26736a38376840f1af3d2d806455edf8c3899" +checksum = "82fa6c3f9773feab88d844aa50035a33fb6e7e7426105d2f4bb7aadc42a5f89a" dependencies = [ "ambient-authority", "fs-set-times", "io-extras", - "io-lifetimes 2.0.2", + "io-lifetimes", "ipnet", "maybe-owned", - "rustix 0.38.21", - "windows-sys 0.48.0", + "rustix", + "windows-sys 0.52.0", "winx", ] [[package]] name = "cap-rand" -version = "2.0.0" +version = "3.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "577de6cff7c2a47d6b13efe5dd28bf116bd7f8f7db164ea95b7cc2640711f522" +checksum = "53774d49369892b70184f8312e50c1b87edccb376691de4485b0ff554b27c36c" dependencies = [ "ambient-authority", "rand", @@ -368,36 +372,39 @@ dependencies = [ [[package]] name = "cap-std" -version = "2.0.0" +version = "3.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84bade423fa6403efeebeafe568fdb230e8c590a275fba2ba978dd112efcf6e9" +checksum = "7f71b70818556b4fe2a10c7c30baac3f5f45e973f49fc2673d7c75c39d0baf5b" dependencies = [ "cap-primitives", "io-extras", - "io-lifetimes 2.0.2", - "rustix 0.38.21", + "io-lifetimes", + "rustix", ] [[package]] name = "cap-time-ext" -version = "2.0.0" +version = "3.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8f52b3c8f4abfe3252fd0a071f3004aaa3b18936ec97bdbd8763ce03aff6247" +checksum = "69dd48afa2363f746c93f961c211f6f099fb594a3446b8097bc5f79db51b6816" dependencies = [ + "ambient-authority", "cap-primitives", + "iana-time-zone", "once_cell", - "rustix 0.38.21", + "rustix", "winx", ] [[package]] name = "cc" -version = "1.0.83" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" +checksum = "fd9de9f2205d5ef3fd67e685b0df337994ddd4495e2a28d185500d0e1edfea47" dependencies = [ "jobserver", "libc", + "shlex", ] [[package]] @@ -408,9 +415,9 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" [[package]] name = "clap" -version = "4.4.7" +version = "4.5.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac495e00dcec98c83465d5ad66c5c4fabd652fd6686e7c6269b117e729a6f17b" +checksum = "fb3b4b9e5a7c7514dfa52869339ee98b3156b0bfb4e8a77c4ff4babb64b1604f" dependencies = [ "clap_builder", "clap_derive", @@ -418,9 +425,9 @@ dependencies = [ [[package]] name = "clap_builder" -version = "4.4.7" +version = "4.5.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c77ed9a32a62e6ca27175d00d29d05ca32e396ea1eb5fb01d8256b669cec7663" +checksum = "b17a95aa67cc7b5ebd32aa5370189aa0d79069ef1c64ce893bd30fb24bff20ec" dependencies = [ "anstream", "anstyle", @@ -430,124 +437,150 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.4.7" +version = "4.5.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf9804afaaf59a91e75b022a30fb7229a7901f60c755489cc61c9b423b836442" +checksum = "4ac6a0c7b1a9e9a5186361f67dfa1b88213572f427fb9ab038efb2bd8c582dab" dependencies = [ "heck", "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.89", ] [[package]] name = "clap_lex" -version = "0.6.0" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "afb84c814227b90d6895e01398aee0d8033c00e7466aca416fb6a8e0eb19d8a7" + +[[package]] +name = "cobs" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "702fc72eb24e5a1e48ce58027a675bc24edd52096d5397d4aea7c6dd9eca0bd1" +checksum = "67ba02a97a2bd10f4b59b25c7973101c79642302776489e030cd13cdab09ed15" [[package]] name = "colorchoice" -version = "1.0.0" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" +checksum = "5b63caa9aa9397e2d9480a9b13673856c78d8ac123288526c37d7839f2a86990" [[package]] name = "concurrent-queue" -version = "2.3.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f057a694a54f12365049b0958a1685bb52d567f5593b355fbf685838e873d400" +checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" dependencies = [ "crossbeam-utils", ] +[[package]] +name = "core-foundation-sys" +version = "0.8.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" + [[package]] name = "cpp_demangle" -version = "0.3.5" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eeaa953eaad386a53111e47172c2fedba671e5684c8dd601a5f474f4f118710f" +checksum = "96e58d342ad113c2b878f16d5d034c03be492ae460cdbc02b7f0f2284d310c7d" dependencies = [ "cfg-if", ] [[package]] name = "cpufeatures" -version = "0.2.11" +version = "0.2.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce420fe07aecd3e67c5f910618fe65e94158f6dcc0adf44e00d69ce2bdfe0fd0" +checksum = "16b80225097f2e5ae4e7179dd2266824648f3e2f49d9134d584b76389d31c4c3" dependencies = [ "libc", ] [[package]] name = "cranelift-bforest" -version = "0.105.3" +version = "0.114.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "16d5521e2abca66bbb1ddeecbb6f6965c79160352ae1579b39f8c86183895c24" +checksum = "2ba4f80548f22dc9c43911907b5e322c5555544ee85f785115701e6a28c9abe1" dependencies = [ "cranelift-entity", ] +[[package]] +name = "cranelift-bitset" +version = "0.114.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "005884e3649c3e5ff2dc79e8a94b138f11569cc08a91244a292714d2a86e9156" +dependencies = [ + "serde", + "serde_derive", +] + [[package]] name = "cranelift-codegen" -version = "0.105.3" +version = "0.114.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef40a4338a47506e832ac3e53f7f1375bc59351f049a8379ff736dd02565bd95" +checksum = "fe4036255ec33ce9a37495dfbcfc4e1118fd34e693eff9a1e106336b7cd16a9b" dependencies = [ "bumpalo", "cranelift-bforest", + "cranelift-bitset", "cranelift-codegen-meta", "cranelift-codegen-shared", "cranelift-control", "cranelift-entity", "cranelift-isle", "gimli", - "hashbrown 0.14.2", + "hashbrown 0.14.5", "log", "regalloc2", + "rustc-hash", + "serde", "smallvec", "target-lexicon", ] [[package]] name = "cranelift-codegen-meta" -version = "0.105.3" +version = "0.114.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d24cd5d85985c070f73dfca07521d09086362d1590105ba44b0932bf33513b61" +checksum = "f7ca74f4b68319da11d39e894437cb6e20ec7c2e11fbbda823c3bf207beedff7" dependencies = [ "cranelift-codegen-shared", ] [[package]] name = "cranelift-codegen-shared" -version = "0.105.3" +version = "0.114.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0584c4363e3aa0a3c7cb98a778fbd5326a3709f117849a727da081d4051726c" +checksum = "897e54f433a0269c4187871aa06d452214d5515d228d5bdc22219585e9eef895" [[package]] name = "cranelift-control" -version = "0.105.3" +version = "0.114.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f25ecede098c6553fdba362a8e4c9ecb8d40138363bff47f9712db75be7f0571" +checksum = "29cb4018f5bf59fb53f515fa9d80e6f8c5ce19f198dc538984ebd23ecf8965ec" dependencies = [ "arbitrary", ] [[package]] name = "cranelift-entity" -version = "0.105.3" +version = "0.114.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ea081a42f25dc4c5b248b87efdd87dcd3842a1050a37524ec5391e6172058cb" +checksum = "305399fd781a2953ac78c1396f02ff53144f39c33eb7fc7789cf4e8936d13a96" dependencies = [ + "cranelift-bitset", "serde", "serde_derive", ] [[package]] name = "cranelift-frontend" -version = "0.105.3" +version = "0.114.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9796e712f5af797e247784f7518e6b0a83a8907d73d51526982d86ecb3a58b68" +checksum = "9230b460a128d53653456137751d27baf567947a3ab8c0c4d6e31fd08036d81e" dependencies = [ "cranelift-codegen", "log", @@ -557,78 +590,54 @@ dependencies = [ [[package]] name = "cranelift-isle" -version = "0.105.3" +version = "0.114.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4a66ccad5782f15c80e9dd5af0df4acfe6e3eee98e8f7354a2e5c8ec3104bdd" +checksum = "b961e24ae3ec9813a24a15ae64bbd2a42e4de4d79a7f3225a412e3b94e78d1c8" [[package]] name = "cranelift-native" -version = "0.105.3" +version = "0.114.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "285e80df1d9b79ded9775b285df68b920a277b84f88a7228d2f5bc31fcdc58eb" +checksum = "4d5bd76df6c9151188dfa428c863b33da5b34561b67f43c0cf3f24a794f9fa1f" dependencies = [ "cranelift-codegen", "libc", "target-lexicon", ] -[[package]] -name = "cranelift-wasm" -version = "0.105.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4135b0ab01fd16aa8f8821196e9e2fe15953552ccaef8ba5153be0ced04ef757" -dependencies = [ - "cranelift-codegen", - "cranelift-entity", - "cranelift-frontend", - "itertools", - "log", - "smallvec", - "wasmparser", - "wasmtime-types", -] - [[package]] name = "crc32fast" -version = "1.3.2" +version = "1.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" +checksum = "a97769d94ddab943e4510d138150169a2758b5ef3eb191a9ee688de3e23ef7b3" dependencies = [ "cfg-if", ] [[package]] name = "crossbeam-deque" -version = "0.8.3" +version = "0.8.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce6fd6f855243022dcecf8702fef0c297d4338e226845fe067f6341ad9fa0cef" +checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" dependencies = [ - "cfg-if", "crossbeam-epoch", "crossbeam-utils", ] [[package]] name = "crossbeam-epoch" -version = "0.9.15" +version = "0.9.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae211234986c545741a7dc064309f67ee1e5ad243d0e48335adc0484d960bcc7" +checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" dependencies = [ - "autocfg", - "cfg-if", "crossbeam-utils", - "memoffset", - "scopeguard", ] [[package]] name = "crossbeam-utils" -version = "0.8.16" +version = "0.8.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a22b2d63d4d1dc0b7f1b6b2747dd0088008a9be28b6ddf0b1e7d335e3037294" -dependencies = [ - "cfg-if", -] +checksum = "22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80" [[package]] name = "crypto-common" @@ -700,17 +709,40 @@ dependencies = [ "winapi", ] +[[package]] +name = "displaydoc" +version = "0.2.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.89", +] + [[package]] name = "either" -version = "1.9.0" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" + +[[package]] +name = "embedded-io" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced" + +[[package]] +name = "embedded-io" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" +checksum = "edd0f118536f44f5ccd48bcb8b111bdc3de888b58c74639dfb034a357d0f206d" [[package]] name = "encoding_rs" -version = "0.8.33" +version = "0.8.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1" +checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" dependencies = [ "cfg-if", ] @@ -723,12 +755,12 @@ checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" [[package]] name = "errno" -version = "0.3.5" +version = "0.3.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3e13f66a2f95e32a39eaa81f6b95d42878ca0e1db0c7543723dfe12557e860" +checksum = "33d852cb9b869c2a9b3df2f71a3074817f01e1844f839a144f5fcef059a4eb5d" dependencies = [ "libc", - "windows-sys 0.48.0", + "windows-sys 0.59.0", ] [[package]] @@ -737,6 +769,27 @@ version = "2.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0206175f82b8d6bf6652ff7d71a1e27fd2e4efde587fd368662814d6ec1d9ce0" +[[package]] +name = "event-listener" +version = "5.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6032be9bd27023a771701cc49f9f053c751055f71efb2e0ae5c15809093675ba" +dependencies = [ + "concurrent-queue", + "parking", + "pin-project-lite", +] + +[[package]] +name = "event-listener-strategy" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f214dc438f977e6d4e3500aaa277f5ad94ca83fbbd9b1a15713ce2344ccc5a1" +dependencies = [ + "event-listener 5.3.1", + "pin-project-lite", +] + [[package]] name = "example-host" version = "0.1.0" @@ -756,55 +809,52 @@ checksum = "2acce4a10f12dc2fb14a218589d4f1f62ef011b2d0cc4b3cb1bba8e94da14649" [[package]] name = "fastrand" -version = "1.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e51093e27b0797c359783294ca4f0a911c270184cb10f85783b118614a1501be" -dependencies = [ - "instant", -] - -[[package]] -name = "fastrand" -version = "2.0.1" +version = "2.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" +checksum = "486f806e73c5707928240ddc295403b1b93c96a02038563881c4a2fd84b81ac4" [[package]] name = "fd-lock" -version = "4.0.0" +version = "4.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b0377f1edc77dbd1118507bc7a66e4ab64d2b90c66f90726dc801e73a8c68f9" +checksum = "7e5768da2206272c81ef0b5e951a41862938a6070da63bcea197899942d3b947" dependencies = [ "cfg-if", - "rustix 0.38.21", - "windows-sys 0.48.0", + "rustix", + "windows-sys 0.52.0", ] +[[package]] +name = "foldhash" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f81ec6369c545a7d40e4589b5597581fa1c441fe1cce96dd1de43159910a36a2" + [[package]] name = "form_urlencoded" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" dependencies = [ "percent-encoding", ] [[package]] name = "fs-set-times" -version = "0.20.0" +version = "0.20.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd738b84894214045e8414eaded76359b4a5773f0a0a56b16575110739cdcf39" +checksum = "033b337d725b97690d86893f9de22b67b80dcc4e9ad815f348254c38119db8fb" dependencies = [ - "io-lifetimes 2.0.2", - "rustix 0.38.21", - "windows-sys 0.48.0", + "io-lifetimes", + "rustix", + "windows-sys 0.52.0", ] [[package]] name = "futures" -version = "0.3.29" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da0290714b38af9b4a7b094b8a37086d1b4e61f2df9122c3cad2577669145335" +checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" dependencies = [ "futures-channel", "futures-core", @@ -816,9 +866,9 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.29" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff4dd66668b557604244583e3e1e1eada8c5c2e96a6d0d6653ede395b78bbacb" +checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" dependencies = [ "futures-core", "futures-sink", @@ -826,48 +876,46 @@ dependencies = [ [[package]] name = "futures-core" -version = "0.3.29" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb1d22c66e66d9d72e1758f0bd7d4fd0bee04cad842ee34587d68c07e45d088c" +checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" [[package]] name = "futures-io" -version = "0.3.29" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bf34a163b5c4c52d0478a4d757da8fb65cabef42ba90515efee0f6f9fa45aaa" +checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" [[package]] name = "futures-lite" -version = "1.13.0" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49a9d51ce47660b1e808d3c990b4709f2f415d928835a17dfd16991515c46bce" +checksum = "cef40d21ae2c515b51041df9ed313ed21e572df340ea58a922a0aefe7e8891a1" dependencies = [ - "fastrand 1.9.0", + "fastrand", "futures-core", "futures-io", - "memchr", "parking", "pin-project-lite", - "waker-fn", ] [[package]] name = "futures-sink" -version = "0.3.29" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e36d3378ee38c2a36ad710c5d30c2911d752cb941c00c72dbabfb786a7970817" +checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" [[package]] name = "futures-task" -version = "0.3.29" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "efd193069b0ddadc69c46389b740bbccdd97203899b48d09c5f7969591d6bae2" +checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" [[package]] name = "futures-util" -version = "0.3.29" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a19526d624e703a3179b3d322efec918b6246ea0fa51d41124525f00f1cc8104" +checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" dependencies = [ "futures-core", "futures-sink", @@ -891,7 +939,7 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "27d12c0aed7f1e24276a241aadc4cb8ea9f83000f34bc062b7cc2d51e3b0fabd" dependencies = [ - "bitflags 2.4.1", + "bitflags", "debugid", "fxhash", "serde", @@ -910,9 +958,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.10" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427" +checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" dependencies = [ "cfg-if", "libc", @@ -921,9 +969,9 @@ dependencies = [ [[package]] name = "gimli" -version = "0.28.0" +version = "0.31.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6fb8d784f27acf97159b40fc4db5ecd8aa23b9ad5ef69cdd136d3bc80665f0c0" +checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" dependencies = [ "fallible-iterator", "indexmap", @@ -932,9 +980,9 @@ dependencies = [ [[package]] name = "gloo-timers" -version = "0.2.6" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b995a66bb87bebce9a0f4a95aed01daca4872c050bfcb21653361c03bc35e5c" +checksum = "bbb143cf96099802033e0d4f4963b19fd2e0b728bcf076cd9cf7f6634f092994" dependencies = [ "futures-channel", "futures-core", @@ -944,33 +992,181 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.13.2" +version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" dependencies = [ "ahash", + "serde", ] [[package]] name = "hashbrown" -version = "0.14.2" +version = "0.15.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f93e7192158dbcda357bdec5fb5788eebf8bbac027f3f33e719d29135ae84156" +checksum = "bf151400ff0baff5465007dd2f3e717f3fe502074ca563069ce3a6629d07b289" dependencies = [ - "ahash", + "foldhash", ] [[package]] name = "heck" -version = "0.4.1" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" + +[[package]] +name = "hermit-abi" +version = "0.3.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" +checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" [[package]] name = "hermit-abi" -version = "0.3.3" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbf6a919d6cf397374f7dfeeea91d974c7c0a7221d0d0f4f20d859d329e53fcc" + +[[package]] +name = "iana-time-zone" +version = "0.1.61" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "235e081f3925a06703c2d0117ea8b91f042756fd6e7a6e5d901e8ca1a996b220" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "wasm-bindgen", + "windows-core", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" +dependencies = [ + "cc", +] + +[[package]] +name = "icu_collections" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db2fa452206ebee18c4b5c2274dbf1de17008e874b4dc4f0aea9d01ca79e4526" +dependencies = [ + "displaydoc", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_locid" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13acbb8371917fc971be86fc8057c41a64b521c184808a698c02acc242dbf637" +dependencies = [ + "displaydoc", + "litemap", + "tinystr", + "writeable", + "zerovec", +] + +[[package]] +name = "icu_locid_transform" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01d11ac35de8e40fdeda00d9e1e9d92525f3f9d887cdd7aa81d727596788b54e" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_locid_transform_data", + "icu_provider", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_locid_transform_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdc8ff3388f852bede6b579ad4e978ab004f139284d7b28715f773507b946f6e" + +[[package]] +name = "icu_normalizer" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19ce3e0da2ec68599d193c93d088142efd7f9c5d6fc9b803774855747dc6a84f" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_normalizer_data", + "icu_properties", + "icu_provider", + "smallvec", + "utf16_iter", + "utf8_iter", + "write16", + "zerovec", +] + +[[package]] +name = "icu_normalizer_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f8cafbf7aa791e9b22bec55a167906f9e1215fd475cd22adfcf660e03e989516" + +[[package]] +name = "icu_properties" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "93d6020766cfc6302c15dbbc9c8778c37e62c14427cb7f6e601d849e092aeef5" +dependencies = [ + "displaydoc", + "icu_collections", + "icu_locid_transform", + "icu_properties_data", + "icu_provider", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_properties_data" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "67a8effbc3dd3e4ba1afa8ad918d5684b8868b3b26500753effea8d2eed19569" + +[[package]] +name = "icu_provider" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ed421c8a8ef78d3e2dbc98a973be2f3770cb42b606e3ab18d6237c4dfde68d9" +dependencies = [ + "displaydoc", + "icu_locid", + "icu_provider_macros", + "stable_deref_trait", + "tinystr", + "writeable", + "yoke", + "zerofrom", + "zerovec", +] + +[[package]] +name = "icu_provider_macros" +version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d77f7ec81a6d05a3abb01ab6eb7590f6083d08449fe5a1c8b1e620283546ccb7" +checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.89", +] [[package]] name = "id-arena" @@ -980,81 +1176,78 @@ checksum = "25a2bc672d1148e28034f176e01fffebb08b35768468cc954630da77a1449005" [[package]] name = "idna" -version = "0.4.0" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c" +checksum = "686f825264d630750a544639377bae737628043f20d38bbc029e8f29ea968a7e" dependencies = [ - "unicode-bidi", - "unicode-normalization", + "idna_adapter", + "smallvec", + "utf8_iter", ] [[package]] -name = "indexmap" -version = "2.0.2" +name = "idna_adapter" +version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8adf3ddd720272c6ea8bf59463c04e0f93d0bbf7c5439b691bca2987e0270897" +checksum = "daca1df1c957320b2cf139ac61e7bd64fed304c5040df000a745aa1de3b4ef71" dependencies = [ - "equivalent", - "hashbrown 0.14.2", - "serde", + "icu_normalizer", + "icu_properties", ] [[package]] -name = "instant" -version = "0.1.12" +name = "indexmap" +version = "2.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" +checksum = "707907fe3c25f5424cce2cb7e1cbcafee6bdbe735ca90ef77c29e84591e5b9da" dependencies = [ - "cfg-if", + "equivalent", + "hashbrown 0.15.2", + "serde", ] [[package]] name = "io-extras" -version = "0.18.0" +version = "0.18.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9d3c230ee517ee76b1cc593b52939ff68deda3fae9e41eca426c6b4993df51c4" +checksum = "7d45fd7584f9b67ac37bc041212d06bfac0700b36456b05890d36a3b626260eb" dependencies = [ - "io-lifetimes 2.0.2", - "windows-sys 0.48.0", + "io-lifetimes", + "windows-sys 0.52.0", ] [[package]] name = "io-lifetimes" -version = "1.0.11" +version = "2.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eae7b9aee968036d54dce06cebaefd919e4472e753296daccd6d344e3e2df0c2" -dependencies = [ - "hermit-abi", - "libc", - "windows-sys 0.48.0", -] +checksum = "5a611371471e98973dbcab4e0ec66c31a10bc356eeb4d54a0e05eac8158fe38c" [[package]] -name = "io-lifetimes" -version = "2.0.2" +name = "ipnet" +version = "2.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bffb4def18c48926ccac55c1223e02865ce1a821751a95920448662696e7472c" +checksum = "ddc24109865250148c2e0f3d25d4f0f479571723792d3802153c60922a4fb708" [[package]] -name = "ipnet" -version = "2.9.0" +name = "is_terminal_polyfill" +version = "1.70.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" +checksum = "7943c866cc5cd64cbc25b2e01621d07fa8eb2a1a23160ee81ce38704e97b8ecf" [[package]] name = "itertools" -version = "0.10.5" +version = "0.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" dependencies = [ "either", ] [[package]] name = "itoa" -version = "1.0.9" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" +checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674" [[package]] name = "ittapi" @@ -1078,18 +1271,18 @@ dependencies = [ [[package]] name = "jobserver" -version = "0.1.27" +version = "0.1.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8c37f63953c4c63420ed5fd3d6d398c719489b9f872b9fa683262f8edd363c7d" +checksum = "48d1dbcbbeb6a7fec7e059840aa538bd62aaccf972c7346c4d9d2059312853d0" dependencies = [ "libc", ] [[package]] name = "js-sys" -version = "0.3.64" +version = "0.3.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c5f195fe497f702db0f318b07fdd68edb16955aed830df8363d837542f8f935a" +checksum = "6a88f1bda2bd75b0452a14784937d796722fdebfe50df998aeb3f0b7603019a9" dependencies = [ "wasm-bindgen", ] @@ -1111,36 +1304,52 @@ checksum = "884e2677b40cc8c339eaefcb701c32ef1fd2493d71118dc0ca4b6a736c93bd67" [[package]] name = "libc" -version = "0.2.149" +version = "0.2.166" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a08173bc88b7955d1b3145aa561539096c421ac8debde8cbc3612ec635fee29b" +checksum = "c2ccc108bbc0b1331bd061864e7cd823c0cab660bbe6970e66e2c0614decde36" [[package]] -name = "linux-raw-sys" -version = "0.3.8" +name = "libm" +version = "0.2.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef53942eb7bf7ff43a617b3e2c1c4a5ecf5944a7c1bc12d7ee39bbb15e5c1519" +checksum = "8355be11b20d696c8f18f6cc018c4e372165b1fa8126cef092399c9951984ffa" [[package]] -name = "linux-raw-sys" -version = "0.4.10" +name = "libredox" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da2479e8c062e40bf0066ffa0bc823de0a9368974af99c9f6df941d2c231e03f" +checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" +dependencies = [ + "bitflags", + "libc", +] + +[[package]] +name = "linux-raw-sys" +version = "0.4.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89" + +[[package]] +name = "litemap" +version = "0.7.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ee93343901ab17bd981295f2cf0026d4ad018c7c31ba84549a4ddbb47a45104" [[package]] name = "log" -version = "0.4.20" +version = "0.4.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" +checksum = "a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24" dependencies = [ "value-bag", ] [[package]] -name = "mach" -version = "0.3.2" +name = "mach2" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b823e83b2affd8f40a9ee8c29dbc56404c1e34cd2710921f2801e2cf29527afa" +checksum = "19b955cdeb2a02b9117f121ce63aa52d08ade45de53e48fe6a38b39c10f6f709" dependencies = [ "libc", ] @@ -1153,9 +1362,9 @@ checksum = "4facc753ae494aeb6e3c22f839b158aebd4f9270f55cd3c79906c45476c47ab4" [[package]] name = "memchr" -version = "2.6.4" +version = "2.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167" +checksum = "78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3" [[package]] name = "memfd" @@ -1163,89 +1372,71 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b2cffa4ad52c6f791f4f8b15f0c05f9824b2ced1160e88cc393d64fff9a8ac64" dependencies = [ - "rustix 0.38.21", -] - -[[package]] -name = "memoffset" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" -dependencies = [ - "autocfg", + "rustix", ] [[package]] name = "miniz_oxide" -version = "0.7.1" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" +checksum = "e2d80299ef12ff69b16a84bb182e3b9df68b5a91574d3d4fa6e41b65deec4df1" dependencies = [ - "adler", + "adler2", ] [[package]] name = "mio" -version = "0.8.9" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3dce281c5e46beae905d4de1870d8b1509a9142b62eedf18b443b011ca8343d0" +checksum = "80e04d1dcff3aae0704555fe5fee3bcfaf3d1fdf8a7e521d5b9d2b42acb52cec" dependencies = [ + "hermit-abi 0.3.9", "libc", "wasi", - "windows-sys 0.48.0", -] - -[[package]] -name = "num_cpus" -version = "1.16.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" -dependencies = [ - "hermit-abi", - "libc", + "windows-sys 0.52.0", ] [[package]] name = "object" -version = "0.32.1" +version = "0.36.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9cf5f9dd3933bd50a9e1f149ec995f39ae2c496d31fd772c1fd45ebc27e902b0" +checksum = "aedf0a2d09c573ed1d8d85b30c119153926a2b36dce0ab28322c09a117a4683e" dependencies = [ "crc32fast", - "hashbrown 0.14.2", + "hashbrown 0.15.2", "indexmap", "memchr", ] [[package]] name = "once_cell" -version = "1.18.0" +version = "1.20.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" +checksum = "1261fe7e33c73b354eab43b1273a57c8f967d0391e80353e51f764ac02cf6775" [[package]] name = "parking" -version = "2.2.0" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bb813b8af86854136c6922af0598d719255ecb2179515e6e7730d468f05c9cae" +checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" [[package]] name = "paste" -version = "1.0.14" +version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" +checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" [[package]] name = "percent-encoding" -version = "2.3.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pin-project-lite" -version = "0.2.13" +version = "0.2.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" +checksum = "915a1e146535de9163f3987b8944ed8cf49a18bb0056bcebcdcece385cece4ff" [[package]] name = "pin-utils" @@ -1255,66 +1446,91 @@ checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" [[package]] name = "piper" -version = "0.2.1" +version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "668d31b1c4eba19242f2088b2bf3316b82ca31082a8335764db4e083db7485d4" +checksum = "96c8c490f422ef9a4efd2cb5b42b76c8613d7e7dfc1caf667b8a3350a5acc066" dependencies = [ "atomic-waker", - "fastrand 2.0.1", + "fastrand", "futures-io", ] [[package]] name = "pkg-config" -version = "0.3.27" +version = "0.3.31" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26072860ba924cbfa98ea39c8c19b4dd6a4a25423dbdf219c1eca91aa0cf6964" +checksum = "953ec861398dccce10c670dfeaf3ec4911ca479e9c02154b3a215178c5f566f2" [[package]] name = "polling" -version = "2.8.0" +version = "3.7.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4b2d323e8ca7996b3e23126511a523f7e62924d93ecd5ae73b333815b0eb3dce" +checksum = "a604568c3202727d1507653cb121dbd627a58684eb09a820fd746bee38b4442f" dependencies = [ - "autocfg", - "bitflags 1.3.2", "cfg-if", "concurrent-queue", - "libc", - "log", + "hermit-abi 0.4.0", "pin-project-lite", - "windows-sys 0.48.0", + "rustix", + "tracing", + "windows-sys 0.59.0", +] + +[[package]] +name = "postcard" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f63d01def49fc815900a83e7a4a5083d2abc81b7ddd569a3fa0477778ae9b3ec" +dependencies = [ + "cobs", + "embedded-io 0.4.0", + "embedded-io 0.6.1", + "serde", ] [[package]] name = "ppv-lite86" -version = "0.2.17" +version = "0.2.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" +checksum = "77957b295656769bb8ad2b6a6b09d897d94f05c41b069aede1fcdaa675eaea04" +dependencies = [ + "zerocopy", +] [[package]] name = "proc-macro2" -version = "1.0.69" +version = "1.0.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "134c189feb4956b20f6f547d2cf727d4c0fe06722b20a0eec87ed445a97f92da" +checksum = "37d3544b3f2748c54e147655edb5025752e2303145b5aefb3c3ea2c78b973bb0" dependencies = [ "unicode-ident", ] [[package]] name = "psm" -version = "0.1.21" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5787f7cda34e3033a72192c018bc5883100330f362ef279a8cbccfce8bb4e874" +checksum = "200b9ff220857e53e184257720a14553b2f4aa02577d2ed9842d45d4b9654810" dependencies = [ "cc", ] +[[package]] +name = "pulley-interpreter" +version = "27.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3b8d81cf799e20564931e9867ca32de545188c6ee4c2e0f6e41d32f0c7dc6fb" +dependencies = [ + "cranelift-bitset", + "log", + "sptr", +] + [[package]] name = "quote" -version = "1.0.33" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" +checksum = "b5b9d34b8991d19d98081b46eacdd8eb58c6f2b201139f7c5f643cc155a633af" dependencies = [ "proc-macro2", ] @@ -1351,9 +1567,9 @@ dependencies = [ [[package]] name = "rayon" -version = "1.8.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c27db03db7734835b3f53954b534c91069375ce6ccaa2e065441e07d9b6cdb1" +checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" dependencies = [ "either", "rayon-core", @@ -1361,41 +1577,32 @@ dependencies = [ [[package]] name = "rayon-core" -version = "1.12.0" +version = "1.12.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ce3fb6ad83f861aac485e76e1985cd109d9a3713802152be56c3b1f0e0658ed" +checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" dependencies = [ "crossbeam-deque", "crossbeam-utils", ] -[[package]] -name = "redox_syscall" -version = "0.2.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" -dependencies = [ - "bitflags 1.3.2", -] - [[package]] name = "redox_users" -version = "0.4.3" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" +checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" dependencies = [ "getrandom", - "redox_syscall", + "libredox", "thiserror", ] [[package]] name = "regalloc2" -version = "0.9.3" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad156d539c879b7a24a363a2016d77961786e71f48f2e2fc8302a92abd2429a6" +checksum = "12908dbeb234370af84d0579b9f68258a0f67e201412dd9a2814e6f45b2fc0f0" dependencies = [ - "hashbrown 0.13.2", + "hashbrown 0.14.5", "log", "rustc-hash", "slice-group-by", @@ -1404,94 +1611,87 @@ dependencies = [ [[package]] name = "rustc-demangle" -version = "0.1.23" +version = "0.1.24" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" +checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" [[package]] name = "rustc-hash" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" - -[[package]] -name = "rustix" -version = "0.37.27" +version = "2.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fea8ca367a3a01fe35e6943c400addf443c0f57670e6ec51196f71a4b8762dd2" -dependencies = [ - "bitflags 1.3.2", - "errno", - "io-lifetimes 1.0.11", - "libc", - "linux-raw-sys 0.3.8", - "windows-sys 0.48.0", -] +checksum = "583034fd73374156e66797ed8e5b0d5690409c9226b22d87cb7f19821c05d152" [[package]] name = "rustix" -version = "0.38.21" +version = "0.38.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b426b0506e5d50a7d8dafcf2e81471400deb602392c7dd110815afb4eaf02a3" +checksum = "d7f649912bc1495e167a6edee79151c84b1bad49748cb4f1f1167f459f6224f6" dependencies = [ - "bitflags 2.4.1", + "bitflags", "errno", "itoa", "libc", - "linux-raw-sys 0.4.10", + "linux-raw-sys", "once_cell", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] name = "ryu" -version = "1.0.15" +version = "1.0.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" - -[[package]] -name = "scopeguard" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" +checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" [[package]] name = "semver" -version = "1.0.20" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "836fa6a3e1e547f9a2c4040802ec865b5d85f4014efe00555d7090a3dcaa1090" +checksum = "61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b" +dependencies = [ + "serde", +] [[package]] name = "serde" -version = "1.0.190" +version = "1.0.215" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91d3c334ca1ee894a2c6f6ad698fe8c435b76d504b13d436f0685d648d6d96f7" +checksum = "6513c1ad0b11a9376da888e3e0baa0077f1aed55c17f50e7b2397136129fb88f" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.190" +version = "1.0.215" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67c5609f394e5c2bd7fc51efda478004ea80ef42fee983d5c67a65e34f32c0e3" +checksum = "ad1e866f866923f252f05c889987993144fb74e722403468a4ebd70c3cd756c0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.89", ] [[package]] name = "serde_json" -version = "1.0.107" +version = "1.0.133" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6b420ce6e3d8bd882e9b243c6eed35dbc9a6110c9769e74b584e0d68d1f20c65" +checksum = "c7fceb2473b9166b2294ef05efcb65a3db80803f0b03ef86a5fc88a2b85ee377" dependencies = [ "itoa", + "memchr", "ryu", "serde", ] +[[package]] +name = "serde_spanned" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87607cb1398ed59d48732e575a4c28a7a8ebf2454b964fe3f224f2afc07909e1" +dependencies = [ + "serde", +] + [[package]] name = "sha2" version = "0.10.8" @@ -1512,6 +1712,12 @@ dependencies = [ "dirs", ] +[[package]] +name = "shlex" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" + [[package]] name = "slab" version = "0.4.9" @@ -1529,28 +1735,21 @@ checksum = "826167069c09b99d56f31e9ae5c99049e932a98c9dc2dac47645b08dbbf76ba7" [[package]] name = "smallvec" -version = "1.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "942b4a808e05215192e39f4ab80813e599068285906cc91aa64f923db842bd5a" - -[[package]] -name = "socket2" -version = "0.4.10" +version = "1.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f7916fc008ca5542385b89a3d3ce689953c143e9304a9bf8beec1de48994c0d" +checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" dependencies = [ - "libc", - "winapi", + "serde", ] [[package]] name = "socket2" -version = "0.5.5" +version = "0.5.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7b5fac59a5cb5dd637972e5fca70daf0523c9067fcdc4842f053dae04a18f8e9" +checksum = "c970269d99b64e60ec3bd6ad27270092a5394c4e309314b18ae3fe575695fbe8" dependencies = [ "libc", - "windows-sys 0.48.0", + "windows-sys 0.52.0", ] [[package]] @@ -1567,9 +1766,9 @@ checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" [[package]] name = "strsim" -version = "0.10.0" +version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" +checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" [[package]] name = "syn" @@ -1584,102 +1783,141 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.38" +version = "2.0.89" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e96b79aaa137db8f61e26363a0c9b47d8b4ec75da28b7d1d614c2303e232408b" +checksum = "44d46482f1c1c87acd84dea20c1bf5ebff4c757009ed6bf19cfd36fb10e92c4e" dependencies = [ "proc-macro2", "quote", "unicode-ident", ] +[[package]] +name = "synstructure" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.89", +] + [[package]] name = "system-interface" -version = "0.26.0" +version = "0.27.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "27ce32341b2c0b70c144bbf35627fdc1ef18c76ced5e5e7b3ee8b5ba6b2ab6a0" +checksum = "b858526d22750088a9b3cf2e3c2aacebd5377f13adeec02860c30d09113010a6" dependencies = [ - "bitflags 2.4.1", + "bitflags", "cap-fs-ext", "cap-std", "fd-lock", - "io-lifetimes 2.0.2", - "rustix 0.38.21", - "windows-sys 0.48.0", + "io-lifetimes", + "rustix", + "windows-sys 0.52.0", "winx", ] [[package]] name = "target-lexicon" -version = "0.12.12" +version = "0.12.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "14c39fd04924ca3a864207c66fc2cd7d22d7c016007f9ce846cbb9326331930a" +checksum = "61c41af27dd6d1e27b1b16b489db798443478cef1f06a660c96db617ba5de3b1" + +[[package]] +name = "termcolor" +version = "1.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" +dependencies = [ + "winapi-util", +] [[package]] name = "thiserror" -version = "1.0.50" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9a7210f5c9a7156bb50aa36aed4c95afb51df0df00713949448cf9e97d382d2" +checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.50" +version = "1.0.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "266b2e40bc00e5a6c09c3584011e08b06f123c00362c92b975ba9843aaaa14b8" +checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.89", ] [[package]] -name = "tinyvec" -version = "1.6.0" +name = "tinystr" +version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +checksum = "9117f5d4db391c1cf6927e7bea3db74b9a1c1add8f7eda9ffd5364f40f57b82f" dependencies = [ - "tinyvec_macros", + "displaydoc", + "zerovec", ] -[[package]] -name = "tinyvec_macros" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" - [[package]] name = "tokio" -version = "1.33.0" +version = "1.41.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f38200e3ef7995e5ef13baec2f432a6da0aa9ac495b2c0e8f3b7eec2c92d653" +checksum = "22cfb5bee7a6a52939ca9224d6ac897bb669134078daa8735560897f69de4d33" dependencies = [ "backtrace", "bytes", "libc", "mio", - "num_cpus", "pin-project-lite", - "socket2 0.5.5", - "windows-sys 0.48.0", + "socket2", + "windows-sys 0.52.0", ] [[package]] name = "toml" -version = "0.5.11" +version = "0.8.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" +checksum = "a1ed1f98e3fdc28d6d910e6737ae6ab1a93bf1985935a1193e68f93eeb68d24e" dependencies = [ "serde", + "serde_spanned", + "toml_datetime", + "toml_edit", +] + +[[package]] +name = "toml_datetime" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0dd7358ecb8fc2f8d014bf86f6f638ce72ba252a2c3a2572f2a795f1d23efb41" +dependencies = [ + "serde", +] + +[[package]] +name = "toml_edit" +version = "0.22.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4ae48d6208a266e853d946088ed816055e556cc6028c5e8e2b84d9fa5dd7c7f5" +dependencies = [ + "indexmap", + "serde", + "serde_spanned", + "toml_datetime", + "winnow", ] [[package]] name = "tracing" -version = "0.1.40" +version = "0.1.41" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" +checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" dependencies = [ "pin-project-lite", "tracing-attributes", @@ -1688,20 +1926,20 @@ dependencies = [ [[package]] name = "tracing-attributes" -version = "0.1.27" +version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" +checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.89", ] [[package]] name = "tracing-core" -version = "0.1.32" +version = "0.1.33" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" +checksum = "e672c95779cf947c5311f83787af4fa8fffd12fb27e4993211a84bdfd9610f9c" dependencies = [ "once_cell", ] @@ -1712,79 +1950,70 @@ version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" -[[package]] -name = "unicode-bidi" -version = "0.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" - [[package]] name = "unicode-ident" -version = "1.0.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" - -[[package]] -name = "unicode-normalization" -version = "0.1.22" +version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" -dependencies = [ - "tinyvec", -] +checksum = "adb9e6ca4f869e1180728b7950e35922a7fc6397f7b641499e8f3ef06e50dc83" [[package]] name = "unicode-width" -version = "0.1.11" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85" +checksum = "1fc81956842c57dac11422a97c3b8195a1ff727f06e85c84ed2e8aa277c9a0fd" [[package]] name = "unicode-xid" -version = "0.2.4" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" +checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" [[package]] name = "url" -version = "2.4.1" +version = "2.5.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "143b538f18257fac9cad154828a57c6bf5157e1aa604d4816b5995bf6de87ae5" +checksum = "32f8b686cadd1473f4bd0117a5d28d36b1ade384ea9b5069a1c40aefed7fda60" dependencies = [ "form_urlencoded", "idna", "percent-encoding", ] +[[package]] +name = "utf16_iter" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" + +[[package]] +name = "utf8_iter" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" + [[package]] name = "utf8parse" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" +checksum = "06abde3611657adf66d383f00b093d7faecc7fa57071cce2578660c9f1010821" [[package]] name = "uuid" -version = "1.5.0" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88ad59a7560b41a70d191093a945f0b87bc1deeda46fb237479708a1d6b6cdfc" +checksum = "f8c5f0a0af699448548ad1a2fbf920fb4bee257eae39953ba95cb84891a0446a" [[package]] name = "value-bag" -version = "1.4.2" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4a72e1902dde2bd6441347de2b70b7f5d59bf157c6c62f0c44572607a1d55bbe" +checksum = "3ef4c4aa54d5d05a279399bfa921ec387b7aba77caf7a682ae8d86785b8fdad2" [[package]] name = "version_check" -version = "0.9.4" +version = "0.9.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" - -[[package]] -name = "waker-fn" -version = "1.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3c4517f54858c779bbcbf228f4fca63d121bf85fbecb2dc578cdf4a39395690" +checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" [[package]] name = "wasi" @@ -1792,62 +2021,37 @@ version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" -[[package]] -name = "wasi-common" -version = "18.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95e022c29ad56af4cc0a8a8f0e0191abf9e0a0c4a68d25dfe088c39c9a8e3d2c" -dependencies = [ - "anyhow", - "bitflags 2.4.1", - "cap-fs-ext", - "cap-rand", - "cap-std", - "cap-time-ext", - "fs-set-times", - "io-extras", - "io-lifetimes 2.0.2", - "log", - "once_cell", - "rustix 0.38.21", - "system-interface", - "thiserror", - "tracing", - "wasmtime", - "wiggle", - "windows-sys 0.52.0", -] - [[package]] name = "wasm-bindgen" -version = "0.2.87" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7706a72ab36d8cb1f80ffbf0e071533974a60d0a308d01a5d0375bf60499a342" +checksum = "128d1e363af62632b8eb57219c8fd7877144af57558fb2ef0368d0087bddeb2e" dependencies = [ "cfg-if", + "once_cell", "wasm-bindgen-macro", ] [[package]] name = "wasm-bindgen-backend" -version = "0.2.87" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ef2b6d3c510e9625e5fe6f509ab07d66a760f0885d858736483c32ed7809abd" +checksum = "cb6dd4d3ca0ddffd1dd1c9c04f94b868c37ff5fac97c30b97cff2d74fce3a358" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.89", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.37" +version = "0.4.45" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c02dbc21516f9f1f04f187958890d7e6026df8d16540b7ad9492bc34a67cea03" +checksum = "cc7ec4f8827a71586374db3e87abdb5a2bb3a15afed140221307c3ec06b1f63b" dependencies = [ "cfg-if", "js-sys", @@ -1857,9 +2061,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.87" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dee495e55982a3bd48105a7b947fd2a9b4a8ae3010041b9e0faab3f9cd028f1d" +checksum = "e79384be7f8f5a9dd5d7167216f022090cf1f9ec128e6e6a482a2cb5c5422c56" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -1867,92 +2071,121 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.87" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b" +checksum = "26c6ab57572f7a24a4985830b120de1594465e5d500f24afe89e16b4e833ef68" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.89", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.87" +version = "0.2.95" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ca6ad05a4870b2bf5fe995117d3728437bd27d7cd5f06f13c17443ef369775a1" +checksum = "65fc09f10666a9f147042251e0dda9c18f166ff7de300607007e96bdebc1068d" [[package]] name = "wasm-encoder" -version = "0.41.2" +version = "0.219.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "972f97a5d8318f908dded23594188a90bcd09365986b1163e66d70170e5287ae" +checksum = "29cbbd772edcb8e7d524a82ee8cef8dd046fc14033796a754c3ad246d019fa54" dependencies = [ "leb128", + "wasmparser 0.219.1", ] [[package]] name = "wasm-encoder" -version = "0.201.0" +version = "0.221.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b9c7d2731df60006819b013f64ccc2019691deccf6e11a1804bc850cd6748f1a" +checksum = "de35b6c3ef1f53ac7a31b5e69bc00f1542ea337e7e7162dc34c68b537ff82690" dependencies = [ "leb128", + "wasmparser 0.221.0", +] + +[[package]] +name = "wasmparser" +version = "0.219.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c771866898879073c53b565a6c7b49953795159836714ac56a5befb581227c5" +dependencies = [ + "ahash", + "bitflags", + "hashbrown 0.14.5", + "indexmap", + "semver", + "serde", ] [[package]] name = "wasmparser" -version = "0.121.2" +version = "0.221.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9dbe55c8f9d0dbd25d9447a5a889ff90c0cc3feaa7395310d3d826b2c703eaab" +checksum = "8659e755615170cfe20da468865c989da78c5da16d8652e69a75acda02406a92" dependencies = [ - "bitflags 2.4.1", + "bitflags", "indexmap", "semver", ] [[package]] name = "wasmprinter" -version = "0.2.80" +version = "0.219.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60e73986a6b7fdfedb7c5bf9e7eb71135486507c8fbc4c0c42cffcb6532988b7" +checksum = "228cdc1f30c27816da225d239ce4231f28941147d34713dee8f1fff7cb330e54" dependencies = [ "anyhow", - "wasmparser", + "termcolor", + "wasmparser 0.219.1", ] [[package]] name = "wasmtime" -version = "18.0.3" +version = "27.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8106d7d22d63d1bcb940e22dcc7b03e46f0fc8bfbaf2fd7b6cb8f448f9449774" +checksum = "5b79302e3e084713249cc5622e8608e7410afdeeea8c8026d04f491d1fab0b4b" dependencies = [ "addr2line", "anyhow", "async-trait", - "bincode", + "bitflags", "bumpalo", + "cc", "cfg-if", "encoding_rs", "fxprof-processed-profile", "gimli", + "hashbrown 0.14.5", "indexmap", "ittapi", "libc", + "libm", "log", + "mach2", + "memfd", "object", "once_cell", "paste", + "postcard", + "psm", + "pulley-interpreter", "rayon", - "rustix 0.38.21", + "rustix", + "semver", "serde", "serde_derive", "serde_json", + "smallvec", + "sptr", "target-lexicon", - "wasm-encoder 0.41.2", - "wasmparser", + "wasm-encoder 0.219.1", + "wasmparser 0.219.1", + "wasmtime-asm-macros", "wasmtime-cache", "wasmtime-component-macro", "wasmtime-component-util", @@ -1961,51 +2194,52 @@ dependencies = [ "wasmtime-fiber", "wasmtime-jit-debug", "wasmtime-jit-icache-coherence", - "wasmtime-runtime", + "wasmtime-slab", + "wasmtime-versioned-export-macros", "wasmtime-winch", "wat", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] name = "wasmtime-asm-macros" -version = "18.0.3" +version = "27.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b0cf02cea951ace34ee3b0e64b7f446c3519d1c95ad75bc5330f405e275ee8f" +checksum = "fe53a24e7016a5222875d8ca3ad6024b464465985693c42098cd0bb710002c28" dependencies = [ "cfg-if", ] [[package]] name = "wasmtime-cache" -version = "18.0.3" +version = "27.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3249204a71d728d53fb3eea18afd0473f87e520445707a4d567ac4da0bb3eb5d" +checksum = "0677a7e76c24746b68e3657f7cc50c0ff122ee7e97bbda6e710c1b790ebc93cb" dependencies = [ "anyhow", "base64", - "bincode", "directories-next", "log", - "rustix 0.38.21", + "postcard", + "rustix", "serde", "serde_derive", "sha2", "toml", - "windows-sys 0.52.0", + "windows-sys 0.59.0", "zstd", ] [[package]] name = "wasmtime-component-macro" -version = "18.0.3" +version = "27.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d3786c0531565ec6c9852c0e46299f06cb6e4b58d36e30f3c234cfa69bde376" +checksum = "e118acbd2bc09b32ad8606bc7cef793bf5019c1b107772e64dc6c76b5055d40b" dependencies = [ "anyhow", "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.89", "wasmtime-component-util", "wasmtime-wit-bindgen", "wit-parser", @@ -2013,15 +2247,15 @@ dependencies = [ [[package]] name = "wasmtime-component-util" -version = "18.0.3" +version = "27.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81eae2ec98027ee0b3950da83bc320120a23087ac4d39b3d59201cb5ebf52777" +checksum = "4a6db4f3ee18c699629eabb9c64e77efe5a93a5137f098db7cab295037ba41c2" [[package]] name = "wasmtime-cranelift" -version = "18.0.3" +version = "27.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "595abdb067acdc812ab0f21d8d46d5aa4022392aa7c3e0632c20bff9ec49ffb4" +checksum = "8b87e6c78f562b50aff1afd87ff32a57e241424c846c1c8f3c5fd352d2d62906" dependencies = [ "anyhow", "cfg-if", @@ -2030,161 +2264,109 @@ dependencies = [ "cranelift-entity", "cranelift-frontend", "cranelift-native", - "cranelift-wasm", "gimli", + "itertools", "log", "object", + "smallvec", "target-lexicon", "thiserror", - "wasmparser", - "wasmtime-cranelift-shared", + "wasmparser 0.219.1", "wasmtime-environ", "wasmtime-versioned-export-macros", ] -[[package]] -name = "wasmtime-cranelift-shared" -version = "18.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8c24c1fdea167b992d82ebe76471fd1cbe7b0b406bc72f9250f86353000134e" -dependencies = [ - "anyhow", - "cranelift-codegen", - "cranelift-control", - "cranelift-native", - "gimli", - "object", - "target-lexicon", - "wasmtime-environ", -] - [[package]] name = "wasmtime-environ" -version = "18.0.3" +version = "27.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3279d510005358141550d8a90a5fc989d7e81748e5759d582fe6bfdcbf074a04" +checksum = "c25bfeaa16432d59a0706e2463d315ef4c9ebcfaf5605670b99d46373bdf9f27" dependencies = [ "anyhow", - "bincode", "cpp_demangle", + "cranelift-bitset", "cranelift-entity", "gimli", "indexmap", "log", "object", + "postcard", "rustc-demangle", + "semver", "serde", "serde_derive", + "smallvec", "target-lexicon", - "thiserror", - "wasm-encoder 0.41.2", - "wasmparser", + "wasm-encoder 0.219.1", + "wasmparser 0.219.1", "wasmprinter", "wasmtime-component-util", - "wasmtime-types", ] [[package]] name = "wasmtime-fiber" -version = "18.0.3" +version = "27.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b1df665f2117741d1265f5663b0d93068b18120c2c4b18b9faed49d00d92c31" +checksum = "759ab0caa3821a6211743fe1eed448ab9df439e3af6c60dea15486c055611806" dependencies = [ "anyhow", "cc", "cfg-if", - "rustix 0.38.21", + "rustix", "wasmtime-asm-macros", "wasmtime-versioned-export-macros", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] name = "wasmtime-jit-debug" -version = "18.0.3" +version = "27.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "63f307739370736e5b0cd2b45910ff96bcda6d5d68b2c4384bcedb0af4f3b321" +checksum = "ab2a056056e9ac6916c2b8e4743408560300c1355e078c344211f13210d449b3" dependencies = [ "object", - "once_cell", - "rustix 0.38.21", + "rustix", "wasmtime-versioned-export-macros", ] [[package]] name = "wasmtime-jit-icache-coherence" -version = "18.0.3" +version = "27.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "866634605089b4632b32226b54aa3670d72e1849f9fc425c7e50b3749c2e6df3" -dependencies = [ - "cfg-if", - "libc", - "windows-sys 0.52.0", -] - -[[package]] -name = "wasmtime-runtime" -version = "18.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e11185c88cadf595d228f5ae4ff9b4badbf9ca98dcb37b0310c36e31fa74867f" +checksum = "91b218a92866f74f35162f5d03a4e0f62cd0e1cc624285b1014275e5d4575fad" dependencies = [ "anyhow", - "cc", "cfg-if", - "encoding_rs", - "indexmap", "libc", - "log", - "mach", - "memfd", - "memoffset", - "paste", - "psm", - "rustix 0.38.21", - "sptr", - "wasm-encoder 0.41.2", - "wasmtime-asm-macros", - "wasmtime-environ", - "wasmtime-fiber", - "wasmtime-jit-debug", - "wasmtime-versioned-export-macros", - "wasmtime-wmemcheck", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] -name = "wasmtime-types" -version = "18.0.3" +name = "wasmtime-slab" +version = "27.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f32377cbd827bee06fcb2f6bf97b0477fdcc86888bbe6db7b9cab8e644082e0a" -dependencies = [ - "cranelift-entity", - "serde", - "serde_derive", - "thiserror", - "wasmparser", -] +checksum = "4d5f8acf677ee6b3b8ba400dd9753ea4769e56a95c4b30b045ac6d2d54b2f8ea" [[package]] name = "wasmtime-versioned-export-macros" -version = "18.0.3" +version = "27.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ab8d7566d206c42f8cf1d4ac90c5e40d3582e8eabad9b3b67e9e73c61fc47a1" +checksum = "df09be00c38f49172ca9936998938476e3f2df782673a39ae2ef9fb0838341b6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.89", ] [[package]] name = "wasmtime-wasi" -version = "18.0.3" +version = "27.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ca912bda309188bd25ab7652c6654b34aacdf43047c716ee1cb685a28079078" +checksum = "ad5cf227161565057fc994edf14180341817372a218f1597db48a43946e5f875" dependencies = [ "anyhow", "async-trait", - "bitflags 2.4.1", + "bitflags", "bytes", "cap-fs-ext", "cap-net-ext", @@ -2194,43 +2376,40 @@ dependencies = [ "fs-set-times", "futures", "io-extras", - "io-lifetimes 2.0.2", - "log", - "once_cell", - "rustix 0.38.21", + "io-lifetimes", + "rustix", "system-interface", "thiserror", "tokio", "tracing", "url", - "wasi-common", "wasmtime", "wiggle", - "windows-sys 0.52.0", + "windows-sys 0.59.0", ] [[package]] name = "wasmtime-winch" -version = "18.0.3" +version = "27.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba5a97bfccc241d1769cef75eb16f472a893982704d5f3c9c71c431c1484344a" +checksum = "89d6b5297bea14d8387c3974b2b011de628cc9b188f135cec752b74fd368964b" dependencies = [ "anyhow", "cranelift-codegen", "gimli", "object", "target-lexicon", - "wasmparser", - "wasmtime-cranelift-shared", + "wasmparser 0.219.1", + "wasmtime-cranelift", "wasmtime-environ", "winch-codegen", ] [[package]] name = "wasmtime-wit-bindgen" -version = "18.0.3" +version = "27.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "faf2c76781a27e07802669f6f0e11eb4441546407eb65be60c3d862200988b92" +checksum = "bf3963c9c29df91564d8bd181eb00d0dbaeafa1b2a01e15952bb7391166b704e" dependencies = [ "anyhow", "heck", @@ -2238,12 +2417,6 @@ dependencies = [ "wit-parser", ] -[[package]] -name = "wasmtime-wmemcheck" -version = "18.0.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3847d969bd203b8cd239f89581e52432a0f00b8c5c9bc917be2fccd7542c4f2f" - [[package]] name = "wast" version = "35.0.2" @@ -2255,31 +2428,31 @@ dependencies = [ [[package]] name = "wast" -version = "201.0.0" +version = "221.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ef6e1ef34d7da3e2b374fd2b1a9c0227aff6cad596e1b24df9b58d0f6222faa" +checksum = "9d8eb1933d493dd07484a255c3f52236123333f5befaa3be36182a50d393ec54" dependencies = [ "bumpalo", "leb128", "memchr", "unicode-width", - "wasm-encoder 0.201.0", + "wasm-encoder 0.221.0", ] [[package]] name = "wat" -version = "1.201.0" +version = "1.221.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "453d5b37a45b98dee4f4cb68015fc73634d7883bbef1c65e6e9c78d454cf3f32" +checksum = "c813fd4e5b2b97242830b56e7b7dc5479bc17aaa8730109be35e61909af83993" dependencies = [ - "wast 201.0.0", + "wast 221.0.0", ] [[package]] name = "web-sys" -version = "0.3.64" +version = "0.3.72" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b85cbef8c220a6abc02aefd892dfc0fc23afb1c6a426316ec33253a3877249b" +checksum = "f6488b90108c040df0fe62fa815cbdee25124641df01814dd7282749234c6112" dependencies = [ "js-sys", "wasm-bindgen", @@ -2287,13 +2460,13 @@ dependencies = [ [[package]] name = "wiggle" -version = "18.0.3" +version = "27.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a7ecd6e1ffba1278cfd24a001a13da11d86801e0ad9342f11a370ce0df50e14" +checksum = "80e0f6ef83a263c0fa11957c363aeaa76dc84832484d0e119f22810d4d0e09a7" dependencies = [ "anyhow", "async-trait", - "bitflags 2.4.1", + "bitflags", "thiserror", "tracing", "wasmtime", @@ -2302,28 +2475,28 @@ dependencies = [ [[package]] name = "wiggle-generate" -version = "18.0.3" +version = "27.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c5490497a35d67040d4f2fd2491fbcad6dd225c5bd24681c2cd52a2f40a55ce" +checksum = "dd266b290a0fdace3af6a05c6ebbcc54de303a774448ecf5a98cd0bc12d89c52" dependencies = [ "anyhow", "heck", "proc-macro2", "quote", "shellexpand", - "syn 2.0.38", + "syn 2.0.89", "witx", ] [[package]] name = "wiggle-macro" -version = "18.0.3" +version = "27.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d83f31d1c1a0d87842f1a2bf40bd230e25ba790c450f0d0ddb84524fd6955958" +checksum = "9b8eb1a5783540696c59cefbfc9e52570c2d5e62bd47bdf0bdcef29231879db2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.89", "wiggle-generate", ] @@ -2343,6 +2516,15 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" +[[package]] +name = "winapi-util" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf221c93e13a30d793f7645a0e7762c55d169dbb0a49671918a2319d289b10bb" +dependencies = [ + "windows-sys 0.59.0", +] + [[package]] name = "winapi-x86_64-pc-windows-gnu" version = "0.4.0" @@ -2351,9 +2533,9 @@ checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" [[package]] name = "winch-codegen" -version = "0.16.3" +version = "27.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e0bd4d6cac8d69525d475d0ce1e0801eb6f314d42e764a52bd497ed3cb9c371" +checksum = "8b42b678c8651ec4900d7600037d235429fc985c31cbc33515885ec0d2a9e158" dependencies = [ "anyhow", "cranelift-codegen", @@ -2361,17 +2543,18 @@ dependencies = [ "regalloc2", "smallvec", "target-lexicon", - "wasmparser", + "wasmparser 0.219.1", + "wasmtime-cranelift", "wasmtime-environ", ] [[package]] -name = "windows-sys" -version = "0.48.0" +name = "windows-core" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" dependencies = [ - "windows-targets 0.48.5", + "windows-targets", ] [[package]] @@ -2380,138 +2563,106 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets 0.52.4", + "windows-targets", ] [[package]] -name = "windows-targets" -version = "0.48.5" +name = "windows-sys" +version = "0.59.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" dependencies = [ - "windows_aarch64_gnullvm 0.48.5", - "windows_aarch64_msvc 0.48.5", - "windows_i686_gnu 0.48.5", - "windows_i686_msvc 0.48.5", - "windows_x86_64_gnu 0.48.5", - "windows_x86_64_gnullvm 0.48.5", - "windows_x86_64_msvc 0.48.5", + "windows-targets", ] [[package]] name = "windows-targets" -version = "0.52.4" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7dd37b7e5ab9018759f893a1952c9420d060016fc19a472b4bb20d1bdd694d1b" +checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" dependencies = [ - "windows_aarch64_gnullvm 0.52.4", - "windows_aarch64_msvc 0.52.4", - "windows_i686_gnu 0.52.4", - "windows_i686_msvc 0.52.4", - "windows_x86_64_gnu 0.52.4", - "windows_x86_64_gnullvm 0.52.4", - "windows_x86_64_msvc 0.52.4", + "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.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" - -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.52.4" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcf46cf4c365c6f2d1cc93ce535f2c8b244591df96ceee75d8e83deb70a9cac9" +checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" [[package]] name = "windows_aarch64_msvc" -version = "0.48.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" - -[[package]] -name = "windows_aarch64_msvc" -version = "0.52.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da9f259dd3bcf6990b55bffd094c4f7235817ba4ceebde8e6d11cd0c5633b675" - -[[package]] -name = "windows_i686_gnu" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" +checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" [[package]] name = "windows_i686_gnu" -version = "0.52.4" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b474d8268f99e0995f25b9f095bc7434632601028cf86590aea5c8a5cb7801d3" +checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" [[package]] -name = "windows_i686_msvc" -version = "0.48.5" +name = "windows_i686_gnullvm" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" +checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" [[package]] name = "windows_i686_msvc" -version = "0.52.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1515e9a29e5bed743cb4415a9ecf5dfca648ce85ee42e15873c3cd8610ff8e02" - -[[package]] -name = "windows_x86_64_gnu" -version = "0.48.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" +checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" [[package]] name = "windows_x86_64_gnu" -version = "0.52.4" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5eee091590e89cc02ad514ffe3ead9eb6b660aedca2183455434b93546371a03" +checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" [[package]] name = "windows_x86_64_gnullvm" -version = "0.48.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" - -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.52.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77ca79f2451b49fa9e2af39f0747fe999fcda4f5e241b2898624dca97a1f2177" +checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" [[package]] name = "windows_x86_64_msvc" -version = "0.48.5" +version = "0.52.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" +checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] -name = "windows_x86_64_msvc" -version = "0.52.4" +name = "winnow" +version = "0.6.20" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32b752e52a2da0ddfbdbcc6fceadfeede4c939ed16d13e648833a61dfb611ed8" +checksum = "36c1fec1a2bb5866f07c25f68c26e565c4c200aebb96d7e55710c19d3e8ac49b" +dependencies = [ + "memchr", +] [[package]] name = "winx" -version = "0.36.2" +version = "0.36.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "357bb8e2932df531f83b052264b050b81ba0df90ee5a59b2d1d3949f344f81e5" +checksum = "f9643b83820c0cd246ecabe5fa454dd04ba4fa67996369466d0747472d337346" dependencies = [ - "bitflags 2.4.1", - "windows-sys 0.48.0", + "bitflags", + "windows-sys 0.52.0", ] [[package]] name = "wit-parser" -version = "0.13.2" +version = "0.219.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "316b36a9f0005f5aa4b03c39bc3728d045df136f8c13a73b7db4510dec725e08" +checksum = "4a86f669283257e8e424b9a4fc3518e3ade0b95deb9fbc0f93a1876be3eda598" dependencies = [ "anyhow", "id-arena", @@ -2522,6 +2673,7 @@ dependencies = [ "serde_derive", "serde_json", "unicode-xid", + "wasmparser 0.219.1", ] [[package]] @@ -2536,50 +2688,129 @@ dependencies = [ "wast 35.0.2", ] +[[package]] +name = "write16" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" + +[[package]] +name = "writeable" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e9df38ee2d2c3c5948ea468a8406ff0db0b29ae1ffde1bcf20ef305bcc95c51" + +[[package]] +name = "yoke" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "120e6aef9aa629e3d4f52dc8cc43a015c7724194c97dfaf45180d2daf2b77f40" +dependencies = [ + "serde", + "stable_deref_trait", + "yoke-derive", + "zerofrom", +] + +[[package]] +name = "yoke-derive" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.89", + "synstructure", +] + [[package]] name = "zerocopy" -version = "0.7.15" +version = "0.7.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81ba595b9f2772fbee2312de30eeb80ec773b4cb2f1e8098db024afadda6c06f" +checksum = "1b9b4fd18abc82b8136838da5d50bae7bdea537c574d8dc1a34ed098d6c166f0" dependencies = [ + "byteorder", "zerocopy-derive", ] [[package]] name = "zerocopy-derive" -version = "0.7.15" +version = "0.7.35" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.89", +] + +[[package]] +name = "zerofrom" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cff3ee08c995dee1859d998dea82f7374f2826091dd9cd47def953cae446cd2e" +dependencies = [ + "zerofrom-derive", +] + +[[package]] +name = "zerofrom-derive" +version = "0.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "772666c41fb6dceaf520b564b962d738a8e1a83b41bd48945f50837aed78bb1d" +checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808" dependencies = [ "proc-macro2", "quote", - "syn 2.0.38", + "syn 2.0.89", + "synstructure", +] + +[[package]] +name = "zerovec" +version = "0.10.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa2b893d79df23bfb12d5461018d408ea19dfafe76c2c7ef6d4eba614f8ff079" +dependencies = [ + "yoke", + "zerofrom", + "zerovec-derive", +] + +[[package]] +name = "zerovec-derive" +version = "0.10.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.89", ] [[package]] name = "zstd" -version = "0.11.2+zstd.1.5.2" +version = "0.13.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "20cc960326ece64f010d2d2107537f26dc589a6573a316bd5b1dba685fa5fde4" +checksum = "fcf2b778a664581e31e389454a7072dab1647606d44f7feea22cd5abb9c9f3f9" dependencies = [ "zstd-safe", ] [[package]] name = "zstd-safe" -version = "5.0.2+zstd.1.5.2" +version = "7.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d2a5585e04f9eea4b2a3d1eca508c4dee9592a89ef6f450c11719da0726f4db" +checksum = "54a3ab4db68cea366acc5c897c7b4d4d1b8994a9cd6e6f841f8964566a419059" dependencies = [ - "libc", "zstd-sys", ] [[package]] name = "zstd-sys" -version = "2.0.9+zstd.1.5.5" +version = "2.0.13+zstd.1.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e16efa8a874a0481a574084d34cc26fdb3b99627480f785888deb6386506656" +checksum = "38ff0f21cfee8f97d94cef41359e0c89aa6113028ab0291aa8ca0038995a95aa" dependencies = [ "cc", "pkg-config", diff --git a/component-model/examples/example-host/Cargo.toml b/component-model/examples/example-host/Cargo.toml index 25d5bdb..c25b417 100644 --- a/component-model/examples/example-host/Cargo.toml +++ b/component-model/examples/example-host/Cargo.toml @@ -4,8 +4,8 @@ version = "0.1.0" edition = "2021" [dependencies] -async-std = { version = "1.12.0", features = ["attributes"] } -clap = { version = "4.3.19", features = ["derive"] } -wasmtime = "18.0.1" -wasmtime-wasi = { version = "18.0.1" } +async-std = { version = "1.13", features = ["attributes"] } +clap = { version = "4", features = ["derive"] } +wasmtime = "27.0" +wasmtime-wasi = "27.0" anyhow = "1.0.72" diff --git a/component-model/examples/example-host/src/add.rs b/component-model/examples/example-host/src/add.rs deleted file mode 100644 index 8ab5b27..0000000 --- a/component-model/examples/example-host/src/add.rs +++ /dev/null @@ -1,58 +0,0 @@ -use anyhow::Context; -use std::path::PathBuf; -use wasmtime::component::*; -use wasmtime::{Config, Engine, Store}; -use wasmtime_wasi::preview2::{command, WasiCtx, WasiCtxBuilder, WasiView}; - -wasmtime::component::bindgen!({ - path: "add.wit", - world: "example", - async: true -}); - -pub async fn add(path: PathBuf, x: i32, y: i32) -> wasmtime::Result { - let mut config = Config::default(); - config.wasm_component_model(true); - config.async_support(true); - let engine = Engine::new(&config)?; - let mut linker = Linker::new(&engine); - - // Add the command world (aka WASI CLI) to the linker - command::add_to_linker(&mut linker).context("Failed to link command world")?; - let wasi_view = ServerWasiView::new(); - let mut store = Store::new(&engine, wasi_view); - - let component = Component::from_file(&engine, path).context("Component file not found")?; - - let (instance, _) = Example::instantiate_async(&mut store, &component, &linker) - .await - .context("Failed to instantiate the example world")?; - instance - .call_add(&mut store, x, y) - .await - .context("Failed to call add function") -} - -struct ServerWasiView { - table: ResourceTable, - ctx: WasiCtx, -} - -impl ServerWasiView { - fn new() -> Self { - let table = ResourceTable::new(); - let ctx = WasiCtxBuilder::new().inherit_stdio().build(); - - Self { table, ctx } - } -} - -impl WasiView for ServerWasiView { - fn table(&mut self) -> &mut ResourceTable { - &mut self.table - } - - fn ctx(&mut self) -> &mut WasiCtx { - &mut self.ctx - } -} \ No newline at end of file diff --git a/component-model/examples/example-host/src/async_add.rs b/component-model/examples/example-host/src/async_add.rs new file mode 100644 index 0000000..b24ee79 --- /dev/null +++ b/component-model/examples/example-host/src/async_add.rs @@ -0,0 +1,33 @@ +use anyhow::Context; +use std::path::PathBuf; +use wasmtime::component::*; +use wasmtime::{Config, Engine, Store}; +use crate::state::States; + +bindgen!({ + path: "add.wit", + world: "example", + async: true +}); + +pub async fn add(path: PathBuf, x: i32, y: i32) -> wasmtime::Result { + // Construct engine + let mut config = Config::default(); + config.async_support(true); + let engine = Engine::new(&config)?; + // Construct component + let component = Component::from_file(&engine, path).context("Component file not found")?; + // Construct store for storing running states of the component + let wasi_view = States::new(); + let mut store = Store::new(&engine, wasi_view); + // Construct linker for linking interfaces. + // For this simple adder component, no need to link additional interfaces. + let linker = Linker::new(&engine); + let instance = Example::instantiate_async(&mut store, &component, &linker) + .await + .context("Failed to instantiate the example world")?; + instance + .call_add(&mut store, x, y) + .await + .context("Failed to call add function") +} \ No newline at end of file diff --git a/component-model/examples/example-host/src/main.rs b/component-model/examples/example-host/src/main.rs index 965d477..1a93c05 100644 --- a/component-model/examples/example-host/src/main.rs +++ b/component-model/examples/example-host/src/main.rs @@ -1,4 +1,7 @@ -mod add; +mod async_add; +mod sync_add; +mod state; + use clap::Parser; use std::path::PathBuf; @@ -18,8 +21,10 @@ struct AddApp { impl AddApp { async fn run(self) -> anyhow::Result<()> { - let sum = add::add(self.component, self.x, self.y).await?; - println!("{} + {} = {sum}", self.x, self.y); + let sum1 = async_add::add(self.component.clone(), self.x, self.y).await?; + let sum2 = sync_add::add(self.component, self.x, self.y)?; + assert_eq!(sum1, sum2); + println!("{} + {} = {sum1}", self.x, self.y); Ok(()) } } diff --git a/component-model/examples/example-host/src/state.rs b/component-model/examples/example-host/src/state.rs new file mode 100644 index 0000000..ebd2033 --- /dev/null +++ b/component-model/examples/example-host/src/state.rs @@ -0,0 +1,25 @@ +use wasmtime::component::ResourceTable; +use wasmtime_wasi::{WasiCtx, WasiCtxBuilder, WasiView}; + +pub struct States { + table: ResourceTable, + ctx: WasiCtx, +} + +impl States { + pub fn new() -> Self { + let table = ResourceTable::new(); + let ctx = WasiCtxBuilder::new().build(); + Self { table, ctx } + } +} + +impl WasiView for States { + fn table(&mut self) -> &mut ResourceTable { + &mut self.table + } + + fn ctx(&mut self) -> &mut WasiCtx { + &mut self.ctx + } +} \ No newline at end of file diff --git a/component-model/examples/example-host/src/sync_add.rs b/component-model/examples/example-host/src/sync_add.rs new file mode 100644 index 0000000..1fd93a0 --- /dev/null +++ b/component-model/examples/example-host/src/sync_add.rs @@ -0,0 +1,29 @@ +use crate::state::States; +use anyhow::Context; +use std::path::PathBuf; +use wasmtime::component::{bindgen, Component, Linker}; +use wasmtime::{Engine, Store}; + +bindgen!({ + path: "add.wit", + world: "example", + async: false +}); + +pub fn add(path: PathBuf, x: i32, y: i32) -> wasmtime::Result { + // Construct engine + let engine = Engine::default(); + // Construct component + let component = Component::from_file(&engine, path).context("Component file not found")?; + // Construct store for storing running states of the component + let wasi_view = States::new(); + let mut store = Store::new(&engine, wasi_view); + // Construct linker for linking interfaces. + // For this simple adder component, no need to link additional interfaces. + let linker = Linker::new(&engine); + let instance = Example::instantiate(&mut store, &component, &linker) + .context("Failed to instantiate the example world")?; + instance + .call_add(&mut store, x, y) + .context("Failed to call add function") +} \ No newline at end of file From 4117f269c91ba6f9161735a643aed28175d4dcc5 Mon Sep 17 00:00:00 2001 From: Victor Adossi Date: Fri, 6 Dec 2024 06:13:57 +0900 Subject: [PATCH 088/175] fix: remove 'explainer' language Signed-off-by: Victor Adossi --- component-model/src/reference/useful-links.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/component-model/src/reference/useful-links.md b/component-model/src/reference/useful-links.md index 21fe263..e7b63c4 100644 --- a/component-model/src/reference/useful-links.md +++ b/component-model/src/reference/useful-links.md @@ -2,12 +2,12 @@ The following references are helpful in understanding the Component Model and related ecosystem/projects. -- [`WebAssembly/component-model` GitHub Repository][wasm-cm-repo] - - [Component Model AST Explainer][ast-explainer] - - [Canonical ABI Explainer][canonical-abi] -- [WASI Preview 2][wasi-p2] - [WebAssembly Composition tool (`wac`)][wac] - [WebAssembly package tools (notably `wkg`)][wkg] +- [WASI Preview 2][wasi-p2] +- [Component Model internals][wasm-cm-repo] + - [Component Model AST][ast-explainer] + - [Canonical ABI][canonical-abi] [wasm-cm-repo]: https://github.com/WebAssembly/component-model [wasi-p2]: https://github.com/WebAssembly/WASI/tree/main/wasip2 From 555517ba9360659042484466aafea62b444b38f6 Mon Sep 17 00:00:00 2001 From: Gabriel Grant Date: Sat, 7 Dec 2024 10:52:50 -0500 Subject: [PATCH 089/175] Fix Preview 2 WIT definitions link in introduction.md --- component-model/src/introduction.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/component-model/src/introduction.md b/component-model/src/introduction.md index 33ba885..ca1b113 100644 --- a/component-model/src/introduction.md +++ b/component-model/src/introduction.md @@ -31,7 +31,7 @@ The WebAssembly Component Model is a broad-reaching architecture for building in ## Status -[WASI 0.2.0 was released](https://github.com/WebAssembly/WASI/pull/577) Jan 25, 2024, providing a stable release of WASI and the component model. This [is a stable set of WIT definitions](https://github.com/WebAssembly/WASI/tree/main/preview2) that components can target. WASI proposals will continue to evolve and new ones will be introduced; however, users of the component model can now pin to the stable 0.2.0 release. +[WASI 0.2.0 was released](https://github.com/WebAssembly/WASI/pull/577) Jan 25, 2024, providing a stable release of WASI and the component model. This [is a stable set of WIT definitions](https://github.com/WebAssembly/WASI/tree/main/wasip2) that components can target. WASI proposals will continue to evolve and new ones will be introduced; however, users of the component model can now pin to the stable 0.2.0 release. ## Contributing From b162797c12508d6fca41141c15a2a37c9beb511b Mon Sep 17 00:00:00 2001 From: "maple@max" Date: Sun, 8 Dec 2024 17:05:21 +0800 Subject: [PATCH 090/175] Make the link clickable --- component-model/src/creating-and-consuming/composing.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/component-model/src/creating-and-consuming/composing.md b/component-model/src/creating-and-consuming/composing.md index 57834a7..168cb3f 100644 --- a/component-model/src/creating-and-consuming/composing.md +++ b/component-model/src/creating-and-consuming/composing.md @@ -102,7 +102,7 @@ For an in depth description about how to use the wac tool, you can check out the ## Composing components with a visual interface -You can compose components visually using the builder app at https://wasmbuilder.app/. +You can compose components visually using the builder app at [wasmbuilder.app](https://wasmbuilder.app/). 1. Use the Add Component Button to upload the `.wasm` component files you want to compose. The components appear in the sidebar. From 8beb4d3fb471cddaf02f91ba4023edf33dddde59 Mon Sep 17 00:00:00 2001 From: Liigo Zhuang Date: Wed, 11 Dec 2024 17:13:56 +0800 Subject: [PATCH 091/175] fix a few `wasi:cli` typos --- component-model/src/language-support/rust.md | 4 ++-- component-model/src/tutorial.md | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/component-model/src/language-support/rust.md b/component-model/src/language-support/rust.md index 057c5f2..be090c4 100644 --- a/component-model/src/language-support/rust.md +++ b/component-model/src/language-support/rust.md @@ -194,7 +194,7 @@ As the import is unfulfilled, the `calculator.wasm` component could not run by i ## Creating a command component with `cargo component` -A _command_ is a component with a specific export that allows it to be executed directly by `wasmtime` (or other `wasm:cli` hosts). In Rust terms, it's the equivalent of an application (`bin`) package with a `main` function, instead of a library crate (`lib`) package. +A _command_ is a component with a specific export that allows it to be executed directly by `wasmtime` (or other `wasi:cli` hosts). In Rust terms, it's the equivalent of an application (`bin`) package with a `main` function, instead of a library crate (`lib`) package. To create a command with cargo component, run: @@ -204,7 +204,7 @@ cargo component new Unlike library components, this does _not_ have the `--lib` flag. You will see that the created project is different too: -- It doesn't contain a `.wit` file. `cargo component build` will automatically export the `wasm:cli/run` interface for Rust `bin` packages, and hook it up to `main`. +- It doesn't contain a `.wit` file. `cargo component build` will automatically export the `wasi:cli/run` interface for Rust `bin` packages, and hook it up to `main`. - Because there's no `.wit` file, `Cargo.toml` doesn't contain a `package.metadata.component.target` section. - The Rust file is called `main.rs` instead of `lib.rs`, and contains a `main` function instead of an interface implementation. diff --git a/component-model/src/tutorial.md b/component-model/src/tutorial.md index edc669a..039b57d 100644 --- a/component-model/src/tutorial.md +++ b/component-model/src/tutorial.md @@ -88,7 +88,7 @@ documentation](creating-and-consuming/authoring.md) to create a component that i ## Create a `command` component A _command_ is a component with a specific export that allows it to be executed directly by -`wasmtime` (or other `wasm:cli` hosts). The host expects it to export the [`wasi:cli/run` +`wasmtime` (or other `wasi:cli` hosts). The host expects it to export the [`wasi:cli/run` interface](https://github.com/WebAssembly/wasi-cli/blob/main/wit/run.wit), which is the equivalent of the `main` function to WASI. `cargo-component` will automatically resolve a Rust `bin` package with a `main` function to a component with `wasi:cli/run` exported. Scaffold a new Wasm application From 16506d166b650bc5ca510fd8dd71f7915bf33457 Mon Sep 17 00:00:00 2001 From: Levi Zim Date: Mon, 13 Jan 2025 10:02:03 +0800 Subject: [PATCH 092/175] Fix typos in javascript.md Javscript -> JavaScript Javascript -> JavaScript --- .../src/language-support/javascript.md | 50 +++++++++---------- 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/component-model/src/language-support/javascript.md b/component-model/src/language-support/javascript.md index 4f06407..b0640ba 100644 --- a/component-model/src/language-support/javascript.md +++ b/component-model/src/language-support/javascript.md @@ -1,8 +1,8 @@ # JavaScript Tooling -[WebAssembly][mdn-wasm] was originally developed as a technology for running non-Javascript workloads in the browser at near-native speed. +[WebAssembly][mdn-wasm] was originally developed as a technology for running non-JavaScript workloads in the browser at near-native speed. -Javascript WebAssembly component model support is provided primarily by [`jco`](https://github.com/bytecodealliance/jco), a command line tool +JavaScript WebAssembly component model support is provided primarily by [`jco`](https://github.com/bytecodealliance/jco), a command line tool which provides tooling for building WebAssembly components. [Typescript][ts] can *also* be used, given that it is transpiled to JS first by relevant tooling (`tsc`). @@ -35,13 +35,13 @@ npm install -g @bytecodealliance/componentize-js @bytecodealliance/jco [jco]: https://github.com/bytecodealliance/jco [componentize-js]: https://github.com/bytecodealliance/ComponentizeJS -## Overview of Building a Component with Javascript +## Overview of Building a Component with JavaScript -Building a WebAssembly component with Javascript often consists of: +Building a WebAssembly component with JavaScript often consists of: 1. Determining which interface our functionality will target (i.e. a [WebAssembly Interface Types ("WIT")][wit] world) -2. Writing Javscript that satisfies the interface -3. Packaging our project Javscript as WebAssembly (whether for use in WebAssembly runtimes, other JS projects, or the browser) +2. Writing JavaScript that satisfies the interface +3. Packaging our project JavaScript as WebAssembly (whether for use in WebAssembly runtimes, other JS projects, or the browser) [WebAssembly Interface Types ("WIT")][wit] is a featureful Interface Definition Language ("IDL") for defining functionality, but most of the time, you shouldn't need to write WIT from scratch. Often, it's sufficient to download a pre-existing interface that defines what @@ -78,13 +78,13 @@ export const add = (x, y) => { ``` > [!WARNING] -> When building your Javascript project, ensure to set the `"type":"module"` option in `package.json`, -> as `jco` works exclusively with Javascript modules. +> When building your JavaScript project, ensure to set the `"type":"module"` option in `package.json`, +> as `jco` works exclusively with JavaScript modules. -In the code above, the `example` world is analogous to the Javascript module itself, with the exported `add` function +In the code above, the `example` world is analogous to the JavaScript module itself, with the exported `add` function mirroring `add` function `export`ed in the WIT. -With the WIT and Javascript in place, we can use [`jco`][jco] to create a WebAssembly component from the JS module, using `jco componentize`. +With the WIT and JavaScript in place, we can use [`jco`][jco] to create a WebAssembly component from the JS module, using `jco componentize`. Our component is *so simple* (reminiscent of [Core WebAssembly][wasm-core], which deals primarily in numeric values) that we're actually *not using* any of the [WebAssembly System Interface][wasi] -- this means that we can `--disable` it when we invoke `jco componentize` @@ -143,7 +143,7 @@ instance .context("Failed to call add function") ``` -A quick reminder on the power and new capabilities afforded by WebAssembly -- we've written, loaded, instantiated and executed Javascript from Rust with a strict interface, without the need for FFI, subprocesses or a network call. +A quick reminder on the power and new capabilities afforded by WebAssembly -- we've written, loaded, instantiated and executed JavaScript from Rust with a strict interface, without the need for FFI, subprocesses or a network call. [rust-toolchain]: https://www.rust-lang.org/tools/install [example-host]: https://github.com/bytecodealliance/component-docs/tree/main/component-model/examples/example-host @@ -156,10 +156,10 @@ A quick reminder on the power and new capabilities afforded by WebAssembly -- we ## Running a Component from JavaScript Applications (including the Browser) JavaScript runtimes available in browsers cannot yet execute WebAssembly components, so WebAssembly components -(Javascript or otherwise) must be "transpiled" into a JavaScript wrapper and one or more [WebAssembly core modules][wasm-core-module] +(JavaScript or otherwise) must be "transpiled" into a JavaScript wrapper and one or more [WebAssembly core modules][wasm-core-module] which *can* be run by in-browser WebAssembly runtimes. -Given an existing WebAssembly component (e.g. `add.wasm` which implements the [`example` world][wit-example-world]), we can "transpile" the component into runnable Javscript by using `jco tranpsile`: +Given an existing WebAssembly component (e.g. `add.wasm` which implements the [`example` world][wit-example-world]), we can "transpile" the component into runnable JavaScript by using `jco tranpsile`: ```console jco transpile add.wasm -o dist @@ -182,7 +182,7 @@ You should see output similar to the following: Thanks to `jco` transpilation, you can import the resulting `dist/add.js` file and run it from any JavaScript application -using a runtime that supports the [core WebAssembly specification][core-wasm] as implemented for Javascript. +using a runtime that supports the [core WebAssembly specification][core-wasm] as implemented for JavaScript. To use this component from [NodeJS][nodejs], you can write code like the following: @@ -192,7 +192,7 @@ import { add } from "./dist/add.js"; console.log("1 + 2 = " + add(1, 2)); ``` -You can execute the Javascript module with `node` directly: +You can execute the JavaScript module with `node` directly: ```console node run.js @@ -207,7 +207,7 @@ You should see output like the following: This is directly comparable to the Rust host code mentioned in the previous section. Here, we are able to use NodeJS as a host for running WebAssembly, thanks to `jco`'s ability to transpile components. -With `jco transpile` any WebAssembly binary (compiled from any language) can be run in Javascript natively. +With `jco transpile` any WebAssembly binary (compiled from any language) can be run in JavaScript natively. [wasm-core-module]: https://webassembly.github.io/spec/core/binary/modules.html [core-wasm]: https://webassembly.github.io/spec/core/ @@ -270,7 +270,7 @@ OK now let's see what the JS code looks like to *implement* the `component` worl */ /** - * This Javascript will be interpreted by `jco` and turned into a + * This JavaScript will be interpreted by `jco` and turned into a * WebAssembly binary with a single export (this `reverse` function). */ function reverseString(s) { @@ -278,7 +278,7 @@ function reverseString(s) { } /** - * The Javascript export below represents the export of the `reverse` interface, + * The JavaScript export below represents the export of the `reverse` interface, * which which contains `reverse-string` as it's primary exported function. */ export const reverse = { @@ -312,7 +312,7 @@ You should see output like the following: OK Successfully written string-reverse.wasm. ``` -Now that we have a WebAssembly binary, we can *also* use `jco` to run it in a native Javascript context by *transpiling* the WebAsssembly binary (which could have come from anywhere!) to a Javascript module. +Now that we have a WebAssembly binary, we can *also* use `jco` to run it in a native JavaScript context by *transpiling* the WebAsssembly binary (which could have come from anywhere!) to a JavaScript module. ```console npx jco transpile string-reverse.wasm -o dist/transpiled @@ -332,7 +332,7 @@ You should see the following output: > [!TIP] > A gentle reminder that, transpilation *does* produce [Typescript declaration file][ts-decl-file], for use in Typescript projects. -Now that we have a transpiled module, we can run it from any Javascript context that supports core WebAssembly (whether NodeJS or the browser). +Now that we have a transpiled module, we can run it from any JavaScript context that supports core WebAssembly (whether NodeJS or the browser). For NodeJS, we can use code like the following: @@ -356,9 +356,9 @@ reverseString('!dlrow olleh') = hello world! While it's somewhat redundant in this context, what we've done from NodeJS demonstrates the usefulness of WebAssembly and the `jco` toolchain. With the help of `jco`, we have: -- Compiled Javascript to a WebAssembly module (`jco compile`), adhering to an interface defined via WIT +- Compiled JavaScript to a WebAssembly module (`jco compile`), adhering to an interface defined via WIT - Converted the compiled WebAssembly module (which could be from *any* language) to a module that can be used from any compliant JS runtime (`jco transpile`) -- Run the transpiled WebAssembly component from a Javascript native runtime (NodeJS) +- Run the transpiled WebAssembly component from a JavaScript native runtime (NodeJS) [repo]: https://github.com/bytecodealliance/component-docs [jco-examples-string-reverse]: https://github.com/bytecodealliance/jco/tree/main/examples/components/string-reverse @@ -407,7 +407,7 @@ The `revup` world `import`s (and makes use) of `reverse` in order to `export` (p > [!NOTE] > Functionality is imported from the `interface`, *not* the `world`. `world`s can be included/used, but the syntax is slightly different for that. -The Javascript to make this work ([`string-reverse-upper.mjs` in `jco/examples`](https://github.com/bytecodealliance/jco/blob/main/examples/components/string-reverse-upper/string-reverse-upper.mjs)) looks like this: +The JavaScript to make this work ([`string-reverse-upper.mjs` in `jco/examples`](https://github.com/bytecodealliance/jco/blob/main/examples/components/string-reverse-upper/string-reverse-upper.mjs)) looks like this: ```js /** @@ -423,7 +423,7 @@ The Javascript to make this work ([`string-reverse-upper.mjs` in `jco/examples`] import { reverseString } from 'example:string-reverse/reverse@0.1.0'; /** - * The Javascript export below represents the export of the `reversed-upper` interface, + * The JavaScript export below represents the export of the `reversed-upper` interface, * which which contains `revup` as it's primary exported function. */ export const reversedUpper = { @@ -495,7 +495,7 @@ world root { It's as-if we never imported any functionality at all -- the functionality present in `string-reverse.wasm` has been *merged into* `string-reverse-upper.wasm`, and it now simply `export`s the advanced functionality. -We can run this completed component with in any WebAssembly-capable native Javascript environment by using a the transpiled result: +We can run this completed component with in any WebAssembly-capable native JavaScript environment by using a the transpiled result: ```console npx jco transpile string-reverse-upper.wasm -o dist/transpiled From de2c0954436dc92bd00b87d56bbd6351440ccb72 Mon Sep 17 00:00:00 2001 From: Kate Goldenring Date: Mon, 13 Jan 2025 16:38:33 -0800 Subject: [PATCH 093/175] Clarify add implementation in Rust guide Signed-off-by: Kate Goldenring --- component-model/src/language-support/rust.md | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/component-model/src/language-support/rust.md b/component-model/src/language-support/rust.md index be090c4..263bbaa 100644 --- a/component-model/src/language-support/rust.md +++ b/component-model/src/language-support/rust.md @@ -25,20 +25,16 @@ $ cargo component new add --lib && cd add Note that `cargo component` generates the necessary bindings as a module called `bindings`. Next, update `wit/world.wit` to match `add.wit` and modify the component package reference to change the -package name to `example`. The `component` section of `Cargo.toml` should look like the following: +package name to `example:component`. The `component` section of `Cargo.toml` should look like the following: ```toml [package.metadata.component] -package = "component:example" +package = "example:component" ``` -`cargo component` will generate bindings for the world specified in a package's `Cargo.toml`. In particular, it will create a `Guest` trait that a component should implement. Since our `example` world has no interfaces, the trait lives directly under the bindings module. Implement the `Guest` trait in `add/src/lib.rs` such that it satisfied the `example` world, adding an `add` function. It should look similar to the following: +`cargo component` will generate bindings for the world specified in a package's `Cargo.toml`. In particular, it will create a `Guest` trait that a component should implement. Since our `example` world has no interfaces, the trait lives directly under the bindings module. Implement the `Guest` trait in `add/src/lib.rs` such that it satisfies the `example` world, adding an `add` function: ```rs -mod bindings; - -use bindings::Guest; - struct Component; impl Guest for Component { From b9f2d2108776a1c962b8d269c4c1b2b3e0999f65 Mon Sep 17 00:00:00 2001 From: Joel Dice Date: Tue, 14 Jan 2025 14:07:46 -0700 Subject: [PATCH 094/175] Tweak python.md to indicate optional `wasmtime-py` compatibility --- component-model/src/language-support/python.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/component-model/src/language-support/python.md b/component-model/src/language-support/python.md index a9a925f..63df7a0 100644 --- a/component-model/src/language-support/python.md +++ b/component-model/src/language-support/python.md @@ -100,7 +100,7 @@ Component built successfully Wasm components can also be invoked from Python applications. This walks through using tooling to call the [`app.wasm` component from the examples](../../examples/example-host/add.wasm). -> `wasmtime-py` does not currently support running components build with `componentize-py`. This is because `wasmtime-py` does not yet support [resources](../design/wit.md#resources), which components built with `componentize-py` always use, since `componentize-py` unconditionally imports most of the `wasi:cli` world. +> `wasmtime-py` is only able to run components built with `componentize-py` when the `--stub-wasi` option is used at build time. This is because `wasmtime-py` does not yet support [resources](../design/wit.md#resources), which components built with `componentize-py` use by default by generating components which import most of the `wasi:cli` world. See [this example](https://github.com/bytecodealliance/componentize-py/tree/main/examples/sandbox) of using the `--stub-wasi` option to generate a `wasmtime-py`-compatible component. First, install [Python 3.11 or later](https://www.python.org/) and [pip](https://pypi.org/project/pip/) if you don't already have them. Then, install [`wasmtime-py`](https://github.com/bytecodealliance/wasmtime-py): From 50f26f3ed0b733e15cba7f6f22854c98f8237bbe Mon Sep 17 00:00:00 2001 From: Joel Dice Date: Wed, 15 Jan 2025 07:31:58 -0700 Subject: [PATCH 095/175] remove redundant wording from python.md This is a follow up to https://github.com/bytecodealliance/component-docs/pull/190, which included some redundant wording. Signed-off-by: Joel Dice --- component-model/src/language-support/python.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/component-model/src/language-support/python.md b/component-model/src/language-support/python.md index 63df7a0..b59b430 100644 --- a/component-model/src/language-support/python.md +++ b/component-model/src/language-support/python.md @@ -100,7 +100,7 @@ Component built successfully Wasm components can also be invoked from Python applications. This walks through using tooling to call the [`app.wasm` component from the examples](../../examples/example-host/add.wasm). -> `wasmtime-py` is only able to run components built with `componentize-py` when the `--stub-wasi` option is used at build time. This is because `wasmtime-py` does not yet support [resources](../design/wit.md#resources), which components built with `componentize-py` use by default by generating components which import most of the `wasi:cli` world. See [this example](https://github.com/bytecodealliance/componentize-py/tree/main/examples/sandbox) of using the `--stub-wasi` option to generate a `wasmtime-py`-compatible component. +> `wasmtime-py` is only able to run components built with `componentize-py` when the `--stub-wasi` option is used at build time. This is because `wasmtime-py` does not yet support [resources](../design/wit.md#resources), and `componentize-py` by default generates components which use resources from the `wasi:cli` world. See [this example](https://github.com/bytecodealliance/componentize-py/tree/main/examples/sandbox) of using the `--stub-wasi` option to generate a `wasmtime-py`-compatible component. First, install [Python 3.11 or later](https://www.python.org/) and [pip](https://pypi.org/project/pip/) if you don't already have them. Then, install [`wasmtime-py`](https://github.com/bytecodealliance/wasmtime-py): From a33ec1b9069fbb35a2362df903fb807ac2fda285 Mon Sep 17 00:00:00 2001 From: Lorenzo Fontoura Date: Fri, 31 Jan 2025 01:45:24 +1000 Subject: [PATCH 096/175] docs: fix go command --- component-model/src/language-support/go.md | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/component-model/src/language-support/go.md b/component-model/src/language-support/go.md index 56f9cf7..c99c46c 100644 --- a/component-model/src/language-support/go.md +++ b/component-model/src/language-support/go.md @@ -40,13 +40,6 @@ $ wkg wit build WIT package written to docs:adder@0.1.0.wasm ``` -The `docs:adder@0.1.0.wasm` file is a Wasm encoding of the WIT package. Next, we can generate the bindings for it: - -```console -$ go get go.bytecodealliance.org/cmd/wit-bindgen-go -$ go run go.bytecodealliance.org/cmd/wit-bindgen-go generate -o internal/ ./docs:adder@0.1.0.wasm -``` - Now, create your Go project: ```console @@ -54,7 +47,7 @@ $ mkdir add && cd add $ go mod init example.com ``` -Next, we can generate the bindings for the `add.wit` file: +Next, we can generate the bindings for the Wasm component: ```console $ go get go.bytecodealliance.org/cmd/wit-bindgen-go From f6f7dc5565ea9429587fdf3615ba30a1484f1625 Mon Sep 17 00:00:00 2001 From: Lorenzo Fontoura Date: Fri, 31 Jan 2025 02:00:59 +1000 Subject: [PATCH 097/175] fix: build command --- component-model/src/language-support/go.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/component-model/src/language-support/go.md b/component-model/src/language-support/go.md index c99c46c..79962f7 100644 --- a/component-model/src/language-support/go.md +++ b/component-model/src/language-support/go.md @@ -97,11 +97,11 @@ The `adder.exports.go` file contains the exported functions that need to be impl package main import ( - "example.com/internal/example/component/example" + "example.com/internal/docs/adder/adder" ) func init() { - example.Exports.Add = func(x int32, y int32) int32 { + adder.Exports.Add = func(x int32, y int32) int32 { return x + y } } @@ -120,7 +120,7 @@ We can build our component using TinyGo by specifying the wit-package to be `add Under the hood, TinyGo invokes `wasm-tools` to embed the WIT file to the module and componentize it. ```console -$ tinygo build -target=wasip2 -o add.wasm --wit-package add.wit --wit-world adder main.go +$ tinygo build -target=wasip2 -o add.wasm --wit-package docs:adder@0.1.0.wasm --wit-world adder main.go ``` We now have an add component that satisfies our `adder` world, exporting the `add` function, which From b1b0e617d75c313e96d9bbb9bf43f0b11f97309b Mon Sep 17 00:00:00 2001 From: Pedro Rocha Date: Fri, 28 Feb 2025 08:37:37 +0100 Subject: [PATCH 098/175] Update the tutorial to improve clarity --- component-model/src/tutorial.md | 35 +++++++++++++-------------------- 1 file changed, 14 insertions(+), 21 deletions(-) diff --git a/component-model/src/tutorial.md b/component-model/src/tutorial.md index 039b57d..e01104b 100644 --- a/component-model/src/tutorial.md +++ b/component-model/src/tutorial.md @@ -16,11 +16,7 @@ Wasm components, we will compose them into a single runnable component, and test ## The calculator interface For tutorial purposes, we are going to put our "calculator engine" and "addition operation" interfaces into two separate WIT packages, each containing one WIT file. This may seem excessive, but the reason is to illustrate real-world use cases where components come from different authors and packages. -These files can be found in the component book repository in the [`wit` directory](https://github.com/bytecodealliance/component-docs/tree/main/component-model/examples/tutorial/wit) under `wit/adder/world.wit` and `wit/calculator/world.wit`. These files define: - -* A world describing an world that exports the "add" interface. Again, components such as the calculator can call it when - they need to add numbers. - +These files can be found in the component book repository in the [`wit` directory](https://github.com/bytecodealliance/component-docs/tree/main/component-model/examples/tutorial/wit) under `wit/adder/world.wit` and `wit/calculator/world.wit`: ```wit // wit/adder/world.wit package docs:adder@0.1.0; @@ -32,23 +28,7 @@ These files can be found in the component book repository in the [`wit` director world adder { export add; } - ``` - -* An interface for the calculator itself. We'll use this later to carry out calculations. It - contains an evaluate function, and an enum that delineates the operations that can be involved in - a calculation. In this tutorial, the only operation is `add`. -* Interfaces for the various operations the calculator might need to carry out as part of a - calculation. For the tutorial, again, the only import we define is for the "add" operation from - the "docs:adder" world defined previously. -* A world describing the calculator component. This world exports the calculator interface, meaning - that other components can call it to perform calculations. It imports the operation interfaces - (such as "add"), meaning it relies on other components to perform those operations. -* A world describing the "primary" app component, which imports the "calculate" interface. This is - the component will take in command line arguments and pass them to the "eval-expression" function - of the calculator component. - - ```wit // wit/calculator/world.wit package docs:calculator@0.1.0; @@ -70,6 +50,19 @@ These files can be found in the component book repository in the [`wit` director ``` +These files define: +* A world `adder` that exports the `add` interface. Again, components such as the calculator can call it when + they need to add numbers. +* A world describing the calculator component. This world exports the calculator interface, meaning + that other components can call it to perform calculations. It imports the operation interfaces + (such as "add"), meaning it relies on other components to perform those operations. +* An interface `calculate` that contains an evaluate function, and an enum that delineates + the operations that can be involved in a calculation. In this tutorial, the only operation is `add`. +* A world `app` describing the "primary" app component, which imports the `calculate` interface. + This component will take in command line arguments and pass them to the `eval-expression` function + of the calculator component. + + ## Create an `add` component Reference the [language guide](language-support.md) and [authoring components From 8527c6fcd1e48360a1aeaa670da85b2e162e2a5d Mon Sep 17 00:00:00 2001 From: Pedro Rocha Date: Fri, 28 Feb 2025 08:58:38 +0100 Subject: [PATCH 099/175] Update tutorial.md to improve clarity --- component-model/src/tutorial.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/component-model/src/tutorial.md b/component-model/src/tutorial.md index e01104b..5d4a951 100644 --- a/component-model/src/tutorial.md +++ b/component-model/src/tutorial.md @@ -53,10 +53,10 @@ These files can be found in the component book repository in the [`wit` director These files define: * A world `adder` that exports the `add` interface. Again, components such as the calculator can call it when they need to add numbers. -* A world describing the calculator component. This world exports the calculator interface, meaning +* A world `calculator` describing the calculator component. This world exports the calculator interface, meaning that other components can call it to perform calculations. It imports the operation interfaces - (such as "add"), meaning it relies on other components to perform those operations. -* An interface `calculate` that contains an evaluate function, and an enum that delineates + (such as `add`), meaning it relies on other components to perform those operations. +* An interface `calculate` that contains an evaluate function and an enum that delineates the operations that can be involved in a calculation. In this tutorial, the only operation is `add`. * A world `app` describing the "primary" app component, which imports the `calculate` interface. This component will take in command line arguments and pass them to the `eval-expression` function From 5ccd0c623517ab14e70211ebedffb2bf93a0738c Mon Sep 17 00:00:00 2001 From: Mendy Berger <12537668+MendyBerger@users.noreply.github.com> Date: Mon, 10 Mar 2025 12:19:09 -0400 Subject: [PATCH 100/175] componentize-py is now part of the Bytecode Alliance --- component-model/src/language-support/python.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/component-model/src/language-support/python.md b/component-model/src/language-support/python.md index b59b430..a651cff 100644 --- a/component-model/src/language-support/python.md +++ b/component-model/src/language-support/python.md @@ -2,7 +2,7 @@ ## Building a Component with `componentize-py` -[`componentize-py`](https://github.com/dicej/componentize-py) is a tool that converts a Python +[`componentize-py`](https://github.com/bytecodealliance/componentize-py) is a tool that converts a Python application to a WebAssembly component. First, install [Python 3.10 or later](https://www.python.org/) and [pip](https://pypi.org/project/pip/) if you don't already have them. Then, install `componentize-py`: From bd1c2b685e931e3af9857e8953a06bda3ea34b83 Mon Sep 17 00:00:00 2001 From: itowlson Date: Tue, 11 Mar 2025 07:46:56 +1300 Subject: [PATCH 101/175] GitHub retired our perfectly good artifact action Signed-off-by: itowlson --- .github/workflows/mdbook.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/mdbook.yml b/.github/workflows/mdbook.yml index 85ca8da..df97986 100644 --- a/.github/workflows/mdbook.yml +++ b/.github/workflows/mdbook.yml @@ -55,7 +55,7 @@ jobs: python3 ../scripts/generate_sitemap.py --domain "component-model.bytecodealliance.org" --higher-priority "design" --output-path book/sitemap.xml cd .. - name: Upload artifact - uses: actions/upload-pages-artifact@v2 + uses: actions/upload-pages-artifact@v4 with: path: ./component-model/book From 0395613d81b9337da4b853a74099f619e78e26c1 Mon Sep 17 00:00:00 2001 From: itowlson Date: Tue, 11 Mar 2025 08:31:39 +1300 Subject: [PATCH 102/175] Update artifact action maybe correctly this time Signed-off-by: itowlson --- .github/workflows/mdbook.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/mdbook.yml b/.github/workflows/mdbook.yml index df97986..72692d4 100644 --- a/.github/workflows/mdbook.yml +++ b/.github/workflows/mdbook.yml @@ -55,7 +55,7 @@ jobs: python3 ../scripts/generate_sitemap.py --domain "component-model.bytecodealliance.org" --higher-priority "design" --output-path book/sitemap.xml cd .. - name: Upload artifact - uses: actions/upload-pages-artifact@v4 + uses: actions/upload-pages-artifact@v3 with: path: ./component-model/book From b34ab3d1d1ccbf3444d4063d69037d9a9d085ba6 Mon Sep 17 00:00:00 2001 From: itowlson Date: Tue, 11 Mar 2025 09:52:43 +1300 Subject: [PATCH 103/175] Bump deploy-pages action Signed-off-by: itowlson --- .github/workflows/mdbook.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/mdbook.yml b/.github/workflows/mdbook.yml index 72692d4..28379f5 100644 --- a/.github/workflows/mdbook.yml +++ b/.github/workflows/mdbook.yml @@ -70,4 +70,4 @@ jobs: steps: - name: Deploy to GitHub Pages id: deployment - uses: actions/deploy-pages@v2 + uses: actions/deploy-pages@v4 From 92a5585a259f045642e5073aec6f7403c631753b Mon Sep 17 00:00:00 2001 From: Sean Isom Date: Wed, 12 Mar 2025 15:18:29 -0400 Subject: [PATCH 104/175] Fix C example/tutorial - wit-bindgen and wasmtime changes --- component-model/examples/example-host/add.c | 9 ++++ .../examples/example-host/src/async_add.rs | 6 ++- .../examples/example-host/src/sync_add.rs | 7 ++- component-model/src/language-support/c.md | 51 ++++++++++++------- 4 files changed, 51 insertions(+), 22 deletions(-) create mode 100644 component-model/examples/example-host/add.c diff --git a/component-model/examples/example-host/add.c b/component-model/examples/example-host/add.c new file mode 100644 index 0000000..a5acd47 --- /dev/null +++ b/component-model/examples/example-host/add.c @@ -0,0 +1,9 @@ +#include "example.h" +#include + +int32_t exports_example_add(int32_t x, int32_t y) +{ + int32_t result = x + y; + printf("%d", result); + return result; +} \ No newline at end of file diff --git a/component-model/examples/example-host/src/async_add.rs b/component-model/examples/example-host/src/async_add.rs index b24ee79..eb8b063 100644 --- a/component-model/examples/example-host/src/async_add.rs +++ b/component-model/examples/example-host/src/async_add.rs @@ -21,8 +21,10 @@ pub async fn add(path: PathBuf, x: i32, y: i32) -> wasmtime::Result { let wasi_view = States::new(); let mut store = Store::new(&engine, wasi_view); // Construct linker for linking interfaces. - // For this simple adder component, no need to link additional interfaces. - let linker = Linker::new(&engine); + // For this simple adder component, no need to manually link additional interfaces. + let mut linker = Linker::new(&engine); + // Add wasi exports to linker to support io interfaces + wasmtime_wasi::add_to_linker_async(&mut linker)?; let instance = Example::instantiate_async(&mut store, &component, &linker) .await .context("Failed to instantiate the example world")?; diff --git a/component-model/examples/example-host/src/sync_add.rs b/component-model/examples/example-host/src/sync_add.rs index 1fd93a0..95885a8 100644 --- a/component-model/examples/example-host/src/sync_add.rs +++ b/component-model/examples/example-host/src/sync_add.rs @@ -3,6 +3,7 @@ use anyhow::Context; use std::path::PathBuf; use wasmtime::component::{bindgen, Component, Linker}; use wasmtime::{Engine, Store}; +use wasmtime_wasi; bindgen!({ path: "add.wit", @@ -19,8 +20,10 @@ pub fn add(path: PathBuf, x: i32, y: i32) -> wasmtime::Result { let wasi_view = States::new(); let mut store = Store::new(&engine, wasi_view); // Construct linker for linking interfaces. - // For this simple adder component, no need to link additional interfaces. - let linker = Linker::new(&engine); + // For this simple adder component, no need to manually link additional interfaces. + let mut linker = Linker::new(&engine); + // Add wasi exports to linker to support io interfaces + wasmtime_wasi::add_to_linker_sync(&mut linker).expect("Coould not add wasi to linker"); let instance = Example::instantiate(&mut store, &component, &linker) .context("Failed to instantiate the example world")?; instance diff --git a/component-model/src/language-support/c.md b/component-model/src/language-support/c.md index b84cfc9..57274e5 100644 --- a/component-model/src/language-support/c.md +++ b/component-model/src/language-support/c.md @@ -10,7 +10,7 @@ First, install the CLI for [`wit-bindgen`](https://github.com/bytecodealliance/w The WASI SDK will install a local version of `clang` configured with a wasi-sysroot. Follow [these instructions](https://github.com/WebAssembly/wasi-sdk#use) to configure it for use. Note that you can also use your installed system or emscripten `clang` by building with `--target=wasm32-wasi` but you will need some artifacts from WASI SDK to enable and link that build target (more information is available in WASI SDK's docs). -Start by generating a C skeleton from `wit-bindgen` using the [sample `add.wit` file](../../examples/example-host/add.wit): +Start by generating a C skeleton from `wit-bindgen` using the [sample `add.wit` file](https://github.com/bytecodealliance/component-docs/tree/main/component-model/examples/example-host/add.wit): ```sh >wit-bindgen c add.wit Generating "example.c" @@ -18,13 +18,13 @@ Generating "example.h" Generating "example_component_type.o" ``` -This has generated several files - an `example.h` (based on the name of your `world`) with the prototype of the `add` function - `int32_t example_add(int32_t x, int32_t y);`, as well as some generated code in `example.c` that interfaces with the component model ABI to call your function. Additionally, `example_component_type.o` contains object code referenced in `example.c` from an `extern` that must be linked via clang. +This has generated several files - an `example.h` (based on the name of your `world`) with the prototype of the `add` function (prefixed by `exports_`) - `int32_t exports_example_add(int32_t x, int32_t y);`, as well as some generated code in `example.c` that interfaces with the component model ABI to call your function. Additionally, `example_component_type.o` contains object code referenced in `example.c` from an `extern` that must be linked via clang. Next, create an `add.c` that implements your function defined in `example.h`: ```c #include "example.h" -int32_t example_add(int32_t x, int32_t y) +int32_t exports_example_add(int32_t x, int32_t y) { return x + y; } @@ -49,7 +49,7 @@ For example, modifying the above to reference `printf()` would compile: #include "example.h" #include -int32_t example_add(int32_t x, int32_t y) +int32_t exports_example_add(int32_t x, int32_t y) { int32_t result = x + y; printf("%d", result); @@ -81,22 +81,37 @@ Finally, you can inspect the embedded wit to see your component (including any W package root:component; world root { - import wasi:io/error@0.2.0; - import wasi:io/streams@0.2.0; - import wasi:cli/stdin@0.2.0; - import wasi:cli/stdout@0.2.0; - import wasi:cli/stderr@0.2.0; - import wasi:cli/terminal-input@0.2.0; - import wasi:cli/terminal-output@0.2.0; - import wasi:cli/terminal-stdin@0.2.0; - import wasi:cli/terminal-stdout@0.2.0; - import wasi:cli/terminal-stderr@0.2.0; - import wasi:clocks/wall-clock@0.2.0; - import wasi:filesystem/types@0.2.0; - import wasi:filesystem/preopens@0.2.0; + import wasi:io/error@0.2.2; + import wasi:io/streams@0.2.2; + import wasi:cli/stdin@0.2.2; + import wasi:cli/stdout@0.2.2; + import wasi:cli/stderr@0.2.2; + import wasi:cli/terminal-input@0.2.2; + import wasi:cli/terminal-output@0.2.2; + import wasi:cli/terminal-stdin@0.2.2; + import wasi:cli/terminal-stdout@0.2.2; + import wasi:cli/terminal-stderr@0.2.2; + import wasi:clocks/wall-clock@0.2.2; + import wasi:filesystem/types@0.2.2; + import wasi:filesystem/preopens@0.2.2; export add: func(x: s32, y: s32) -> s32; } +... +``` + +You must use the `wasi_snapshot_preview1.wasm` from the same version of wasmtime that the host is using to ensure the WASI interface versions match. Additionally, the host must explicitly [add WASI to the linker](https://docs.wasmtime.dev/api/wasmtime_wasi/fn.add_to_linker_sync.html) to run the app. If these are not configured correctly, you may see errors like the following: +```sh +cargo run --release -- 1 2 add-component.wasm + Compiling example-host v0.1.0 (/Users/sean/code/component-docs/component-model/examples/example-host) + Finished `release` profile [optimized] target(s) in 7.85s + Running `target/release/example-host 1 2 add-component.wasm` +Error: Failed to instantiate the example world + +Caused by: + 0: component imports instance `wasi:io/error@0.2.2`, but a matching implementation was not found in the linker + 1: instance export `error` has the wrong type + 2: resource implementation is missing ``` ### Running a Component from C/C++ Applications @@ -105,4 +120,4 @@ It is not yet possible to run a Component using the `wasmtime` `c-api` - [see th However, C/C++ language guest components can be composed with components written in any other language and run by their toolchains, or even composed with a C language command component and run via the `wasmtime` CLI or any other host. -See the [Rust Tooling guide](../language-support/rust.md#running-a-component-from-rust-applications) for instructions on how to run this component from the Rust `example-host`. +See the [Rust Tooling guide](../language-support/rust.md#running-a-component-from-rust-applications) for instructions on how to run this component from the Rust `example-host` (replacing the path to `add.wasm` with your `add-component` above). From 145b1c40d28fe1ccf943d479109ba13eac29a1e4 Mon Sep 17 00:00:00 2001 From: Sean Isom Date: Wed, 12 Mar 2025 15:19:52 -0400 Subject: [PATCH 105/175] Remove example file --- component-model/examples/example-host/add.c | 9 --------- 1 file changed, 9 deletions(-) delete mode 100644 component-model/examples/example-host/add.c diff --git a/component-model/examples/example-host/add.c b/component-model/examples/example-host/add.c deleted file mode 100644 index a5acd47..0000000 --- a/component-model/examples/example-host/add.c +++ /dev/null @@ -1,9 +0,0 @@ -#include "example.h" -#include - -int32_t exports_example_add(int32_t x, int32_t y) -{ - int32_t result = x + y; - printf("%d", result); - return result; -} \ No newline at end of file From aaecec5d30a7a2d7d3df562ceb2eb14bde98731a Mon Sep 17 00:00:00 2001 From: Sean Isom Date: Wed, 12 Mar 2025 18:10:18 -0700 Subject: [PATCH 106/175] Fix typo Co-authored-by: Kate Goldenring --- component-model/examples/example-host/src/sync_add.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/component-model/examples/example-host/src/sync_add.rs b/component-model/examples/example-host/src/sync_add.rs index 95885a8..f67c151 100644 --- a/component-model/examples/example-host/src/sync_add.rs +++ b/component-model/examples/example-host/src/sync_add.rs @@ -23,7 +23,7 @@ pub fn add(path: PathBuf, x: i32, y: i32) -> wasmtime::Result { // For this simple adder component, no need to manually link additional interfaces. let mut linker = Linker::new(&engine); // Add wasi exports to linker to support io interfaces - wasmtime_wasi::add_to_linker_sync(&mut linker).expect("Coould not add wasi to linker"); + wasmtime_wasi::add_to_linker_sync(&mut linker).expect("Could not add wasi to linker"); let instance = Example::instantiate(&mut store, &component, &linker) .context("Failed to instantiate the example world")?; instance From 3025edf97ba25636eb201d705fcb020b8710e6f5 Mon Sep 17 00:00:00 2001 From: Mendy Berger <12537668+MendyBerger@users.noreply.github.com> Date: Sat, 15 Mar 2025 23:19:33 -0400 Subject: [PATCH 107/175] C# example - don't confuse int/s32 with uint/u32 --- component-model/src/language-support/csharp.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/component-model/src/language-support/csharp.md b/component-model/src/language-support/csharp.md index 925022e..370a7b6 100644 --- a/component-model/src/language-support/csharp.md +++ b/component-model/src/language-support/csharp.md @@ -72,7 +72,7 @@ with an `add` function: package example:component; world example { - export add: func(x: s32, y: s32) -> s32; + export add: func(x: u32, y: u32) -> u32; } ``` @@ -94,7 +94,7 @@ namespace ExampleWorld; public class ExampleWorldImpl : IOperations { - public static int Add(int x, int y) + public static uint Add(uint x, uint y) { return x + y; } @@ -144,7 +144,7 @@ namespace ExampleWorld.wit.exports.example.component; public class AddImpl : IAdd { - public static int Add(int x, int y) + public static uint Add(uint x, uint y) { return x + y; } From 2e207e41d470bca94b3f307fb5a9fc77e797bb71 Mon Sep 17 00:00:00 2001 From: Mikhail Katychev Date: Tue, 18 Mar 2025 16:43:43 -0500 Subject: [PATCH 108/175] initial prereqs commit --- .../src/language-support/javascript.md | 4 +- component-model/src/language-support/rust.md | 126 ++++++++++++------ 2 files changed, 86 insertions(+), 44 deletions(-) diff --git a/component-model/src/language-support/javascript.md b/component-model/src/language-support/javascript.md index b0640ba..eb17eec 100644 --- a/component-model/src/language-support/javascript.md +++ b/component-model/src/language-support/javascript.md @@ -216,7 +216,7 @@ With `jco transpile` any WebAssembly binary (compiled from any language) can be Reactor components are WebAssembly components that are long running and meant to be called repeatedly over time. They're analogous to libraries of functionality rather than an executable (a "command" component). -Components expose their interfaces via [WebAssembly Interface Types][docs-wit], hand-in-hand with the [Component Model][docs-component-model] which enables components to use higher level types interchangably. +Components expose their interfaces via [WebAssembly Interface Types][docs-wit], hand-in-hand with the [Component Model][docs-component-model] which enables components to use higher level types interchangeably. [docs-wit]: ../design/wit.md @@ -312,7 +312,7 @@ You should see output like the following: OK Successfully written string-reverse.wasm. ``` -Now that we have a WebAssembly binary, we can *also* use `jco` to run it in a native JavaScript context by *transpiling* the WebAsssembly binary (which could have come from anywhere!) to a JavaScript module. +Now that we have a WebAssembly binary, we can *also* use `jco` to run it in a native JavaScript context by *transpiling* the WebAssembly binary (which could have come from anywhere!) to a JavaScript module. ```console npx jco transpile string-reverse.wasm -o dist/transpiled diff --git a/component-model/src/language-support/rust.md b/component-model/src/language-support/rust.md index 263bbaa..fd3c577 100644 --- a/component-model/src/language-support/rust.md +++ b/component-model/src/language-support/rust.md @@ -1,40 +1,80 @@ # Components in Rust -Rust has first-class support for the component model via [the `cargo component` tool](https://github.com/bytecodealliance/cargo-component). It is a `cargo` subcommand for -creating WebAssembly components using Rust as the component's implementation language. +Rust has first-class support for the component model via the [`cargo-component` +tool](https://github.com/bytecodealliance/cargo-component). We will be using +the `cargo component` subcommand to create WebAssembly components using Rust as +the component's implementation language. -## Installing `cargo component` +> [!NOTE] +> You can find more details about `cargo-component` on [crates.io](https://crates.io/crates/cargo-component). -To install `cargo component`, run: +## Prerequisites +Install [`cargo-component`](https://github.com/bytecodealliance/cargo-component#installation): ```sh -cargo install cargo-component +cargo install --locked cargo-component +``` +Install [`wasm-tools`](https://github.com/bytecodealliance/wasm-tools#installation): +```sh +cargo install --locked wasm-tools +``` +Install [`wasmtime`](https://github.com/bytecodealliance/wasmtime#installation): +```sh +curl https://wasmtime.dev/install.sh -sSf | bash +``` +Clone the [component-docs](https://github.com/bytecodealliance/component-docs) repo: +```sh +git clone https://github.com/bytecodealliance/component-docs ``` - -> You can find more details about `cargo component` in its [crates.io page](https://crates.io/crates/cargo-component). ## Building a Component with `cargo component` -Create a Rust library that implements the `add` function in the [`example` -world](https://github.com/bytecodealliance/component-docs/tree/main/component-model/examples/example-host/add.wit). First scaffold a project: +We will create a component in Rust that implements the `add` function exported +by the [`example:component/example`][example-component] world in the +`example:component` +[package](https://github.com/WebAssembly/component-model/blob/main/design/mvp/WIT.md#package-names). +First `cd` into the `tutorial` directory found in the repo we just cloned: +```sh +cd component-docs/component-model/examples/tutorial +``` + +Now create a new WebAssembly component package called `add`: ```sh $ cargo component new add --lib && cd add ``` -Note that `cargo component` generates the necessary bindings as a module called `bindings`. +> [!NOTE] +> `cargo-component` generates the necessary bindings for us in a module called `bindings` found in `src/bindings.rs`. + +Next change our generated `wit/world.wit` to match `example:component`: +```wit +{{#include ../../examples/example-host/add.wit}} +``` -Next, update `wit/world.wit` to match `add.wit` and modify the component package reference to change the -package name to `example:component`. The `component` section of `Cargo.toml` should look like the following: +Since our WIT file changed names (from `component:add` to +`example:component`) this needs to be reflected in our `Cargo.toml`, +let's change the `package.metadata.component.package` string to `"example:component"`: ```toml [package.metadata.component] package = "example:component" ``` -`cargo component` will generate bindings for the world specified in a package's `Cargo.toml`. In particular, it will create a `Guest` trait that a component should implement. Since our `example` world has no interfaces, the trait lives directly under the bindings module. Implement the `Guest` trait in `add/src/lib.rs` such that it satisfies the `example` world, adding an `add` function: +`cargo component` will generate bindings for the +`example:component/example` world we specified `Cargo.toml`, it will also +create a `Guest` trait that a component can implement. +Since our `example:component/example` world has no interfaces, our +generated `Guest` trait lives at the top of the `bindings` module. + +Implementing the `Guest` trait for our `Component` struct requires us +to match the structure specified by `example:component/example`, we do this by +implementing the `add` method with the equivalent function signature. Our +`src/lib.rs` should look similar to the following: ```rs +mod bindings; + struct Component; impl Guest for Component { @@ -42,18 +82,25 @@ impl Guest for Component { x + y } } + +bindings::export!(Component with_types_in bindings); ``` -Now, use `cargo component` to build the component, being sure to optimize with a release build. +Now, let's build our component with release optimizations: ```sh -$ cargo component build --release +cargo component build --release ``` -You can use `wasm-tools component wit` to output the WIT package of the component: +You can use `wasm-tools` to inspect the WIT package generated by `cargo-component`: ```sh -$ wasm-tools component wit target/wasm32-wasip1/release/add.wasm +wasm-tools component wit target/wasm32-wasip1/release/add.wasm +``` + +The command above should produce the output below: + +```wit package root:component; world root { @@ -64,7 +111,7 @@ world root { ### Running a Component from Rust Applications To verify that our component works, lets run it from a Rust application that knows how to run a -component targeting the [`example` world](https://github.com/bytecodealliance/component-docs/tree/main/component-model/examples/example-host/add.wit). +component targeting the [`example:component/example` world](#example-component). The application uses [`wasmtime`](https://github.com/bytecodealliance/wasmtime) crates to generate Rust bindings, bring in WASI worlds, and execute the component. @@ -77,41 +124,30 @@ $ cargo run --release -- 1 2 ../add/target/wasm32-wasip1/release/add.wasm ## Exporting an interface with `cargo component` -The [sample `add.wit` file](https://github.com/bytecodealliance/component-docs/tree/main/component-model/examples/example-host/add.wit) exports a function. However, you'll often prefer to export an interface, either to comply with an existing specification or to capture a set of functions and types that tend to go together. For example, to implement the following world: +Notice how our `example` world currently exports `add` as a function. It's +often preferable to export an interface rather than a function, either to +comply with an existing specification or to capture several functions and types +at once. +For example, to implement the [`docs:adder/adder`][docs-adder] world: ```wit -package docs:adder@0.1.0; - -interface add { - add: func(a: u32, b: u32) -> u32; -} - -world adder { - export add; -} +{{#include ../../examples/tutorial/wit/adder/world.wit}} ``` you would write the following Rust code: ```rust -mod bindings; -// Separating out the interface puts it in a sub-module -use bindings::exports::docs::adder::add::Guest; - -struct Component; - -impl Guest for Component { - fn add(a: u32, b: u32) -> u32 { - a + b - } -} +{{#include ../../examples/tutorial/adder/src/lib.rs}} ``` ## Importing an interface with `cargo component` The world file (`wit/world.wit`) generated for you by `cargo component new --lib` doesn't specify any imports. -> `cargo component build`, by default, uses the Rust `wasm32-wasi` target, and therefore automatically imports any required WASI interfaces - no action is needed from you to import these. This section is about importing custom WIT interfaces from library components. +> [!NOTE] +> This section is about importing custom WIT interfaces from library components. +> By default, `cargo component build` imports any required [WASI interfaces](https://wasi.dev/interfaces) +> for us without needing to explicitly declare them. If your component consumes other components, you can edit the `world.wit` file to import their interfaces. @@ -139,10 +175,13 @@ Because the `docs:adder` package is in a different project, we must first tell ` ```toml [package.metadata.component.target.dependencies] -"docs:adder" = { path = "../adder/wit" } # directory containing the WIT package +"docs:adder" = { path = "../wit/adder" } # directory containing the WIT package ``` -Note that the path is to the adder project's WIT _directory_, not to the `world.wit` file. A WIT package may be spread across multiple files in the same directory; `cargo component` will look at all the files. +> [!NOTE] +> The path for `docs:adder` is relative to the `wit` _directory_, not to the `world.wit` file. +> +> A WIT package may be spread across multiple files in the same directory; `cargo component` will search them all. ### Calling the import from Rust @@ -534,3 +573,6 @@ If you are hosting a Wasm runtime, you can export a resource from your host for // etc. } ``` + +[example-component]: https://github.com/bytecodealliance/component-docs/tree/main/component-model/examples/example-host/add.wit +[docs-adder]: https://github.com/bytecodealliance/component-docs/tree/main/component-model/examples/tutorial/wit/adder/world.wit From d22b4304800d2f3a34f0c58cc9a3a4d6bd538d19 Mon Sep 17 00:00:00 2001 From: Mikhail Katychev Date: Tue, 18 Mar 2025 16:56:55 -0500 Subject: [PATCH 109/175] added comment to adder/lib.rs --- component-model/examples/tutorial/adder/src/lib.rs | 1 + 1 file changed, 1 insertion(+) diff --git a/component-model/examples/tutorial/adder/src/lib.rs b/component-model/examples/tutorial/adder/src/lib.rs index ecab073..ace111e 100644 --- a/component-model/examples/tutorial/adder/src/lib.rs +++ b/component-model/examples/tutorial/adder/src/lib.rs @@ -1,6 +1,7 @@ #[allow(warnings)] mod bindings; +// Separating out the interface puts it in a sub-module use bindings::exports::docs::adder::add::Guest; struct Component; From 5e559ce2499af361f579376f4efc7d2c60257217 Mon Sep 17 00:00:00 2001 From: Kate Goldenring Date: Wed, 19 Mar 2025 16:59:58 -0700 Subject: [PATCH 110/175] Update distributing components section with docs on wkg Signed-off-by: Kate Goldenring --- component-model/src/SUMMARY.md | 2 +- .../creating-and-consuming/distributing.md | 128 +++++++++++++++++- 2 files changed, 126 insertions(+), 4 deletions(-) diff --git a/component-model/src/SUMMARY.md b/component-model/src/SUMMARY.md index 11b14f6..26fe0bf 100644 --- a/component-model/src/SUMMARY.md +++ b/component-model/src/SUMMARY.md @@ -25,7 +25,7 @@ - [Authoring Components](./creating-and-consuming/authoring.md) - [Composing Components](./creating-and-consuming/composing.md) - [Running Components](./creating-and-consuming/running.md) - - [Distributing Components](./creating-and-consuming/distributing.md) + - [Distributing and Fetching Components and WIT](./creating-and-consuming/distributing.md) - [Tutorial](./tutorial.md) # Runtime Support diff --git a/component-model/src/creating-and-consuming/distributing.md b/component-model/src/creating-and-consuming/distributing.md index 3abdc3c..31fdd5f 100644 --- a/component-model/src/creating-and-consuming/distributing.md +++ b/component-model/src/creating-and-consuming/distributing.md @@ -1,7 +1,129 @@ -# Distributing Components +# Distributing and Fetching Components and WIT Modern applications rely extensively on third-party packages - so extensively that distributing packages is almost an industry in itself. Traditionally, these have been specific to a language. For example, JavaScript developers are used to using packages from NPM, and Rust developers use `crates.io`. Some runtimes support binary distribution and linking, enabling limited cross-language interop; for example, Maven packages can be written in any language that targets the Java runtime. Services like this are variously referred to as "package managers" or "registries." -Publishing and distribution are not defined by the core component model, but will form an important part of the component ecosystem. For example, if you're writing JavaScript, and want to pull in a highly optimised machine learning algorithm written in C and compiled to Wasm, you should be able to invoke it from a registry, just as easily as you would add a NPM package from the NPM registry. +Publishing and distribution are not defined by the core component model, but form important part of the component ecosystem. For example, if you're writing JavaScript, and want to pull in a highly optimised machine learning algorithm written in C and compiled to Wasm, you can pull it from a registry, ideally just as easily as you would add a NPM package from the NPM registry. -Publishing and distribution is a work in progress. The proposed registry protocol is [warg](https://warg.io/), but this is still in development, and there are no public warg registries as yet. You can find more information about the development of the registry protocol [here](https://github.com/bytecodealliance/governance/blob/main/SIGs/SIG-Registries/proposal.md). +You can get involved with improving the packaging and hosting of Wasm components by joining the [Bytecode Alliance Packaging Special Interest Group (SIG)](https://github.com/bytecodealliance/governance/blob/main/SIGs/sig-packaging/proposal.md). + +## Registry Tooling + +The [`wasm-pkg-tools` project](https://github.com/bytecodealliance/wasm-pkg-tools) enables fetching and publishing Wasm Components to OCI or Warg registries. It contains a `wkg` CLI tool that eases distributing and fetching components and WIT packages. The following examples walk through using `wkg`. + +## Distributing Components Using `wkg` + +A component is pushed to an OCI registry using `wkg oci push`. The example below pushes to a GHCR: + +```sh +wkg oci push ghcr.io/user/hello:0.1.0 hello.wasm +``` + +## Fetching Components Using `wkg` + +A component is pulled from a OCI registry using `wkg oci pull`. The example below pulls a component from GHCR: + +```sh +wkg oci pull ghcr.io/user/hello:0.1.0 -o hello.wasm +``` + +## Configuring `wkg` to Fetch WASI Packages + +The `wkg` tool uses a configuration file to store settings with a default location of `$XDG_CONFIG_HOME/wasm-pkg/config.toml`. It must be configured to know which registry to use for which package namespaces. The following is a convenient configuration to ensure you can fetch WASI packages from the [WebAssembly OCI registry](https://github.com/WebAssembly/WASI/pkgs/container/wasi), where the latest interfaces are published upon WASI releases. + +```toml +# $XDG_CONFIG_HOME/wasm-pkg/config.toml +default_registry = "ghcr.io" + +[namespace_registries] +wasi = { registry = "wasi", metadata = { preferredProtocol = "oci", "oci" = {registry = "ghcr.io", namespacePrefix = "webassembly/" } } } + +[package_registry_overrides] + +[registry] +``` + +## Distributing WIT Packages using `wkg` + +The `wkg` tool uses a [configuration file](https://github.com/bytecodealliance/wasm-pkg-tools?tab=readme-ov-file#configuration) to store settings with a default location of `$XDG_CONFIG_HOME/wasm-pkg/config.toml`. It must be configured to know which registry to use for which package namespaces. The following configuration, instructs `wkg` to use [ttl.sh](https://ttl.sh/) OCI registry for all packages with the `foo` namespace. + +```toml +# $XDG_CONFIG_HOME/wasm-pkg/config.toml +default_registry = "ghcr.io" + +[namespace_registries] +foo = { registry = "foo-registry", metadata = { preferredProtocol = "oci", "oci" = {registry = "ttl.sh", namespacePrefix = "wasm-components/" } } } + +[package_registry_overrides] + +[registry] +``` + +Now, `foo` packages can be built and published using `wkg`. + +```sh +mkdir wit +cat > wit/foo.wit << EOL +package foo:bar@0.1.0; + +interface do-something { + reduce: func(a: u32, b: u32) -> u32; +} + +world example { + export do-something; +} +EOL + +wkg wit build +wkg publish foo:bar@0.1.0.wasm +``` + +This will publish the component to `ttl.sh/wasm-components/foo/bar:0.1.0` + +## Configuring `wkg` to Fetch Custom Packages + +After configuring `wkg` to know where to pull `foo` namespaced packages from, the `bar` package can be pulled with `wkg get`: + +```sh +wkg get --format wit foo:bar@0.1.0 +``` + +## Fetching WIT Package Dependencies using `wkg` + +Sometimes fetching a single package is not sufficient because it depends on other packages. For example, the following world describes a simple Wasm service which requires `wasi:http/proxy``: + +```wit +package foo:wasi-http-service; + +world target-world { + include wasi:http/proxy@0.2.3; +} +``` + +One may be tempted to simply get the `wasi:http` package with `wkg get --format wit wasi:http@0.2.3 -o wit/deps/http/`. However, `wasi:http` depends on other WASI packages such as `wasi:clocks` and `wasi:io`. To make sure to fetch a package and all its dependencies, use `wkg fetch`, which will read the package containing the world(s) you have defined in the given wit directory (`wit` by default). It will then fetch the +dependencies and write them to the `deps` directory along with a lock file. + +After placing the above file in `./wit`, run the following to fetch the dependencies: + +```sh +wkg wit fetch +``` + +The `./wit` directory will be populated as follows: +```sh +wit +├── deps +│ ├── wasi-cli-0.2.3 +│ │ └── package.wit +│ ├── wasi-clocks-0.2.3 +│ │ └── package.wit +│ ├── wasi-http-0.2.3 +│ │ └── package.wit +│ ├── wasi-io-0.2.3 +│ │ └── package.wit +│ └── wasi-random-0.2.3 +│ └── package.wit +└── world.wit +``` + +Now, you can use the language toolchain of your choice to generate bindings and create your component. \ No newline at end of file From c3db27effce26b5ee7baf40b70b94c4b577a10fa Mon Sep 17 00:00:00 2001 From: James Sturtevant Date: Thu, 20 Mar 2025 23:24:38 +0000 Subject: [PATCH 111/175] Update docs to use latest componentize-dotnet Signed-off-by: James Sturtevant --- .../src/language-support/csharp.md | 115 +++++------------- 1 file changed, 28 insertions(+), 87 deletions(-) diff --git a/component-model/src/language-support/csharp.md b/component-model/src/language-support/csharp.md index 370a7b6..9c03fd0 100644 --- a/component-model/src/language-support/csharp.md +++ b/component-model/src/language-support/csharp.md @@ -13,56 +13,19 @@ componentize-dotnet serves as a one-stop shop for .NET developers, wrapping seve - [wit-bindgen](https://github.com/bytecodealliance/wit-bindgen) (WIT imports and exports) - [wasm-tools](https://github.com/bytecodealliance/wasm-tools) (component conversion) - [WASI SDK](https://github.com/WebAssembly/wasi-sdk) (SDK used by NativeAOT-LLVM) +- [Wac](https://github.com/bytecodealliance/wac) (used to compose components) -First, install the .NET SDK. For this walkthrough, we’ll use the [.NET 9 SDK RC -1](https://dotnet.microsoft.com/en-us/download/dotnet/9.0). You should also have -[wasmtime](https://wasmtime.dev/) installed so you can run the binary that you produce. +First, install the .NET SDK. For this walkthrough, we’ll use the [.NET 10 SDK preview](https://dotnet.microsoft.com/en-us/download/dotnet/10.0). +You should also have [wasmtime](https://wasmtime.dev/) installed so you can run the binary that you produce. Once you have the .NET SDK installed, create a new project: ```sh -dotnet new classlib -o adder +dotnet new install BytecodeAlliance.Componentize.DotNet.Templates +dotnet new componentize.wasi.cli -o adder cd adder ``` -The `componentize-dotnet` package depends on the `NativeAOT-LLVM` package, which resides at the -dotnet-experimental package source, so you will need to make sure that NuGet is configured to refer -to experimental packages. You can create a project-scoped NuGet configuration by running: - -```sh -dotnet new nugetconfig -``` - -Edit your nuget.config file to look like this: - -```xml - - - - - - - - - -``` - -Now back in the console we’ll add the `BytecodeAlliance.Componentize.DotNet.Wasm.SDK` package: - -```sh -dotnet add package BytecodeAlliance.Componentize.DotNet.Wasm.SDK --prerelease -``` - -In the .csproj project file, add the following to the ``: - -```xml -wasi-wasm -false -true -true -true -``` - Next, create or download the WIT world you would like to target. For this example we will use an [`example` world](https://github.com/bytecodealliance/component-docs/tree/main/component-model/examples/example-host/add.wit) @@ -107,7 +70,7 @@ If we build it: dotnet build ``` -The component will be available at `bin/Debug/net9.0/wasi-wasm/native/adder.wasm`. +The component will be available at `bin/Debug/net10.0/wasi-wasm/native/adder.wasm`. ## Building a component that exports an interface @@ -157,12 +120,12 @@ Once again, compile an application to a Wasm component using `dotnet build`: $ dotnet build Restore complete (0.4s) You are using a preview version of .NET. See: https://aka.ms/dotnet-support-policy - adder succeeded (1.1s) → bin/Debug/net9.0/wasi-wasm/adder.dll + adder succeeded (1.1s) → bin/Debug/net10.0/wasi-wasm/adder.dll Build succeeded in 2.5s ``` -The component will be available at `bin/Debug/net9.0/wasi-wasm/native/adder.wasm`. +The component will be available at `bin/Debug/net10.0/wasi-wasm/native/adder.wasm`. ## Building a component that imports an interface @@ -172,51 +135,13 @@ our `adder` component and call the `add` function. We will later compose this co the `adder` library component we just built. Now we will be taking the `adder` component and executing it from another WebAssembly component. -`dotnet new console` creates a new project that creates an executable. +`dotnet new componentize.wasi.cli` creates a new project that creates an executable. ```sh -dotnet new console -o host-app +dotnet new componentize.wasi.cli -o host-app cd host-app ``` -The `componentize-dotnet` package depends on the `NativeAOT-LLVM` package, which resides at the -dotnet-experimental package source, so you will need to make sure that NuGet is configured to refer -to experimental packages. You can create a project-scoped NuGet configuration by running: - -```sh -dotnet new nugetconfig -``` - -Edit your nuget.config file to look like this: - -```xml - - - - - - - - - -``` - -Now back in the console we’ll add the `BytecodeAlliance.Componentize.DotNet.Wasm.SDK` package: - -```sh -dotnet add package BytecodeAlliance.Componentize.DotNet.Wasm.SDK --prerelease -``` - -In the .csproj project file, add the following to the ``: - -```xml -wasi-wasm -false -true -true -true -``` - Copy the same WIT file as before into your project: ```wit @@ -236,7 +161,7 @@ world hostapp { } ``` -Add it to your .csproj project file as a new `ItemGroup`: +Add it to your `host-app.csproj` project file as a new `ItemGroup`: ```xml @@ -282,9 +207,25 @@ world, it needs to be composed the first component. You can compose your `host-a your `adder` component by running [`wac plug`](https://github.com/bytecodealliance/wac): ```sh -wac plug bin/Debug/net9.0/wasi-wasm/native/host-app.wasm --plug ../adder/bin/Debug/net9.0/wasi-wasm/native/adder.wasm -o main.wasm +wac plug bin/Debug/net10.0/wasi-wasm/native/host-app.wasm --plug ../adder/bin/Debug/net10.0/wasi-wasm/native/adder.wasm -o main.wasm ``` +You can also automate the process by adding the following to your `host-app.csproj`: + +```xml + + + bin/$(Configuration)/$(TargetFramework)/wasi-wasm/native/host-app.wasm + ../example/bin/$(Configuration)/$(TargetFramework)/wasi-wasm/native/adder.wasm + + + + + +``` + +Run `dotnet build` again you will have a composed component in `./dist/main.wasm` + Then you can run the composed component: ```sh From f729880592c0e35ae7008a5f1004eabd3d5f7f70 Mon Sep 17 00:00:00 2001 From: James Sturtevant Date: Thu, 20 Mar 2025 23:54:10 +0000 Subject: [PATCH 112/175] Update after run through Signed-off-by: James Sturtevant --- .../src/language-support/csharp.md | 39 +++++++++++++------ 1 file changed, 28 insertions(+), 11 deletions(-) diff --git a/component-model/src/language-support/csharp.md b/component-model/src/language-support/csharp.md index 9c03fd0..0b2bd98 100644 --- a/component-model/src/language-support/csharp.md +++ b/component-model/src/language-support/csharp.md @@ -39,7 +39,7 @@ world example { } ``` -In the .csproj project file, add a new ``: +In the `adder.csproj` project file, add a new ``: ```xml @@ -47,15 +47,28 @@ In the .csproj project file, add a new ``: ``` -If you try to build the project with `dotnet build`, you'll get an error like "The name +Since this component will only export a function dotnet considers this a library project. Let's update +the `` to be a library in the `adder.csproj`: + +```xml +Library +``` + +And remove the `Program.cs` file: + +```bash +rm Program.cs +``` + +At this point, if you try to build the project with `dotnet build`, you'll get an error like "The name 'ExampleWorldImpl' does not exist in the current context". This is because you've said you'll provide an implementation, but haven't yet done so. To fix this, add the following code to your -project: +project in a file called `adder.cs`: ```csharp namespace ExampleWorld; -public class ExampleWorldImpl : IOperations +public class ExampleWorldImpl : IExampleWorld { public static uint Add(uint x, uint y) { @@ -100,7 +113,7 @@ world hostapp { If you peek at the bindings, you'll notice that we now implement a class for the `add` interface rather than for the `example` world. This is a consistent pattern. As you export more interfaces -from your world, you implement more classes. Our add example gets the slight update of: +from your world, you implement more classes. Our `adder.cs` example gets the slight update of: ```csharp namespace ExampleWorld.wit.exports.example.component; @@ -135,9 +148,11 @@ our `adder` component and call the `add` function. We will later compose this co the `adder` library component we just built. Now we will be taking the `adder` component and executing it from another WebAssembly component. -`dotnet new componentize.wasi.cli` creates a new project that creates an executable. +`dotnet new componentize.wasi.cli` creates a new project that creates an executable. +Back out of the current project and create a new one: ```sh +cd .. dotnet new componentize.wasi.cli -o host-app cd host-app ``` @@ -180,8 +195,8 @@ Modify `Program.cs` to look like this: // example.component refers to the package name defined in the WIT file. using HostappWorld.wit.imports.example.component; -var left = 1; -var right = 2; +uint left = 1; +uint right = 2; var result = AddInterop.Add(left, right); Console.WriteLine($"{left} + {right} = {result}"); ``` @@ -216,11 +231,11 @@ You can also automate the process by adding the following to your `host-app.cspr bin/$(Configuration)/$(TargetFramework)/wasi-wasm/native/host-app.wasm - ../example/bin/$(Configuration)/$(TargetFramework)/wasi-wasm/native/adder.wasm + ../adder/bin/$(Configuration)/$(TargetFramework)/wasi-wasm/native/adder.wasm - + ``` @@ -229,6 +244,8 @@ Run `dotnet build` again you will have a composed component in `./dist/main.wasm Then you can run the composed component: ```sh -wasmtime run main.wasm +wasmtime run ./dist/main.wasm 1 + 2 = 3 ``` + +Checkout the [componentize-dotnet docs](https://github.com/bytecodealliance/componentize-dotnet) for more configurations options. From 04027d2336990f27c074afa7695a10749d870c74 Mon Sep 17 00:00:00 2001 From: Victor Adossi Date: Thu, 16 Jan 2025 23:41:58 +0900 Subject: [PATCH 113/175] fix(rust): use adder class for example host Signed-off-by: Victor Adossi --- component-model/examples/example-host/add.wit | 10 ++-- .../examples/example-host/src/async_add.rs | 52 +++++++++++++----- .../examples/example-host/src/main.rs | 12 ++--- .../examples/example-host/src/state.rs | 2 +- .../examples/example-host/src/sync_add.rs | 53 ++++++++++++++----- component-model/src/language-support/rust.md | 2 +- 6 files changed, 93 insertions(+), 38 deletions(-) diff --git a/component-model/examples/example-host/add.wit b/component-model/examples/example-host/add.wit index 703ed7e..e577761 100644 --- a/component-model/examples/example-host/add.wit +++ b/component-model/examples/example-host/add.wit @@ -1,5 +1,9 @@ -package example:component; +package docs:adder@0.1.0; -world example { - export add: func(x: s32, y: s32) -> s32; +interface add { + add: func(a: u32, b: u32) -> u32; +} + +world adder { + export add; } diff --git a/component-model/examples/example-host/src/async_add.rs b/component-model/examples/example-host/src/async_add.rs index eb8b063..1b497b2 100644 --- a/component-model/examples/example-host/src/async_add.rs +++ b/component-model/examples/example-host/src/async_add.rs @@ -1,35 +1,61 @@ -use anyhow::Context; use std::path::PathBuf; -use wasmtime::component::*; + +use anyhow::Context; +use wasmtime::component::{Component, Linker}; use wasmtime::{Config, Engine, Store}; + use crate::state::States; -bindgen!({ - path: "add.wit", - world: "example", - async: true -}); +mod bindings { + //! Generated code for the + wasmtime::component::bindgen!({ + path: "add.wit", + world: "adder", + async: true + }); +} -pub async fn add(path: PathBuf, x: i32, y: i32) -> wasmtime::Result { +/// Perform the add operation for a given WebAssembly component +/// +/// This operation asynchronously (as opposed to synchronously +/// without an async runtime like `tokio`). +/// +/// # Arguments +/// +/// * `path` - Path to the Wasm component bytes +/// * `x` - The left hand side of the addition +/// * `y` - The right hand side of the addition +/// +pub async fn add(path: PathBuf, x: u32, y: u32) -> wasmtime::Result { // Construct engine let mut config = Config::default(); config.async_support(true); let engine = Engine::new(&config)?; + // Construct component let component = Component::from_file(&engine, path).context("Component file not found")?; + // Construct store for storing running states of the component let wasi_view = States::new(); let mut store = Store::new(&engine, wasi_view); + // Construct linker for linking interfaces. - // For this simple adder component, no need to manually link additional interfaces. let mut linker = Linker::new(&engine); - // Add wasi exports to linker to support io interfaces + + // Add wasi exports to linker to support I/O (as in `wasi:io`) interfaces + // see: https://github.com/WebAssembly/wasi-io wasmtime_wasi::add_to_linker_async(&mut linker)?; - let instance = Example::instantiate_async(&mut store, &component, &linker) + + // Instantiate the component as an instance of the `adder` world, + // with the generated bindings + let instance = bindings::Adder::instantiate_async(&mut store, &component, &linker) .await .context("Failed to instantiate the example world")?; + + // Call the add function on instance instance + .docs_adder_add() .call_add(&mut store, x, y) .await - .context("Failed to call add function") -} \ No newline at end of file + .context("calling add function") +} diff --git a/component-model/examples/example-host/src/main.rs b/component-model/examples/example-host/src/main.rs index 1a93c05..71c187e 100644 --- a/component-model/examples/example-host/src/main.rs +++ b/component-model/examples/example-host/src/main.rs @@ -1,19 +1,19 @@ -mod async_add; -mod sync_add; -mod state; - use clap::Parser; use std::path::PathBuf; +mod async_add; +mod state; +mod sync_add; + /// A CLI for executing WebAssembly components that /// implement the `example` world. #[derive(Parser)] #[clap(name = "add-host", version = env!("CARGO_PKG_VERSION"))] struct AddApp { /// The first operand - x: i32, + x: u32, /// The second operand - y: i32, + y: u32, /// The path to the component. #[clap(value_name = "COMPONENT_PATH")] component: PathBuf, diff --git a/component-model/examples/example-host/src/state.rs b/component-model/examples/example-host/src/state.rs index ebd2033..74819bc 100644 --- a/component-model/examples/example-host/src/state.rs +++ b/component-model/examples/example-host/src/state.rs @@ -22,4 +22,4 @@ impl WasiView for States { fn ctx(&mut self) -> &mut WasiCtx { &mut self.ctx } -} \ No newline at end of file +} diff --git a/component-model/examples/example-host/src/sync_add.rs b/component-model/examples/example-host/src/sync_add.rs index f67c151..9bc3e15 100644 --- a/component-model/examples/example-host/src/sync_add.rs +++ b/component-model/examples/example-host/src/sync_add.rs @@ -1,32 +1,57 @@ -use crate::state::States; -use anyhow::Context; use std::path::PathBuf; -use wasmtime::component::{bindgen, Component, Linker}; + +use anyhow::Context; +use wasmtime::component::{Component, Linker}; use wasmtime::{Engine, Store}; use wasmtime_wasi; -bindgen!({ - path: "add.wit", - world: "example", - async: false -}); +use crate::state::States; + +mod bindings { + wasmtime::component::bindgen!({ + path: "add.wit", + world: "adder", + async: false + }); +} -pub fn add(path: PathBuf, x: i32, y: i32) -> wasmtime::Result { +/// Perform a add operation for a given WebAssembly component +/// +/// This operation happens synchronously (as opposed to asynchronously +/// powered by an async runtime like `tokio`). +/// +/// # Arguments +/// +/// * `path` - Path to the Wasm component bytes +/// * `x` - The left hand side of the addition +/// * `y` - The right hand side of the addition +/// +pub fn add(path: PathBuf, x: u32, y: u32) -> wasmtime::Result { // Construct engine let engine = Engine::default(); + // Construct component let component = Component::from_file(&engine, path).context("Component file not found")?; + // Construct store for storing running states of the component let wasi_view = States::new(); let mut store = Store::new(&engine, wasi_view); + // Construct linker for linking interfaces. - // For this simple adder component, no need to manually link additional interfaces. let mut linker = Linker::new(&engine); - // Add wasi exports to linker to support io interfaces + + // Add wasi exports to linker to support I/O (as in `wasi:io`) interfaces + // see: https://github.com/WebAssembly/wasi-io wasmtime_wasi::add_to_linker_sync(&mut linker).expect("Could not add wasi to linker"); - let instance = Example::instantiate(&mut store, &component, &linker) + + // Instantiate the component as an instance of the `adder` world, + // with the generated bindings + let instance = bindings::Adder::instantiate(&mut store, &component, &linker) .context("Failed to instantiate the example world")?; + + // Call the add function on instance instance + .docs_adder_add() .call_add(&mut store, x, y) - .context("Failed to call add function") -} \ No newline at end of file + .context("calling add function") +} diff --git a/component-model/src/language-support/rust.md b/component-model/src/language-support/rust.md index 263bbaa..5f2d907 100644 --- a/component-model/src/language-support/rust.md +++ b/component-model/src/language-support/rust.md @@ -38,7 +38,7 @@ package = "example:component" struct Component; impl Guest for Component { - fn add(x: i32, y: i32) -> i32 { + fn add(x: u32, y: u32) -> u32 { x + y } } From e299488425d171768cb957e4ae77cedbd4d01e17 Mon Sep 17 00:00:00 2001 From: Victor Adossi Date: Thu, 16 Jan 2025 23:56:44 +0900 Subject: [PATCH 114/175] chore: update adder rust tutorial Signed-off-by: Victor Adossi --- .../examples/tutorial/adder/Cargo.lock | 6 +- .../examples/tutorial/adder/Cargo.toml | 2 +- .../examples/tutorial/adder/src/bindings.rs | 72 +++++++------------ 3 files changed, 31 insertions(+), 49 deletions(-) diff --git a/component-model/examples/tutorial/adder/Cargo.lock b/component-model/examples/tutorial/adder/Cargo.lock index 90e9875..bff0abf 100644 --- a/component-model/examples/tutorial/adder/Cargo.lock +++ b/component-model/examples/tutorial/adder/Cargo.lock @@ -1,6 +1,6 @@ # This file is automatically @generated by Cargo. # It is not intended for manual editing. -version = 3 +version = 4 [[package]] name = "adder" @@ -17,9 +17,9 @@ checksum = "b4682ae6287fcf752ecaabbfcc7b6f9b72aa33933dc23a554d853aea8eea8635" [[package]] name = "wit-bindgen-rt" -version = "0.24.0" +version = "0.37.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b0780cf7046630ed70f689a098cd8d56c5c3b22f2a7379bbdb088879963ff96" +checksum = "fc801b991c56492f87ab3086e786468f75c285a4d73017ab0ebc2fa1aed5d82c" dependencies = [ "bitflags", ] diff --git a/component-model/examples/tutorial/adder/Cargo.toml b/component-model/examples/tutorial/adder/Cargo.toml index d710b68..7578216 100644 --- a/component-model/examples/tutorial/adder/Cargo.toml +++ b/component-model/examples/tutorial/adder/Cargo.toml @@ -4,7 +4,7 @@ version = "0.1.0" edition = "2021" [dependencies] -wit-bindgen-rt = { version = "0.24.0", features = ["bitflags"] } +wit-bindgen-rt = { version = "0.37.0", features = ["bitflags"] } [lib] crate-type = ["cdylib"] diff --git a/component-model/examples/tutorial/adder/src/bindings.rs b/component-model/examples/tutorial/adder/src/bindings.rs index 8ab09fb..7c3b88b 100644 --- a/component-model/examples/tutorial/adder/src/bindings.rs +++ b/component-model/examples/tutorial/adder/src/bindings.rs @@ -1,24 +1,21 @@ -// Generated by `wit-bindgen` 0.25.0. DO NOT EDIT! +// Generated by `wit-bindgen` 0.36.0. DO NOT EDIT! // Options used: -#[allow(dead_code)] +// * runtime_path: "wit_bindgen_rt" +#[rustfmt::skip] +#[allow(dead_code, clippy::all)] pub mod exports { - #[allow(dead_code)] pub mod docs { - #[allow(dead_code)] pub mod adder { #[allow(dead_code, clippy::all)] pub mod add { #[used] #[doc(hidden)] - #[cfg(target_arch = "wasm32")] - static __FORCE_SECTION_REF: fn() = - super::super::super::super::__link_custom_section_describing_imports; + static __FORCE_SECTION_REF: fn() = super::super::super::super::__link_custom_section_describing_imports; use super::super::super::super::_rt; #[doc(hidden)] #[allow(non_snake_case)] pub unsafe fn _export_add_cabi(arg0: i32, arg1: i32) -> i32 { - #[cfg(target_arch = "wasm32")] - _rt::run_ctors_once(); + #[cfg(target_arch = "wasm32")] _rt::run_ctors_once(); let result0 = T::add(arg0 as u32, arg1 as u32); _rt::as_i32(result0) } @@ -26,92 +23,78 @@ pub mod exports { fn add(a: u32, b: u32) -> u32; } #[doc(hidden)] - - macro_rules! __export_docs_adder_add_0_1_0_cabi{ - ($ty:ident with_types_in $($path_to_types:tt)*) => (const _: () = { - - #[export_name = "docs:adder/add@0.1.0#add"] - unsafe extern "C" fn export_add(arg0: i32,arg1: i32,) -> i32 { - $($path_to_types)*::_export_add_cabi::<$ty>(arg0, arg1) - } - };); - } + macro_rules! __export_docs_adder_add_0_1_0_cabi { + ($ty:ident with_types_in $($path_to_types:tt)*) => { + const _ : () = { #[export_name = "docs:adder/add@0.1.0#add"] + unsafe extern "C" fn export_add(arg0 : i32, arg1 : i32,) -> i32 { + $($path_to_types)*:: _export_add_cabi::<$ty > (arg0, arg1) } }; + }; + } #[doc(hidden)] pub(crate) use __export_docs_adder_add_0_1_0_cabi; } } } } +#[rustfmt::skip] mod _rt { - #[cfg(target_arch = "wasm32")] pub fn run_ctors_once() { wit_bindgen_rt::run_ctors_once(); } - pub fn as_i32(t: T) -> i32 { t.as_i32() } - pub trait AsI32 { fn as_i32(self) -> i32; } - impl<'a, T: Copy + AsI32> AsI32 for &'a T { fn as_i32(self) -> i32 { (*self).as_i32() } } - impl AsI32 for i32 { #[inline] fn as_i32(self) -> i32 { self as i32 } } - impl AsI32 for u32 { #[inline] fn as_i32(self) -> i32 { self as i32 } } - impl AsI32 for i16 { #[inline] fn as_i32(self) -> i32 { self as i32 } } - impl AsI32 for u16 { #[inline] fn as_i32(self) -> i32 { self as i32 } } - impl AsI32 for i8 { #[inline] fn as_i32(self) -> i32 { self as i32 } } - impl AsI32 for u8 { #[inline] fn as_i32(self) -> i32 { self as i32 } } - impl AsI32 for char { #[inline] fn as_i32(self) -> i32 { self as i32 } } - impl AsI32 for usize { #[inline] fn as_i32(self) -> i32 { @@ -119,7 +102,6 @@ mod _rt { } } } - /// Generates `#[no_mangle]` functions to export the specified type as the /// root implementation of all generated traits. /// @@ -138,29 +120,29 @@ mod _rt { /// ``` #[allow(unused_macros)] #[doc(hidden)] - macro_rules! __export_adder_impl { - ($ty:ident) => (self::export!($ty with_types_in self);); - ($ty:ident with_types_in $($path_to_types_root:tt)*) => ( - $($path_to_types_root)*::exports::docs::adder::add::__export_docs_adder_add_0_1_0_cabi!($ty with_types_in $($path_to_types_root)*::exports::docs::adder::add); - ) + ($ty:ident) => { + self::export!($ty with_types_in self); + }; + ($ty:ident with_types_in $($path_to_types_root:tt)*) => { + $($path_to_types_root)*:: + exports::docs::adder::add::__export_docs_adder_add_0_1_0_cabi!($ty with_types_in + $($path_to_types_root)*:: exports::docs::adder::add); + }; } #[doc(inline)] pub(crate) use __export_adder_impl as export; - #[cfg(target_arch = "wasm32")] -#[link_section = "component-type:wit-bindgen:0.25.0:adder:encoded world"] +#[link_section = "component-type:wit-bindgen:0.36.0:docs:adder@0.1.0:adder:encoded world"] #[doc(hidden)] pub static __WIT_BINDGEN_COMPONENT_TYPE: [u8; 203] = *b"\ \0asm\x0d\0\x01\0\0\x19\x16wit-component-encoding\x04\0\x07P\x01A\x02\x01A\x02\x01\ -B\x02\x01@\x02\x01ay\x01by\0y\x04\0\x03add\x01\0\x04\x01\x14docs:adder/add@0.1.0\ -\x05\0\x04\x01\x16docs:adder/adder@0.1.0\x04\0\x0b\x0b\x01\0\x05adder\x03\0\0\0G\ -\x09producers\x01\x0cprocessed-by\x02\x0dwit-component\x070.208.1\x10wit-bindgen\ --rust\x060.25.0"; - +B\x02\x01@\x02\x01ay\x01by\0y\x04\0\x03add\x01\0\x04\0\x14docs:adder/add@0.1.0\x05\ +\0\x04\0\x16docs:adder/adder@0.1.0\x04\0\x0b\x0b\x01\0\x05adder\x03\0\0\0G\x09pr\ +oducers\x01\x0cprocessed-by\x02\x0dwit-component\x070.220.0\x10wit-bindgen-rust\x06\ +0.36.0"; #[inline(never)] #[doc(hidden)] -#[cfg(target_arch = "wasm32")] pub fn __link_custom_section_describing_imports() { wit_bindgen_rt::maybe_link_cabi_realloc(); } From f94a487fa624c2c63985c79efbb54f74c58557bf Mon Sep 17 00:00:00 2001 From: Victor Adossi Date: Thu, 16 Jan 2025 23:59:44 +0900 Subject: [PATCH 115/175] refactor(host): use the existing adder WIT Signed-off-by: Victor Adossi --- component-model/examples/example-host/add.wit | 9 --------- component-model/examples/example-host/src/async_add.rs | 2 +- component-model/examples/example-host/src/sync_add.rs | 2 +- 3 files changed, 2 insertions(+), 11 deletions(-) delete mode 100644 component-model/examples/example-host/add.wit diff --git a/component-model/examples/example-host/add.wit b/component-model/examples/example-host/add.wit deleted file mode 100644 index e577761..0000000 --- a/component-model/examples/example-host/add.wit +++ /dev/null @@ -1,9 +0,0 @@ -package docs:adder@0.1.0; - -interface add { - add: func(a: u32, b: u32) -> u32; -} - -world adder { - export add; -} diff --git a/component-model/examples/example-host/src/async_add.rs b/component-model/examples/example-host/src/async_add.rs index 1b497b2..e635946 100644 --- a/component-model/examples/example-host/src/async_add.rs +++ b/component-model/examples/example-host/src/async_add.rs @@ -9,7 +9,7 @@ use crate::state::States; mod bindings { //! Generated code for the wasmtime::component::bindgen!({ - path: "add.wit", + path: "../tutorial/wit/adder/world.wit", world: "adder", async: true }); diff --git a/component-model/examples/example-host/src/sync_add.rs b/component-model/examples/example-host/src/sync_add.rs index 9bc3e15..f11758d 100644 --- a/component-model/examples/example-host/src/sync_add.rs +++ b/component-model/examples/example-host/src/sync_add.rs @@ -9,7 +9,7 @@ use crate::state::States; mod bindings { wasmtime::component::bindgen!({ - path: "add.wit", + path: "../tutorial/wit/adder/world.wit", world: "adder", async: false }); From a0b018a36dd346ba6ed886376db6e4198d637d94 Mon Sep 17 00:00:00 2001 From: Victor Adossi Date: Tue, 18 Mar 2025 17:55:31 +0900 Subject: [PATCH 116/175] wip: in-progress work Signed-off-by: Victor Adossi --- CONTRIBUTING.md | 1 + component-model/book.toml | 2 + component-model/src/language-support.md | 22 ++++++----- component-model/src/language-support/c.md | 37 ++++++++++++------- .../src/language-support/csharp.md | 22 ++++++----- 5 files changed, 52 insertions(+), 32 deletions(-) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index d32df22..e347452 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -15,6 +15,7 @@ This repository also makes use of mdBook plugins. To install mdBook and the plug ```console cargo install --version 0.4.21 mdbook cargo install --version 0.6.7 mdbook-alerts +cargo install --version 0.7.7 mdbook-linkcheck ``` [cargo]: https://doc.rust-lang.org/cargo diff --git a/component-model/book.toml b/component-model/book.toml index e8c3123..72ef7f3 100644 --- a/component-model/book.toml +++ b/component-model/book.toml @@ -11,3 +11,5 @@ edit-url-template = "https://github.com/bytecodealliance/component-docs/tree/mai additional-css = ["theme/head.hbs"] [preprocessor.alerts] + +[output.linkcheck] diff --git a/component-model/src/language-support.md b/component-model/src/language-support.md index 0b71f3d..3756ba2 100644 --- a/component-model/src/language-support.md +++ b/component-model/src/language-support.md @@ -10,8 +10,8 @@ not hesitate to [contribute documentation](https://github.com/bytecodealliance/c One of the benefits of components is their portability across host runtimes. The runtime only needs to know what world the component is targeting in order to import or execute the component. This -language guide hopes to demonstrate that with a prevailing `example` world defined in -[`examples/example-host/add.wit`](https://github.com/bytecodealliance/component-docs/blob/main/component-model/examples/example-host/add.wit). Furthermore, an example host that understands the `example` +language guide hopes to demonstrate that with a prevailing `adder` world defined in +[`examples/tutorial/wit/adder/world.wit`](https://github.com/bytecodealliance/component-docs/blob/main/component-model/examples/tutorial/wit/adder/world.wit). Furthermore, an example host that understands the `example` world has been provided in [`examples/example-host`](https://github.com/bytecodealliance/component-docs/blob/main/component-model/examples/example-host/README.md) for running components. Each toolchain section walks through creating a component of this world, which can be run either in the example host or from an application of that toolchain. This aims to provide a full story for using @@ -46,17 +46,21 @@ run components for a given toolchain: [`wasm-tools`](https://github.com/bytecodealliance/wasm-tools) provides a suite of subcommands for working with WebAssembly modules and components. -`wasm-tools` can be used to create a component from WebAssembly Text (WAT). This walks through creating a component from WAT that implements the [`example` world](https://github.com/bytecodealliance/component-docs/blob/main/component-model/examples/example-host/add.wit) and simply adds two numbers. +`wasm-tools` can be used to create a component from WebAssembly Text (WAT). This walks through creating a component from WAT that implements the [`adder` world](https://github.com/bytecodealliance/component-docs/blob/main/component-model/examples/tutorial/wit/adder/world.wit) and simply adds two numbers. 1. Install [`wasm-tools`](https://github.com/bytecodealliance/wasm-tools/tree/main#installation), a tool for low-level manipulation of Wasm modules and components. -2. The `add` function is defined inside the following `example` world: +2. The `add` function is defined inside the following `world` world: ```wit - package example:component; + package docs:adder@0.1.0; - world example { - export add: func(x: s32, y: s32) -> s32; + interface add { + add: func(a: u32, b: u32) -> u32; + } + + world adder { + export add; } ``` @@ -68,7 +72,7 @@ working with WebAssembly modules and components. local.get $lhs local.get $rhs i32.add) - (export "add" (func $add)) + (export "docs:adder/add@0.1.0" (func $add)) ) ``` @@ -76,7 +80,7 @@ working with WebAssembly modules and components. inside the core module and then encoding the WAT to a Wasm binary. ```sh - $ wasm-tools component embed add.wit add.wat -o add.wasm + $ wasm-tools component embed adder/world.wit add.wat -o add.wasm $ wasm-tools component new add.wasm -o add.component.wasm ``` diff --git a/component-model/src/language-support/c.md b/component-model/src/language-support/c.md index 57274e5..da619d3 100644 --- a/component-model/src/language-support/c.md +++ b/component-model/src/language-support/c.md @@ -2,17 +2,18 @@ ### Building a Component with `wit-bindgen` and `wasm-tools` -[`wit-bindgen`](https://github.com/bytecodealliance/wit-bindgen) is a tool to generate guest language bindings from a given `.wit` file. Although it is less integrated into language toolchains than other tools such as `cargo-component`, it can currently generate source-level bindings for `Rust`, `C`, `Java (TeaVM)`, and `TinyGo`, with the ability for more language generators to be added in the future. +[`wit-bindgen`](https://github.com/bytecodealliance/wit-bindgen) is a tool to generate guest language bindings from a given `.wit` file. Although it is less integrated into language toolchains than other tools such as `cargo-component`, it can currently generate source-level bindings for `Rust`, `C`, `Java (TeaVM)`, and `TinyGo`, with the ability for more language generators to be added in the future. `wit-bindgen` can be used to generate C applications that can be compiled directly to Wasm modules using `clang` with a `wasm32-wasi` target. -First, install the CLI for [`wit-bindgen`](https://github.com/bytecodealliance/wit-bindgen#cli-installation), [`wasm-tools`](https://github.com/bytecodealliance/wasm-tools), and the [`WASI SDK`](https://github.com/webassembly/wasi-sdk). +First, install the CLI for [`wit-bindgen`](https://github.com/bytecodealliance/wit-bindgen#cli-installation), [`wasm-tools`](https://github.com/bytecodealliance/wasm-tools), and the [`WASI SDK`](https://github.com/webassembly/wasi-sdk). The WASI SDK will install a local version of `clang` configured with a wasi-sysroot. Follow [these instructions](https://github.com/WebAssembly/wasi-sdk#use) to configure it for use. Note that you can also use your installed system or emscripten `clang` by building with `--target=wasm32-wasi` but you will need some artifacts from WASI SDK to enable and link that build target (more information is available in WASI SDK's docs). -Start by generating a C skeleton from `wit-bindgen` using the [sample `add.wit` file](https://github.com/bytecodealliance/component-docs/tree/main/component-model/examples/example-host/add.wit): -```sh ->wit-bindgen c add.wit +Start by generating a C skeleton from `wit-bindgen` using the [sample `adder/world.wit` file](https://github.com/bytecodealliance/component-docs/tree/main/examples/tutorial/wit/adder/world.wit): + +``` +> wit-bindgen c path/to/adder/world.wit Generating "example.c" Generating "example.h" Generating "example_component_type.o" @@ -21,6 +22,7 @@ Generating "example_component_type.o" This has generated several files - an `example.h` (based on the name of your `world`) with the prototype of the `add` function (prefixed by `exports_`) - `int32_t exports_example_add(int32_t x, int32_t y);`, as well as some generated code in `example.c` that interfaces with the component model ABI to call your function. Additionally, `example_component_type.o` contains object code referenced in `example.c` from an `extern` that must be linked via clang. Next, create an `add.c` that implements your function defined in `example.h`: + ```c #include "example.h" @@ -31,20 +33,23 @@ int32_t exports_example_add(int32_t x, int32_t y) ``` Now, you can compile the function into a Wasm module via clang: -```sh + +```console clang add.c example.c example_component_type.o -o add-core.wasm -mexec-model=reactor ``` > Use the `clang` included in the WASI SDK installation, for example at `/bin/clang`. Next, you need to transform the module into a component. For this example, you can use `wasm-tools component new`: -```sh + +```console wasm-tools component new ./add-core.wasm -o add-component.wasm ``` -Do note this will fail if your code references any WASI APIs that must be imported. This requires an additional step as the WASI SDK still references `wasi_snapshot_preview1` APIs that are not compatible directly with components. +Do note this will fail if your code references any WASI APIs that must be imported. This requires an additional step as the WASI SDK still references `wasi_snapshot_preview1` APIs that are not compatible directly with components. For example, modifying the above to reference `printf()` would compile: + ```c #include "example.h" #include @@ -58,25 +63,28 @@ int32_t exports_example_add(int32_t x, int32_t y) ``` However, the module would fail to transform to a component: -```sh + +``` >wasm-tools component new ./add-core.wasm -o add-component.wasm error: failed to encode a component from module Caused by: 0: failed to decode world from module 1: module was not valid - 2: module requires an import interface named `wasi_snapshot_preview1` + 2: module requires an import interface named `wasi_snapshot_preview1` ``` Install the appropriate reactor adapter module [as documented here](https://github.com/bytecodealliance/wit-bindgen#creating-components-wasi) - you can either get the linked release of `wasi_snapshot_preview1.reactor.wasm` and rename it to `wasi_snapshot_preview1.wasm`, or build it directly from source in `wasmtime` following the [instructions here](https://github.com/bytecodealliance/wasmtime/tree/main/crates/wasi-preview1-component-adapter) (make sure you `git submodule update --init` first). Now, you can adapt preview1 to preview2 to build a component: -```sh + +```console wasm-tools component new add-core.wasm --adapt wasi_snapshot_preview1.wasm -o add-component.wasm ``` Finally, you can inspect the embedded wit to see your component (including any WASI imports if necessary): -```sh + +``` >wasm-tools component wit add-component.wasm package root:component; @@ -101,7 +109,8 @@ world root { ``` You must use the `wasi_snapshot_preview1.wasm` from the same version of wasmtime that the host is using to ensure the WASI interface versions match. Additionally, the host must explicitly [add WASI to the linker](https://docs.wasmtime.dev/api/wasmtime_wasi/fn.add_to_linker_sync.html) to run the app. If these are not configured correctly, you may see errors like the following: -```sh + +``` cargo run --release -- 1 2 add-component.wasm Compiling example-host v0.1.0 (/Users/sean/code/component-docs/component-model/examples/example-host) Finished `release` profile [optimized] target(s) in 7.85s @@ -116,7 +125,7 @@ Caused by: ### Running a Component from C/C++ Applications -It is not yet possible to run a Component using the `wasmtime` `c-api` - [see this issue](https://github.com/bytecodealliance/wasmtime/issues/6987). The c-api is preferred to trying to directly use the Rust crate in C++. +It is not yet possible to run a Component using the `wasmtime` `c-api` - [see this issue](https://github.com/bytecodealliance/wasmtime/issues/6987). The c-api is preferred to trying to directly use the Rust crate in C++. However, C/C++ language guest components can be composed with components written in any other language and run by their toolchains, or even composed with a C language command component and run via the `wasmtime` CLI or any other host. diff --git a/component-model/src/language-support/csharp.md b/component-model/src/language-support/csharp.md index 0b2bd98..4dc5930 100644 --- a/component-model/src/language-support/csharp.md +++ b/component-model/src/language-support/csharp.md @@ -27,15 +27,19 @@ cd adder ``` Next, create or download the WIT world you would like to target. For this example we will use an -[`example` -world](https://github.com/bytecodealliance/component-docs/tree/main/component-model/examples/example-host/add.wit) +[`adder` +world](https://github.com/bytecodealliance/component-docs/tree/main/component-model/examples/tutorial/wit/adder/world.wit) with an `add` function: ```wit -package example:component; +package docs:adder@0.1.0; -world example { - export add: func(x: u32, y: u32) -> u32; +interface add { + add: func(a: u32, b: u32) -> u32; +} + +world adder { + export add; } ``` @@ -43,7 +47,7 @@ In the `adder.csproj` project file, add a new ``: ```xml - + ``` @@ -95,7 +99,7 @@ in [the next section](#building-a-component-that-imports-an-interface) to demons component that *imports* an interface. ```wit -// add.wit +// adder/world.wit package example:component; interface add { @@ -160,7 +164,7 @@ cd host-app Copy the same WIT file as before into your project: ```wit -// add.wit +// adder/world.wit package example:component; interface add { @@ -180,7 +184,7 @@ Add it to your `host-app.csproj` project file as a new `ItemGroup`: ```xml - + ``` From 6d5f564053e31c780b006c349592c8d0078912e4 Mon Sep 17 00:00:00 2001 From: Victor Adossi Date: Tue, 18 Mar 2025 18:15:44 +0900 Subject: [PATCH 117/175] refactor: tutorial prose Signed-off-by: Victor Adossi --- component-model/src/tutorial.md | 97 ++++++++++++++++++++++----------- 1 file changed, 66 insertions(+), 31 deletions(-) diff --git a/component-model/src/tutorial.md b/component-model/src/tutorial.md index 5d4a951..6ed7817 100644 --- a/component-model/src/tutorial.md +++ b/component-model/src/tutorial.md @@ -2,21 +2,35 @@ If you like to learn by doing, this tutorial will walk through how to build, compose, and run components through a calculator example. Calculators can conduct many operations: add, subtract, -multiply, and so on. In this example, each operation will be a component, that will be composed with +multiply, and so on. + +In this example, each operation will be a component, that will be composed with an `eval-expression` component that will evaluate the expression using the expected operator. With one operation per component, this calculator is exaggeratedly granular to show how independent logic -of an application can be contained in a component. In production, components will likely have a -larger scope than a simple mathematical operation. +of an application can be contained in a component. + +In production, components will likely have a larger scope than a simple mathematical operation. + +Our eventual solution will involve three components: + +1. A calculator engine, +2. An addition operation +3. A command-line interface. -Our eventual solution will involve three components: one for the calculator engine, one for the -addition operation, and one for the command-line interface. Once we have built these as separate -Wasm components, we will compose them into a single runnable component, and test it using the -`wasmtime` CLI. +Once we have built these as separate Wasm components, we will compose them into a single runnable +component, and test it using the [`wasmtime` CLI][wasmtime]. + +[wasmtime]: https://wasmtime.dev/ ## The calculator interface -For tutorial purposes, we are going to put our "calculator engine" and "addition operation" interfaces into two separate WIT packages, each containing one WIT file. This may seem excessive, but the reason is to illustrate real-world use cases where components come from different authors and packages. -These files can be found in the component book repository in the [`wit` directory](https://github.com/bytecodealliance/component-docs/tree/main/component-model/examples/tutorial/wit) under `wit/adder/world.wit` and `wit/calculator/world.wit`: +For tutorial purposes, we are going to put our "calculator engine" and "addition operation" interfaces into two separate WIT packages, each containing one WIT file. + +This setup may seem excessive, but it illustrates a real-world use case where components come +from different authors and packages. + +These files can be found in the component book repository in the [`examples/tutorial/wit` directory](https://github.com/bytecodealliance/component-docs/tree/main/component-model/examples/tutorial/wit) under `wit/adder/world.wit` and `wit/calculator/world.wit`: + ```wit // wit/adder/world.wit package docs:adder@0.1.0; @@ -28,7 +42,9 @@ These files can be found in the component book repository in the [`wit` director world adder { export add; } +``` +```wit // wit/calculator/world.wit package docs:calculator@0.1.0; @@ -47,7 +63,6 @@ These files can be found in the component book repository in the [`wit` director world app { import calculate; } - ``` These files define: @@ -58,42 +73,52 @@ These files define: (such as `add`), meaning it relies on other components to perform those operations. * An interface `calculate` that contains an evaluate function and an enum that delineates the operations that can be involved in a calculation. In this tutorial, the only operation is `add`. -* A world `app` describing the "primary" app component, which imports the `calculate` interface. +* A world `app` describing the "primary" app component, which imports the `calculate` interface. This component will take in command line arguments and pass them to the `eval-expression` function of the calculator component. - ## Create an `add` component Reference the [language guide](language-support.md) and [authoring components documentation](creating-and-consuming/authoring.md) to create a component that implements the -`adder` world of `adder/wit/world.wit`. For reference, see the completed +`adder` world of `adder/wit/world.wit`. + +For reference, see the completed [example](https://github.com/bytecodealliance/component-docs/tree/main/component-model/examples/tutorial/adder/). ## Create a `calculator` component Reference the [language guide](language-support.md) and [authoring components documentation](creating-and-consuming/authoring.md) to create a component that implements the -`calculator` world of `wit/calculator/world.wit`. For reference, see the completed -[example](https://github.com/bytecodealliance/component-docs/tree/main/component-model/examples/tutorial/calculator/). The component should import the `add` function from the -`adder` world and call it if the `op` enum matches `add`. +`calculator` world of `wit/calculator/world.wit`. + +For reference, see the completed +[example](https://github.com/bytecodealliance/component-docs/tree/main/component-model/examples/tutorial/calculator/). + +Once complete, the component should import the `add` function from the `adder` world and call it if the `op` enum matches `add`. ## Create a `command` component A _command_ is a component with a specific export that allows it to be executed directly by -`wasmtime` (or other `wasi:cli` hosts). The host expects it to export the [`wasi:cli/run` +`wasmtime` (or other `wasi:cli` hosts). + +The WebAssembly host expects it to export the [`wasi:cli/run` interface](https://github.com/WebAssembly/wasi-cli/blob/main/wit/run.wit), which is the equivalent -of the `main` function to WASI. `cargo-component` will automatically resolve a Rust `bin` package +of the [`main` function][wiki-entrypoint] to WASI. + +[`cargo-component`][cargo-component] will automatically resolve a Rust `bin` package with a `main` function to a component with `wasi:cli/run` exported. Scaffold a new Wasm application with a `command` component: -```sh +```console cargo component new command --command ``` This component will implement the [`app`](https://github.com/bytecodealliance/component-docs/tree/main/component-model/examples/tutorial/wit/calculator.wit) world, which -imports the `calculate` interface. In `Cargo.toml`, point `cargo-component` to the WIT file and -specify that it should pull in bindings for the `app` world from the path to `calculator.wit`: +imports the `calculate` interface. + +In `Cargo.toml`, point `cargo-component` to the WIT file and specify that it should pull in bindings +for the `app` world from the path to `calculator.wit`: ```toml [package.metadata.component.target] @@ -108,19 +133,27 @@ Since the calculator world imports the `add` interface, the command component ne ``` Now, implement a command line application that: -1. takes in three arguments: two operands and the name of an operator ("1 2 add") -2. parses the operator name and ensures it is supported in the `op` enum -3. calls the `calculate` interface's `eval_expression`, passing in the arguments. +1. Takes in three arguments: two operands and the name of an operator ("1 2 add") +2. Parses the operator name and ensures it is supported in the `op` enum +3. Calls the `calculate` interface's `eval_expression`, passing in the arguments. For reference, see a completed [example](https://github.com/bytecodealliance/component-docs/tree/main/component-model/examples/tutorial/command/). +[wiki-entrypoint]: https://en.wikipedia.org/wiki/Entry_point +[cargo-component]: https://crates.io/crates/cargo-component + ## Composing the calculator Now, we are ready to bring our components together into one runnable calculator component, using -`wac`. We will first compose the calculator component with the add component to satisfy it's -imports. We then compose that resolved calculator component with the command component to satisfy -its `calculate` imports. The result is a command component that has all its imports satisfied and -exports the `wasi:cli/run` function, which can be executed by `wasmtime`. +`wac`. + +We will: + +1. Compose the calculator component with the add component to satisfy the calculator component's `adder` import +2. Compose that resolved calculator component once more with the command component to satisfy the command component's `calculate` import. + +The result is a fully-formed command component that has all its imports satisfied and has a single +export (the `wasi:cli/run` interface), which can be executed by [`wasmtime`][wasmtime]. ```sh wac plug calculator.wasm --plug adder.wasm -o composed.wasm @@ -132,14 +165,16 @@ wac plug command.wasm --plug composed.wasm -o final.wasm ## Running the calculator Now it all adds up! Run the final component with the `wasmtime` CLI, ensuring you are using a -[`v14.0.0` or greater release](https://github.com/bytecodealliance/wasmtime/releases), as earlier releases of -the `wasmtime` command line do not include component model support. +[recent release][wasmtime-releases] (`v14.0.0` or greater), as earlier releases of +the `wasmtime` CLI do not include component model support. -```sh +``` wasmtime run final.wasm 1 2 add 1 + 2 = 3 ``` +[wasmtime-releases]: https://github.com/bytecodealliance/wasmtime/releases + ## To infinity and beyond! To expand the exercise to add more components, modify `calculator.wit` to add another operator world From 3eee31e91eea82b33fefee9a88012acbb7f2dd21 Mon Sep 17 00:00:00 2001 From: Victor Adossi Date: Tue, 18 Mar 2025 18:17:22 +0900 Subject: [PATCH 118/175] chore(host): add note about async-std, update host Signed-off-by: Victor Adossi --- .../examples/example-host/Cargo.toml | 5 +- .../examples/example-host/README.md | 46 ++++++++++++++----- .../examples/example-host/src/async_add.rs | 2 +- .../examples/example-host/src/sync_add.rs | 2 +- 4 files changed, 40 insertions(+), 15 deletions(-) diff --git a/component-model/examples/example-host/Cargo.toml b/component-model/examples/example-host/Cargo.toml index c25b417..b364a90 100644 --- a/component-model/examples/example-host/Cargo.toml +++ b/component-model/examples/example-host/Cargo.toml @@ -2,10 +2,13 @@ name = "example-host" version = "0.1.0" edition = "2021" +description = """ +Example Rust-based WebAssembly host that executes WebAssembly components +""" [dependencies] +anyhow = "1.0.72" async-std = { version = "1.13", features = ["attributes"] } clap = { version = "4", features = ["derive"] } wasmtime = "27.0" wasmtime-wasi = "27.0" -anyhow = "1.0.72" diff --git a/component-model/examples/example-host/README.md b/component-model/examples/example-host/README.md index be423e5..085cc33 100644 --- a/component-model/examples/example-host/README.md +++ b/component-model/examples/example-host/README.md @@ -1,25 +1,47 @@ # Rust Host Application for Example Components -This is a native Rust CLI application that can run components of the following -`example` world, which simply defines an add function that takes in two -parameters. +This is a native Rust CLI application that can run [WebAssembly Components][wasm-components] of the `adder` world, +defined in [`examples/tutorial/wit/adder/world.wit`][adder-wit], using [WebAssembly Interface Types ("WIT")][wit]. + +The `adder` world exports an interface called `add` which defines an function that takes two unsigned and adds them: ```wit -package example:component; +package docs:adder@0.1.0; + +interface add { + add: func(a: u32, b: u32) -> u32; +} -world example { - export add: func(x: s32, y: s32) -> s32; +world adder { + export add; } ``` -The application uses [`wasmtime`](https://github.com/bytecodealliance/wasmtime) -crates to generate Rust bindings, bring in WASI worlds, and executes the `add` -function of the component. +The application uses WebAssembly ecosystem crates (e.g. [`wasmtime`][wasmtime]) to generate Rust bindings, instantiate WASI worlds, and +executes the exported `add` function (`docs:adder/add.add`) of a provided component. + +This host binary takes in two unsigned 32bit integers (`u32`) operands and a path to a component. This host then: -It takes in two operands and a path to a component. It passes the operands to -the component and prints the result generated by the component. +1. Loads the component from the given path +2. Instantiates it as an implementer of the `adder` world +3. Executes the `add` function exported by the component +4. Prints the result -```sh +If running with [`cargo`][cargo] (part of the [Rust toolchain][rust-toolchain]), then you should see output like the following: + +``` $ cargo run --release -- 1 2 add.wasm 1 + 2 = 3 ``` + +> [!NOTE] +> `add.wasm` is available in thsi folder, but can be replaced with your own built WebAssembly component +> at any time (written in any language that supports WebAssembly Components), given that it satisfies +> the `adder` world described above. + +[wasmtime]: https://github.com/bytecodealliance/wasmtime +[wasm-components]: https://component-model.bytecodealliance.org/design/components.html +[adder-wit]: https://github.com/bytecodealliance/component-docs/tree/main/component-model/examples/tutorial/wit/adder/world.wit +[wit]: https://component-model.bytecodealliance.org/design/wit.html +[cargo]: https://doc.rust-lang.org/cargo/ +[rust-toolchain]: https://www.rust-lang.org/tools/install diff --git a/component-model/examples/example-host/src/async_add.rs b/component-model/examples/example-host/src/async_add.rs index e635946..48ec9ce 100644 --- a/component-model/examples/example-host/src/async_add.rs +++ b/component-model/examples/example-host/src/async_add.rs @@ -18,7 +18,7 @@ mod bindings { /// Perform the add operation for a given WebAssembly component /// /// This operation asynchronously (as opposed to synchronously -/// without an async runtime like `tokio`). +/// without an async runtime like `tokio` or `async-std`). /// /// # Arguments /// diff --git a/component-model/examples/example-host/src/sync_add.rs b/component-model/examples/example-host/src/sync_add.rs index f11758d..fa940f1 100644 --- a/component-model/examples/example-host/src/sync_add.rs +++ b/component-model/examples/example-host/src/sync_add.rs @@ -18,7 +18,7 @@ mod bindings { /// Perform a add operation for a given WebAssembly component /// /// This operation happens synchronously (as opposed to asynchronously -/// powered by an async runtime like `tokio`). +/// powered by an async runtime like `tokio` or `async-std`). /// /// # Arguments /// From b0e3f25577062d9d7e4dac29b1c2ff3c62ece70c Mon Sep 17 00:00:00 2001 From: Victor Adossi Date: Tue, 18 Mar 2025 19:28:03 +0900 Subject: [PATCH 119/175] chore(c): update C language guide Signed-off-by: Victor Adossi --- .../examples/tutorial/wit/adder/world.wit | 2 +- component-model/src/language-support/c.md | 141 ++++++++++++++---- 2 files changed, 112 insertions(+), 31 deletions(-) diff --git a/component-model/examples/tutorial/wit/adder/world.wit b/component-model/examples/tutorial/wit/adder/world.wit index 328f7f4..59a4685 100644 --- a/component-model/examples/tutorial/wit/adder/world.wit +++ b/component-model/examples/tutorial/wit/adder/world.wit @@ -1,7 +1,7 @@ package docs:adder@0.1.0; interface add { - add: func(a: u32, b: u32) -> u32; + add: func(x: u32, y: u32) -> u32; } world adder { diff --git a/component-model/src/language-support/c.md b/component-model/src/language-support/c.md index da619d3..7e419a3 100644 --- a/component-model/src/language-support/c.md +++ b/component-model/src/language-support/c.md @@ -1,62 +1,107 @@ -## C/C++ Tooling +# C/C++ Tooling -### Building a Component with `wit-bindgen` and `wasm-tools` +WebAssembly components can be built from C and C++ using [`clang`][clang], the C language family frontend for [LLVM][llvm]. -[`wit-bindgen`](https://github.com/bytecodealliance/wit-bindgen) is a tool to generate guest language bindings from a given `.wit` file. Although it is less integrated into language toolchains than other tools such as `cargo-component`, it can currently generate source-level bindings for `Rust`, `C`, `Java (TeaVM)`, and `TinyGo`, with the ability for more language generators to be added in the future. +[`wit-bindgen`](https://github.com/bytecodealliance/wit-bindgen) is a tool to generate guest language bindings from a +given `.wit` file. -`wit-bindgen` can be used to generate C applications that can be compiled directly to Wasm modules using `clang` with a `wasm32-wasi` target. +Although `wit-bindgen` is a standalone tool (whereas some languages have more integrated toolchains [`cargo-component`][cargo-component]), +`wit-bindgen` can generate source-level bindings for `Rust`, `C`, `Java (TeaVM)`, and `TinyGo`, with the ability for more +language generators to be added in the future. + +`wit-bindgen` can be used to build C applications that can be compiled directly to Wasm modules using [`clang`][clang] with a [`wasm32-wasi`][clang-tgt-wasm32-wasi] target. + +[clang]: https://clang.llvm.org/ +[clang-tgt-wasm32-wasi]: https://clang.llvm.org/docs/ClangCommandLineReference.html#webassembly +[llvm]: https://llvm.org/ + +## 1. Download dependencies First, install the CLI for [`wit-bindgen`](https://github.com/bytecodealliance/wit-bindgen#cli-installation), [`wasm-tools`](https://github.com/bytecodealliance/wasm-tools), and the [`WASI SDK`](https://github.com/webassembly/wasi-sdk). The WASI SDK will install a local version of `clang` configured with a wasi-sysroot. Follow [these instructions](https://github.com/WebAssembly/wasi-sdk#use) to configure it for use. Note that you can also use your installed system or emscripten `clang` by building with `--target=wasm32-wasi` but you will need some artifacts from WASI SDK to enable and link that build target (more information is available in WASI SDK's docs). +## 2. Generate program skeleton from WIT + Start by generating a C skeleton from `wit-bindgen` using the [sample `adder/world.wit` file](https://github.com/bytecodealliance/component-docs/tree/main/examples/tutorial/wit/adder/world.wit): ``` > wit-bindgen c path/to/adder/world.wit -Generating "example.c" -Generating "example.h" -Generating "example_component_type.o" +Generating "adder.c" +Generating "adder.h" +Generating "adder_component_type.o" ``` -This has generated several files - an `example.h` (based on the name of your `world`) with the prototype of the `add` function (prefixed by `exports_`) - `int32_t exports_example_add(int32_t x, int32_t y);`, as well as some generated code in `example.c` that interfaces with the component model ABI to call your function. Additionally, `example_component_type.o` contains object code referenced in `example.c` from an `extern` that must be linked via clang. +This has generated several files: -Next, create an `add.c` that implements your function defined in `example.h`: +1.`adder.h` (based on the `adder` world) with the prototype of the `add` function (prefixed by `exports_`) - `uint32_t exports_docs_adder_add_add(uint32_t x, uint32_t y);`. +2. `adder.c` that interfaces with the component model ABI to call your function. +3. `adder_component_type.o` which contains object code referenced in `adder.c` from an `extern` that must be linked via `clang`. + +## 3. Write program code + +Next, create an `component.c` that implements the `adder` world (i.e. the interface defined in `adder.h`): ```c -#include "example.h" +#include "adder.h" -int32_t exports_example_add(int32_t x, int32_t y) +uint32_t exports_docs_adder_add_add(uint32_t x, uint32_t y) { return x + y; } ``` +## 4. Compile a WebAssembly module (P1) with `clang` + Now, you can compile the function into a Wasm module via clang: ```console -clang add.c example.c example_component_type.o -o add-core.wasm -mexec-model=reactor +clang component.c adder.c adder_component_type.o -o adder.wasm -mexec-model=reactor ``` > Use the `clang` included in the WASI SDK installation, for example at `/bin/clang`. +> +> Alternatively, you can also use the published [`ghcr.io/webassembly/wasi-sdk` container images][wasi-sdk-images] +> for performing builds. +> +> For example, to enter a container with `wasi-sdk` installed: +> +> ``` +> docker run --rm -it --mount type=bind,src=path/to/app/src,dst=/app ghcr.io/webassembly/wasi-sdk:wasi-sdk-25 +> ``` +> +> See also: [`Dockerfile` in `wasi-sdk`][wasi-sdk-dockerfile] -Next, you need to transform the module into a component. For this example, you can use `wasm-tools component new`: +[wasi-sdk-images]: https://github.com/WebAssembly/wasi-sdk/pkgs/container/wasi-sdk +[wasi-sdk-dockerfile]: https://github.com/WebAssembly/wasi-sdk/blob/main/docker/Dockerfile + +## 5. Convert the P1 component to a P2 component with `wasm-tools` + +Next, we need to transform the P1 component to a P2 component. To do this, we can use `wasm-tools component new`: ```console -wasm-tools component new ./add-core.wasm -o add-component.wasm +wasm-tools component new ./adder.wasm -o adder.component.wasm ``` -Do note this will fail if your code references any WASI APIs that must be imported. This requires an additional step as the WASI SDK still references `wasi_snapshot_preview1` APIs that are not compatible directly with components. +> [!NOTE] +> The `.component.` extension has no special meaning -- `.wasm` files can be either modules or components. + +## 6. (optional) Build a WASI-enabled WebAssembly (P2) component with `wasm-tools` + +Do note `wasm-tools component new` may fail if your code references any [WASI][wasi] APIs that must be imported, for +example via standard library imports like `stdio.h`. + +Using WASI interfaces requires an additional step as the WASI SDK still references `wasi_snapshot_preview1` APIs that are not compatible directly with components. For example, modifying the above to reference `printf()` would compile: ```c -#include "example.h" +#include "adder.h" #include -int32_t exports_example_add(int32_t x, int32_t y) +uint32_t exports_docs_adder_add_add(uint32_t x, uint32_t y) { - int32_t result = x + y; + uint32_t result = x + y; printf("%d", result); return result; } @@ -65,7 +110,7 @@ int32_t exports_example_add(int32_t x, int32_t y) However, the module would fail to transform to a component: ``` ->wasm-tools component new ./add-core.wasm -o add-component.wasm +>wasm-tools component new ./adder.wasm -o adder.component.wasm error: failed to encode a component from module Caused by: @@ -74,18 +119,24 @@ Caused by: 2: module requires an import interface named `wasi_snapshot_preview1` ``` -Install the appropriate reactor adapter module [as documented here](https://github.com/bytecodealliance/wit-bindgen#creating-components-wasi) - you can either get the linked release of `wasi_snapshot_preview1.reactor.wasm` and rename it to `wasi_snapshot_preview1.wasm`, or build it directly from source in `wasmtime` following the [instructions here](https://github.com/bytecodealliance/wasmtime/tree/main/crates/wasi-preview1-component-adapter) (make sure you `git submodule update --init` first). +To build a P2 component that uses [WASI][wasi] interfaces from a P1 component, we'll need to make use of adapter modules. + +Install the appropriate reactor adapter module [as documented here](https://github.com/bytecodealliance/wit-bindgen#creating-components-wasi). + +You can either get [the linked release][wasmtime-releases] of `wasi_snapshot_preview1.reactor.wasm` and rename it to `wasi_snapshot_preview1.wasm`, or build it directly from source in `wasmtime` following the [instructions here](https://github.com/bytecodealliance/wasmtime/tree/main/crates/wasi-preview1-component-adapter) (make sure you `git submodule update --init` first). Now, you can adapt preview1 to preview2 to build a component: ```console -wasm-tools component new add-core.wasm --adapt wasi_snapshot_preview1.wasm -o add-component.wasm +wasm-tools component new adder.wasm --adapt wasi_snapshot_preview1.wasm -o adder.component.wasm ``` +## 7. Inspect the built component + Finally, you can inspect the embedded wit to see your component (including any WASI imports if necessary): ``` ->wasm-tools component wit add-component.wasm +>wasm-tools component wit adder.component.wasm package root:component; world root { @@ -108,13 +159,34 @@ world root { ... ``` -You must use the `wasi_snapshot_preview1.wasm` from the same version of wasmtime that the host is using to ensure the WASI interface versions match. Additionally, the host must explicitly [add WASI to the linker](https://docs.wasmtime.dev/api/wasmtime_wasi/fn.add_to_linker_sync.html) to run the app. If these are not configured correctly, you may see errors like the following: +### 8. Running the component from the example host + +> [!WARNING] +> You must be careful to use a version of the adapter (`wasi_snapshot_preview1.wasm`) that is compatible with the version of +> `wasmtime` that will be used, to ensure that WASI interface versions (and relevant implementation) match. + +This repository contains an [example WebAssembly host][example-host] written in Rust that can run components that implement the `adder` world. + +> [!NOTE] +> When hosts run components that use WASI interfaces, they must *explicitly* [add WASI to the linker][add-to-linker] to run the built component. + +A successful run should show the following output: ``` -cargo run --release -- 1 2 add-component.wasm - Compiling example-host v0.1.0 (/Users/sean/code/component-docs/component-model/examples/example-host) +cargo run --release -- 1 2 adder.component.wasm + Compiling example-host v0.1.0 (/path/to/component-docs/component-model/examples/example-host) Finished `release` profile [optimized] target(s) in 7.85s - Running `target/release/example-host 1 2 add-component.wasm` + Running `target/debug/example-host 1 2 /tmp/docs/c/adder.component.wasm` +1 + 2 = 3 +``` + +If *not* configured correctly, you may see errors like the following: + +``` +cargo run --release -- 1 2 adder.component.wasm + Compiling example-host v0.1.0 (/path/to/component-docs/component-model/examples/example-host) + Finished `release` profile [optimized] target(s) in 7.85s + Running `target/release/example-host 1 2 adder.component.wasm` Error: Failed to instantiate the example world Caused by: @@ -123,10 +195,19 @@ Caused by: 2: resource implementation is missing ``` -### Running a Component from C/C++ Applications +This kind of error normally indicates that the host in question does not contain satisfy WASI imports. + +[host]: https://github.com/bytecodealliance/component-docs/tree/main/component-model/examples/example-host +[add-to-linker]: https://docs.wasmtime.dev/api/wasmtime_wasi/fn.add_to_linker_sync.html + +## 9. Running a Component from C/C++ Applications -It is not yet possible to run a Component using the `wasmtime` `c-api` - [see this issue](https://github.com/bytecodealliance/wasmtime/issues/6987). The c-api is preferred to trying to directly use the Rust crate in C++. +It is not yet possible to run a WebAssembly Component using the C API of `wasmtime` `c-api`. See [`wasmtime` issue #6987](https://github.com/bytecodealliance/wasmtime/issues/6987) for more details. +The c-api is preferred over directly using the example host Rust crate in C++. -However, C/C++ language guest components can be composed with components written in any other language and run by their toolchains, or even composed with a C language command component and run via the `wasmtime` CLI or any other host. +However, C/C++ language guest components can be composed with components written in any other language and +run by their toolchains, or even composed with a C language command component and run via the `wasmtime` CLI +or any other host. -See the [Rust Tooling guide](../language-support/rust.md#running-a-component-from-rust-applications) for instructions on how to run this component from the Rust `example-host` (replacing the path to `add.wasm` with your `add-component` above). +See the [Rust Tooling guide](../language-support/rust.md#running-a-component-from-rust-applications) for instructions on how to run this component from +the Rust `example-host` (replacing the path to `add.wasm` with your `add-component` above). From 84cd086ed051f76b8368873a169c6dd474a67143 Mon Sep 17 00:00:00 2001 From: Victor Adossi Date: Tue, 18 Mar 2025 19:46:36 +0900 Subject: [PATCH 120/175] chore(lang/go): update Golang lang docs Signed-off-by: Victor Adossi --- component-model/src/language-support/go.md | 24 ++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/component-model/src/language-support/go.md b/component-model/src/language-support/go.md index 79962f7..15b1a1f 100644 --- a/component-model/src/language-support/go.md +++ b/component-model/src/language-support/go.md @@ -1,7 +1,11 @@ # Go Tooling -The [TinyGo compiler](https://tinygo.org/) v0.34.0 and above has native support for the WebAssembly Component Model and WASI 0.2.0. This guide walks through building a component that implements `example` world defined in the [`add.wit` -package](../../examples/example-host/add.wit). The component will implement a simple add function. +The [TinyGo compiler](https://tinygo.org/) v0.34.0 and above has native support for the WebAssembly Component Model and WASI 0.2.0. + +This guide walks through building a component that implements `adder` world defined in the [`adder/world.wit` package][adder-wit]. +The component will implement the `adder` world, which contains `add` interface with a `add` function. + +[adder-wit]: https://github.com/bytecodealliance/component-docs/tree/main/component-model/examples/tutorial/wit/adder/world.wit ## 1. Install the tools @@ -20,7 +24,7 @@ Optional: Install the `wkg` CLI tool to resolve the imports in the WIT file. The ## 2. Determine which World the Component will Implement -The `wasip2` target of TinyGo assumes that the component is targeting `wasi:cli/command@0.2.0` world so it requires the imports of `wasi:cli/imports@0.2.0`. We need to include them in the `add.wit`. +The `wasip2` target of TinyGo assumes that the component is targeting `wasi:cli/command@0.2.0` world so it requires the imports of `wasi:cli/imports@0.2.0`. We need to include them in the `add.wit`. Tools like `wkg` can be convenient to build a complete WIT package by resolving the imports. @@ -36,7 +40,7 @@ world adder { Running the `wkg wit build` command will resolve the imports and generate the complete WIT file encoded as a Wasm component. ```console -$ wkg wit build +$ wkg wit build WIT package written to docs:adder@0.1.0.wasm ``` @@ -123,7 +127,7 @@ Under the hood, TinyGo invokes `wasm-tools` to embed the WIT file to the module $ tinygo build -target=wasip2 -o add.wasm --wit-package docs:adder@0.1.0.wasm --wit-world adder main.go ``` -We now have an add component that satisfies our `adder` world, exporting the `add` function, which +We now have an add component that satisfies our `adder` world, exporting the `add` function, which we can confirm using the `wasm-tools component wit` command: ```console @@ -144,12 +148,16 @@ world root { ## 5. Testing the `add` Component To run our add component, we need to use a host program with a WASI runtime that understands the -`example` world. We've provided an [`example-host`](../../examples/example-host/README.md) to do -just that. It calls the `add` function of a passed in component providing two operands. To use it, -clone this repository and run the Rust program: +`example` world -- we've provided an [`example-host`][example-host] that does just that. + +The example host calls the `add` function of a passed in component providing two operands. + +To use the example host, clone this repository and run the Rust program: ```console git clone git@github.com:bytecodealliance/component-docs.git cd component-docs/component-model/examples/example-host cargo run --release -- 1 2 /path/to/add.wasm ``` + +[example-host]: https://github.com/bytecodealliance/component-docs/tree/main/component-model/examples/example-host From cdb4a51c34f69463727df508e5f1224fe5b8b754 Mon Sep 17 00:00:00 2001 From: Victor Adossi Date: Tue, 18 Mar 2025 19:46:56 +0900 Subject: [PATCH 121/175] fix(lang/py): update python lang docs Signed-off-by: Victor Adossi --- component-model/src/language-support/python.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/component-model/src/language-support/python.md b/component-model/src/language-support/python.md index a651cff..0f606ee 100644 --- a/component-model/src/language-support/python.md +++ b/component-model/src/language-support/python.md @@ -97,8 +97,8 @@ Component built successfully ## Running components from Python Applications -Wasm components can also be invoked from Python applications. This walks through using tooling -to call the [`app.wasm` component from the examples](../../examples/example-host/add.wasm). +Wasm components can also be invoked from Python applications. This section walks through using tooling +to call the [pre-built `app.wasm` component][add-wasm] in the examples. > `wasmtime-py` is only able to run components built with `componentize-py` when the `--stub-wasi` option is used at build time. This is because `wasmtime-py` does not yet support [resources](../design/wit.md#resources), and `componentize-py` by default generates components which use resources from the `wasi:cli` world. See [this example](https://github.com/bytecodealliance/componentize-py/tree/main/examples/sandbox) of using the `--stub-wasi` option to generate a `wasmtime-py`-compatible component. @@ -141,3 +141,5 @@ Run the Python host program: $ python3 host.py 1 + 2 = 3 ``` + +[add-wasm]: https://github.com/bytecodealliance/component-docs/blob/main/component-model/examples/example-host/add.wasm From bf164cd79647499ff6f5dac6d95b2ec2eb22a7f3 Mon Sep 17 00:00:00 2001 From: Victor Adossi Date: Fri, 21 Mar 2025 22:31:49 +0900 Subject: [PATCH 122/175] refactor(lang/csharp): update csharp docs Signed-off-by: Victor Adossi --- .../src/language-support/csharp.md | 136 +++++++++++++----- 1 file changed, 104 insertions(+), 32 deletions(-) diff --git a/component-model/src/language-support/csharp.md b/component-model/src/language-support/csharp.md index 4dc5930..d94df79 100644 --- a/component-model/src/language-support/csharp.md +++ b/component-model/src/language-support/csharp.md @@ -1,13 +1,14 @@ # C# Tooling -## Building a Component with `componentize-dotnet` +WebAssembly components in C# can be built with [componentize-dotnet][componentize-dotnet], +a a NuGet package that can be used to create a fully AOT-compiled +component, giving .NET developers a component experience comparable to those in Rust and TinyGo. + +[componentize-dotnet]: https://github.com/bytecodealliance/componentize-dotnet -[componentize-dotnet](https://github.com/bytecodealliance/componentize-dotnet) makes it easy to -compile your code to WebAssembly components using a single tool. This Bytecode Alliance project is a -NuGet package that can be used to create a fully AOT-compiled component, giving .NET developers a -component experience comparable to those in Rust and TinyGo. +## Building a Component with `componentize-dotnet` -componentize-dotnet serves as a one-stop shop for .NET developers, wrapping several tools into one: +[`componentize-dotnet`][componentize-dotnet] serves as a one-stop shop, wrapping several tools into one: - [NativeAOT-LLVM](https://github.com/dotnet/runtimelab/tree/feature/NativeAOT-LLVM) (compilation) - [wit-bindgen](https://github.com/bytecodealliance/wit-bindgen) (WIT imports and exports) @@ -15,9 +16,14 @@ componentize-dotnet serves as a one-stop shop for .NET developers, wrapping seve - [WASI SDK](https://github.com/WebAssembly/wasi-sdk) (SDK used by NativeAOT-LLVM) - [Wac](https://github.com/bytecodealliance/wac) (used to compose components) -First, install the .NET SDK. For this walkthrough, we’ll use the [.NET 10 SDK preview](https://dotnet.microsoft.com/en-us/download/dotnet/10.0). +First, install the .NET SDK. For this walkthrough, we’ll use the [.NET 10 SDK preview][dotnet-sdk]. You should also have [wasmtime](https://wasmtime.dev/) installed so you can run the binary that you produce. +[dotnet-sdk]: https://dotnet.microsoft.com/en-us/download/dotnet/10.0 +[wasmtime]: https://wasmtime.dev/ + +## 1. Create a new project + Once you have the .NET SDK installed, create a new project: ```sh @@ -26,10 +32,11 @@ dotnet new componentize.wasi.cli -o adder cd adder ``` -Next, create or download the WIT world you would like to target. For this example we will use an -[`adder` -world](https://github.com/bytecodealliance/component-docs/tree/main/component-model/examples/tutorial/wit/adder/world.wit) -with an `add` function: +## 2. Create or download your WIT world + +Next, create or download the WIT world you would like to target. + +For this example we will use the [`adder` world][adder-world], with an `add` function (e.g. to `wit/component.wit`): ```wit package docs:adder@0.1.0; @@ -47,32 +54,48 @@ In the `adder.csproj` project file, add a new ``: ```xml - + ``` -Since this component will only export a function dotnet considers this a library project. Let's update -the `` to be a library in the `adder.csproj`: +Since this component will only export a function dotnet considers this a library project. +Let's update the `` to be a library in the `adder.csproj`: -```xml -Library +```diff +- Exe ++ Library ``` -And remove the `Program.cs` file: +And remove the automatically generated `Program.cs` file: ```bash rm Program.cs ``` -At this point, if you try to build the project with `dotnet build`, you'll get an error like "The name -'ExampleWorldImpl' does not exist in the current context". This is because you've said you'll -provide an implementation, but haven't yet done so. To fix this, add the following code to your -project in a file called `adder.cs`: +[adder-world]: https://github.com/bytecodealliance/component-docs/tree/main/component-model/examples/tutorial/wit/adder/world.wit + +## 3. Write the implementation for the `adder` world + +If you try to build the project with `dotnet build`, you'll get an error like the following: + +``` +➜ dotnet build +Restore complete (8.6s) +You are using a preview version of .NET. See: https://aka.ms/dotnet-support-policy + adder failed with 1 error(s) (25.6s) + /path/to/adder/obj/Debug/net10.0/wasi-wasm/wit_bindgen/AdderWorld.wit.exports.docs.adder.v0_1_0.AddInterop.cs(15,19): error CS0103: The name 'AddImpl' does not exist in the current context + +Build failed with 1 error(s) in 34.6s +``` + +This is because we've promised an implementation, but haven't yet written one for the `adder` world. + +To fix this, add the following code to your in a file called `Component.cs`: ```csharp -namespace ExampleWorld; +namespace AdderWorld; -public class ExampleWorldImpl : IExampleWorld +public class AdderWorldImpl : IAdderWorld { public static uint Add(uint x, uint y) { @@ -81,7 +104,7 @@ public class ExampleWorldImpl : IExampleWorld } ``` -If we build it: +Then, we can build our component: ```sh dotnet build @@ -89,9 +112,50 @@ dotnet build The component will be available at `bin/Debug/net10.0/wasi-wasm/native/adder.wasm`. +### 5. (optional) the component from the example host + +> [!WARNING] +> You must be careful to use a version of the adapter (`wasi_snapshot_preview1.wasm`) that is compatible with the version of +> `wasmtime` that will be used, to ensure that WASI interface versions (and relevant implementation) match. + +This repository contains an [example WebAssembly host][example-host] written in Rust that can run components that implement the `adder` world. + +> [!NOTE] +> When hosts run components that use WASI interfaces, they must *explicitly* [add WASI to the linker][add-to-linker] to run the built component. + +A successful run should show the following output: + +``` +cargo run --release -- 1 2 adder.component.wasm + Compiling example-host v0.1.0 (/path/to/component-docs/component-model/examples/example-host) + Finished `release` profile [optimized] target(s) in 7.85s + Running `target/debug/example-host 1 2 /tmp/docs/c/adder.component.wasm` +1 + 2 = 3 +``` + +If *not* configured correctly, you may see errors like the following: + +``` +cargo run --release -- 1 2 adder.component.wasm + Compiling example-host v0.1.0 (/path/to/component-docs/component-model/examples/example-host) + Finished `release` profile [optimized] target(s) in 7.85s + Running `target/release/example-host 1 2 adder.component.wasm` +Error: Failed to instantiate the example world + +Caused by: + 0: component imports instance `wasi:io/error@0.2.2`, but a matching implementation was not found in the linker + 1: instance export `error` has the wrong type + 2: resource implementation is missing +``` + +This kind of error normally indicates that the host in question does not contain satisfy WASI imports. + +[host]: https://github.com/bytecodealliance/component-docs/tree/main/component-model/examples/example-host +[add-to-linker]: https://docs.wasmtime.dev/api/wasmtime_wasi/fn.add_to_linker_sync.html + ## Building a component that exports an interface -The previous example uses a WIT file that exports a function. However, you'll often prefer to export an interface, +The previous example uses a WIT file that exports a function. However, you'll often prefer to export an interface, either to comply with an existing specification or to capture a set of functions and types that tend to go together. Let's expand our `example` world to export an interface rather than directly export the function. We are also adding the `hostapp` world to our WIT file which we will implement @@ -116,8 +180,10 @@ world hostapp { ``` If you peek at the bindings, you'll notice that we now implement a class for the `add` interface -rather than for the `example` world. This is a consistent pattern. As you export more interfaces -from your world, you implement more classes. Our `adder.cs` example gets the slight update of: +rather than for the `example` world -- this is a consistent pattern. As you export more interfaces +from your world, you implement more classes. + +Our `Component.cs` example gets the slight update of: ```csharp namespace ExampleWorld.wit.exports.example.component; @@ -152,7 +218,9 @@ our `adder` component and call the `add` function. We will later compose this co the `adder` library component we just built. Now we will be taking the `adder` component and executing it from another WebAssembly component. -`dotnet new componentize.wasi.cli` creates a new project that creates an executable. + +`dotnet new componentize.wasi.cli` creates a new project that creates an executable. + Back out of the current project and create a new one: ```sh @@ -211,7 +279,7 @@ Once again, compile your component with `dotnet build`: $ dotnet build Restore complete (0.4s) You are using a preview version of .NET. See: https://aka.ms/dotnet-support-policy - host-app succeeded (1.1s) → bin/Debug/net9.0/wasi-wasm/host-app.dll + host-app succeeded (1.1s) → bin/Debug/net10.0/wasi-wasm/host-app.dll Build succeeded in 2.5s ``` @@ -226,7 +294,10 @@ world, it needs to be composed the first component. You can compose your `host-a your `adder` component by running [`wac plug`](https://github.com/bytecodealliance/wac): ```sh -wac plug bin/Debug/net10.0/wasi-wasm/native/host-app.wasm --plug ../adder/bin/Debug/net10.0/wasi-wasm/native/adder.wasm -o main.wasm +wac plug \ + bin/Debug/net10.0/wasi-wasm/native/host-app.wasm \ + --plug ../adder/bin/Debug/net10.0/wasi-wasm/native/adder.wasm \ + -o main.wasm ``` You can also automate the process by adding the following to your `host-app.csproj`: @@ -237,7 +308,6 @@ You can also automate the process by adding the following to your `host-app.cspr bin/$(Configuration)/$(TargetFramework)/wasi-wasm/native/host-app.wasm ../adder/bin/$(Configuration)/$(TargetFramework)/wasi-wasm/native/adder.wasm - @@ -252,4 +322,6 @@ wasmtime run ./dist/main.wasm 1 + 2 = 3 ``` -Checkout the [componentize-dotnet docs](https://github.com/bytecodealliance/componentize-dotnet) for more configurations options. +Check out the [componentize-dotnet docs][componentize-dotnet-docs] for more configurations options. + +[componentize-dotnet-docs]: https://github.com/bytecodealliance/componentize-dotnet From b0def7682d8211f8f9f3d7d957862eea2c9bb3df Mon Sep 17 00:00:00 2001 From: Victor Adossi Date: Fri, 21 Mar 2025 23:04:22 +0900 Subject: [PATCH 123/175] refactor(lang/go): update go lang docs Signed-off-by: Victor Adossi --- component-model/src/language-support/go.md | 256 +++++++++++++++++---- 1 file changed, 208 insertions(+), 48 deletions(-) diff --git a/component-model/src/language-support/go.md b/component-model/src/language-support/go.md index 15b1a1f..5274529 100644 --- a/component-model/src/language-support/go.md +++ b/component-model/src/language-support/go.md @@ -9,103 +9,262 @@ The component will implement the `adder` world, which contains `add` interface w ## 1. Install the tools -Follow the [TinyGo installation instructions](https://tinygo.org/getting-started/) to install the TinyGo compiler. Additionally, install the `wasm-tools` CLI tool from the [wasm-tools repository](https://github.com/bytecodealliance/wasm-tools/releases). +Follow the [TinyGo installation instructions](https://tinygo.org/getting-started/) to install the TinyGo compiler. + +Additionally, install the `wasm-tools` CLI tool from the [wasm-tools repository](https://github.com/bytecodealliance/wasm-tools/releases). + +> [!WARNING] +> Due to some upstream issues, only `wasm-tools` versions 1.225.0 or earlier can be used with `wit-bindgen-go` +> +> If using the Rust toolchain to install `wasm-tools`, it can be installed like so: +> `cargo install --locked wasm-tools@1.225.0 --force` To verify the installation, run the following commands: -```console +``` $ tinygo version tinygo version 0.34.0 ... $ wasm-tools -V -wasm-tools 1.219.1 ... +wasm-tools 1.255.0 ... ``` -Optional: Install the `wkg` CLI tool to resolve the imports in the WIT file. The `wkg` CLI is a part of the [Wasm Component package manager](https://github.com/bytecodealliance/wasm-pkg-tools/releases) +Optional: Install the [`wkg`][wkg] CLI tool to resolve the imports in the WIT file. The `wkg` CLI is a part of the [Wasm Component package manager](https://github.com/bytecodealliance/wasm-pkg-tools/releases) -## 2. Determine which World the Component will Implement +[wkg]: https://github.com/bytecodealliance/wasm-pkg-tools/tree/main/crates/wkg -The `wasip2` target of TinyGo assumes that the component is targeting `wasi:cli/command@0.2.0` world so it requires the imports of `wasi:cli/imports@0.2.0`. We need to include them in the `add.wit`. +## 2. Create your Go project -Tools like `wkg` can be convenient to build a complete WIT package by resolving the imports. +Now, create your Go project: + +```console +mkdir add && cd add +go mod init example.com +``` + +Ensure that the following `tool`s are installed: + +``` +tool ( + go.bytecodealliance.org/cmd/wit-bindgen-go +) +``` + +> [!NOTE] +> `go tool` was introduced in [Golang 1.24][go-1-24-release] and can be used to manage tooling in Go projects. + +Consider also running `go mod tidy` after adding the above tool. + +[go-1-24-release]: https://go.dev/blog/go1.24 + +## 2. Determine which World the Component will Implement + +Since we will be implementing the [`adder` world][adder-wit], we can copy the WIT to our project, +under the `wit` folder (e.g. `wit/component.wit`): ```wit -# wit/add.wit package docs:adder@0.1.0; + +interface add { + add: func(x: u32, y: u32) -> u32; +} + +world adder { + export add; +} +``` + +The `wasip2` target of TinyGo assumes that the component is targeting `wasi:cli/command@0.2.0` world +(part of [`wasi:cli`][wasi-cli]) so it requires the imports of `wasi:cli/imports@0.2.0`. + +We need to include those interfaces as well in `component.wit`, by editing the `adder` world: + +```wit world adder { include wasi:cli/imports@0.2.0; - export add: func(x: s32, y: s32) -> s32; + export add; } ``` -Running the `wkg wit build` command will resolve the imports and generate the complete WIT file encoded as a Wasm component. +### Using `wkg` to automatically resolve and download imports -```console +Tools like [`wkg`][wkg] can be convenient to build a complete WIT package by resolving the imports. + +Running the `wkg wit fetch` command will resolve the imports and populate your `wit` folder with all relevant +imported namespaces and packages. + +``` $ wkg wit build WIT package written to docs:adder@0.1.0.wasm ``` -Now, create your Go project: +[wasi-cli]: https://github.com/WebAssembly/wasi-cli -```console -$ mkdir add && cd add -$ go mod init example.com -``` +## 3. Generate bindings for the Wasm component -Next, we can generate the bindings for the Wasm component: +Now that we have our WIT definitions bundled together into a WASM file, +we can generate the bindings for our Wasm component, by adding a build directive: ```console -$ go get go.bytecodealliance.org/cmd/wit-bindgen-go -$ go run go.bytecodealliance.org/cmd/wit-bindgen-go generate -o internal/ ./docs:adder@0.1.0.wasm +go tool wit-bindgen-go generate --world adder --out internal ./docs:adder@0.1.0.wasm ``` +> [!NOTE] +> The `go tool` directive (added in [Golang 1.24][go-1-24-release]) installs and enables use of `wit-bindgen-go`, +> part of the Bytecode Alliance suite of Golang tooling. + The `internal` directory will contain the generated Go code that WIT package. ```console $ tree internal internal ├── docs -│ └── adder -│ └── adder -│ ├── adder.exports.go -│ ├── adder.wasm.go -│ ├── adder.wit -│ ├── adder.wit.go -│ └── empty.s +│   └── adder +│   ├── add +│   │   ├── add.exports.go +│   │   ├── add.wasm.go +│   │   ├── add.wit.go +│   │   └── empty.s +│   └── adder +│   └── adder.wit.go └── wasi ├── cli - │ └── stdout - │ ├── empty.s - │ ├── stdout.wasm.go - │ └── stdout.wit.go + │   ├── environment + │   │   ├── empty.s + │   │   ├── environment.wasm.go + │   │   └── environment.wit.go + │   ├── exit + │   │   ├── empty.s + │   │   ├── exit.wasm.go + │   │   └── exit.wit.go + │   ├── stderr + │   │   ├── empty.s + │   │   ├── stderr.wasm.go + │   │   └── stderr.wit.go + │   ├── stdin + │   │   ├── empty.s + │   │   ├── stdin.wasm.go + │   │   └── stdin.wit.go + │   ├── stdout + │   │   ├── empty.s + │   │   ├── stdout.wasm.go + │   │   └── stdout.wit.go + │   ├── terminal-input + │   │   ├── empty.s + │   │   ├── terminal-input.wasm.go + │   │   └── terminal-input.wit.go + │   ├── terminal-output + │   │   ├── empty.s + │   │   ├── terminal-output.wasm.go + │   │   └── terminal-output.wit.go + │   ├── terminal-stderr + │   │   ├── empty.s + │   │   ├── terminal-stderr.wasm.go + │   │   └── terminal-stderr.wit.go + │   ├── terminal-stdin + │   │   ├── empty.s + │   │   ├── terminal-stdin.wasm.go + │   │   └── terminal-stdin.wit.go + │   └── terminal-stdout + │   ├── empty.s + │   ├── terminal-stdout.wasm.go + │   └── terminal-stdout.wit.go + ├── clocks + │   ├── monotonic-clock + │   │   ├── empty.s + │   │   ├── monotonic-clock.wasm.go + │   │   └── monotonic-clock.wit.go + │   └── wall-clock + │   ├── empty.s + │   ├── wall-clock.wasm.go + │   └── wall-clock.wit.go + ├── filesystem + │   ├── preopens + │   │   ├── empty.s + │   │   ├── preopens.wasm.go + │   │   └── preopens.wit.go + │   └── types + │   ├── abi.go + │   ├── empty.s + │   ├── types.wasm.go + │   └── types.wit.go ├── io - │ ├── error - │ │ ├── empty.s - │ │ ├── error.wit.go - │ │ └── ioerror.wasm.go - │ └── streams - │ ├── empty.s - │ ├── streams.wasm.go - │ └── streams.wit.go - └── random - └── random + │   ├── error + │   │   ├── empty.s + │   │   ├── error.wasm.go + │   │   └── error.wit.go + │   ├── poll + │   │   ├── empty.s + │   │   ├── poll.wasm.go + │   │   └── poll.wit.go + │   └── streams + │   ├── empty.s + │   ├── streams.wasm.go + │   └── streams.wit.go + ├── random + │   ├── insecure + │   │   ├── empty.s + │   │   ├── insecure.wasm.go + │   │   └── insecure.wit.go + │   ├── insecure-seed + │   │   ├── empty.s + │   │   ├── insecure-seed.wasm.go + │   │   └── insecure-seed.wit.go + │   └── random + │   ├── empty.s + │   ├── random.wasm.go + │   └── random.wit.go + └── sockets + ├── instance-network + │   ├── empty.s + │   ├── instance-network.wasm.go + │   └── instance-network.wit.go + ├── ip-name-lookup + │   ├── abi.go + │   ├── empty.s + │   ├── ip-name-lookup.wasm.go + │   └── ip-name-lookup.wit.go + ├── network + │   ├── abi.go + │   ├── empty.s + │   ├── network.wasm.go + │   └── network.wit.go + ├── tcp + │   ├── abi.go + │   ├── empty.s + │   ├── tcp.wasm.go + │   └── tcp.wit.go + ├── tcp-create-socket + │   ├── empty.s + │   ├── tcp-create-socket.wasm.go + │   └── tcp-create-socket.wit.go + ├── udp + │   ├── abi.go + │   ├── empty.s + │   ├── udp.wasm.go + │   └── udp.wit.go + └── udp-create-socket ├── empty.s - ├── random.wasm.go - └── random.wit.go + ├── udp-create-socket.wasm.go + └── udp-create-socket.wit.go + +39 directories, 91 files ``` The `adder.exports.go` file contains the exported functions that need to be implemented in the Go code called `Exports`. -## 3. Implement the `add` Function +## 4. Implement the `add` Function ```Go +//go:generate go tool wit-bindgen-go generate --world adder --out internal ./docs:adder@0.1.0.wasm + package main import ( - "example.com/internal/docs/adder/adder" + "example.com/internal/docs/adder/add" ) func init() { - adder.Exports.Add = func(x int32, y int32) int32 { + add.Exports.Add = func(x uint32, y uint32) uint32 { return x + y } } @@ -117,18 +276,19 @@ func main() {} Go's `init` functions are used to do initialization tasks that should be done before any other tasks. In this case, we are using it to export the `Add` function. -## 4. Build the Component +## 5. Build the Component We can build our component using TinyGo by specifying the wit-package to be `add.wit` and the WIT world to be `adder`. Under the hood, TinyGo invokes `wasm-tools` to embed the WIT file to the module and componentize it. ```console -$ tinygo build -target=wasip2 -o add.wasm --wit-package docs:adder@0.1.0.wasm --wit-world adder main.go +tinygo build -target=wasip2 -o add.wasm --wit-package docs:adder@0.1.0.wasm --wit-world adder main.go ``` We now have an add component that satisfies our `adder` world, exporting the `add` function, which -we can confirm using the `wasm-tools component wit` command: + +We can confirm using the `wasm-tools component wit` command: ```console $ wasm-tools component wit add.wasm From 246a61042d9376aff1980801fe384cbeb0dbdfa7 Mon Sep 17 00:00:00 2001 From: Victor Adossi Date: Fri, 21 Mar 2025 23:14:36 +0900 Subject: [PATCH 124/175] refactor(lang/rust): update rust language guide Signed-off-by: Victor Adossi --- component-model/src/language-support/rust.md | 81 ++++++++++++++++---- 1 file changed, 64 insertions(+), 17 deletions(-) diff --git a/component-model/src/language-support/rust.md b/component-model/src/language-support/rust.md index 5f2d907..ffb24a3 100644 --- a/component-model/src/language-support/rust.md +++ b/component-model/src/language-support/rust.md @@ -1,9 +1,11 @@ # Components in Rust -Rust has first-class support for the component model via [the `cargo component` tool](https://github.com/bytecodealliance/cargo-component). It is a `cargo` subcommand for -creating WebAssembly components using Rust as the component's implementation language. +Rust has first-class support for the component model via [the `cargo component` tool](https://github.com/bytecodealliance/cargo-component). -## Installing `cargo component` +`cargo component` is is a `cargo` subcommand for creating WebAssembly components +using Rust as the component's implementation language. + +## 1. Installing `cargo component` To install `cargo component`, run: @@ -13,58 +15,101 @@ cargo install cargo-component > You can find more details about `cargo component` in its [crates.io page](https://crates.io/crates/cargo-component). -## Building a Component with `cargo component` +## 2. Scaffold a Component with `cargo component` + +Create a Rust library that implements the `add` function in the [`adder`world][adder-wit]. -Create a Rust library that implements the `add` function in the [`example` -world](https://github.com/bytecodealliance/component-docs/tree/main/component-model/examples/example-host/add.wit). First scaffold a project: +First scaffold a project: ```sh $ cargo component new add --lib && cd add ``` -Note that `cargo component` generates the necessary bindings as a module called `bindings`. +Note that `cargo component` generates the necessary bindings as a module called `bindings`. + +## 3. Add the WIT world the Component will implement -Next, update `wit/world.wit` to match `add.wit` and modify the component package reference to change the -package name to `example:component`. The `component` section of `Cargo.toml` should look like the following: +Next, update `wit/world.wit` to match `add.wit`: + +``` +package docs:adder@0.1.0; + +interface add { + add: func(x: u32, y: u32) -> u32; +} + +world adder { + export add; +} +``` + +The `component` section of `Cargo.toml` should look like the following: ```toml [package.metadata.component] -package = "example:component" +package = "docs:adder" ``` -`cargo component` will generate bindings for the world specified in a package's `Cargo.toml`. In particular, it will create a `Guest` trait that a component should implement. Since our `example` world has no interfaces, the trait lives directly under the bindings module. Implement the `Guest` trait in `add/src/lib.rs` such that it satisfies the `example` world, adding an `add` function: +## 4. Generate bindings for our component + +After performing these changes, we can re-generate bindings with `cargo component bindings`: + +```console +cargo component bindings +``` + +`cargo component bindings` will generate bindings for the world specified in a package's `Cargo.toml`. In particular, +`cargo component` will create a `Guest` trait that a component should implement. + +## 5. Implement the generated `Guest` trait + +Implement the `Guest` trait in `src/lib.rs`, using the scaffolded code. Your code should look something like the following: ```rs +#[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 + return x + y; } } + +bindings::export!(Component with_types_in bindings); ``` +## 6. Build the component + Now, use `cargo component` to build the component, being sure to optimize with a release build. -```sh -$ cargo component build --release +```console +cargo component build --release ``` You can use `wasm-tools component wit` to output the WIT package of the component: -```sh +``` $ wasm-tools component wit target/wasm32-wasip1/release/add.wasm package root:component; world root { - export add: func(x: s32, y: s32) -> s32; + export docs:adder/add@0.1.0; +} +package docs:adder@0.1.0 { + interface add { + add: func(x: u32, y: u32) -> u32; + } } ``` ### Running a Component from Rust Applications To verify that our component works, lets run it from a Rust application that knows how to run a -component targeting the [`example` world](https://github.com/bytecodealliance/component-docs/tree/main/component-model/examples/example-host/add.wit). +component targeting the [`adder` world][adder-wit]. The application uses [`wasmtime`](https://github.com/bytecodealliance/wasmtime) crates to generate Rust bindings, bring in WASI worlds, and execute the component. @@ -534,3 +579,5 @@ If you are hosting a Wasm runtime, you can export a resource from your host for // etc. } ``` + +[adder-wit]: https://github.com/bytecodealliance/component-docs/tree/main/component-model/examples/tutorial/wit/adder/world.wit From d5a64e506b0cc44b432ee8e8af4b537d1d75611a Mon Sep 17 00:00:00 2001 From: Victor Adossi Date: Fri, 21 Mar 2025 23:24:58 +0900 Subject: [PATCH 125/175] refactor(lang/py): update python docs Signed-off-by: Victor Adossi --- .../src/language-support/python.md | 41 ++++++++++++------- 1 file changed, 26 insertions(+), 15 deletions(-) diff --git a/component-model/src/language-support/python.md b/component-model/src/language-support/python.md index 0f606ee..a2dfe24 100644 --- a/component-model/src/language-support/python.md +++ b/component-model/src/language-support/python.md @@ -11,41 +11,51 @@ First, install [Python 3.10 or later](https://www.python.org/) and [pip](https:/ pip install componentize-py ``` -Next, create or download the WIT world you would like to target. For this example we will use an [`example` -world](https://github.com/bytecodealliance/component-docs/tree/main/component-model/examples/example-host/add.wit) with an `add` function: +Next, create or download the WIT world you would like to target. For this example we will use an [`adder` +world][adder-wit] with an `add` function (e.g. `wit/component.wit`): ```wit -package example:component; +package docs:adder@0.1.0; -world example { - export add: func(x: s32, y: s32) -> s32; +interface add { + add: func(x: u32, y: u32) -> u32; +} + +world adder { + export add; } ``` If you want to generate bindings produced for the WIT world (for an IDE or typechecker), you can generate them using the `bindings` subcommand. Specify the path to the WIT interface with the world you are targeting: ```sh -$ componentize-py --wit-path /path/to/examples/example-host/add.wit --world example bindings . +$ componentize-py --wit-path wit/component/wit --world adder bindings . ``` +> [!NOTE] > You do not need to generate the bindings in order to `componentize` in the next step. `componentize` will generate bindings on-the-fly and bundle them into the produced component. -You can see that bindings were created in an `example` package which contains an `Example` protocol with an `add` method that we can implement: +Bindings were created in an `adder` package which contains an `Add` protocol with an `add` method that we can implement. -```sh -$ cat<> app.py -import example +To implement this interface, put the following code in a file called `app.py`: + +```py +import adder -class Example(example.Example): +class Add(adder.Adder): def add(self, x: int, y: int) -> int: return x + y -EOT ``` We now can compile our application to a Wasm component using the `componentize` subcommand: -```sh -$ componentize-py --wit-path /path/to/examples/example-host/add.wit --world example componentize app -o add.wasm +```console +componentize-py \ + --wit-path wit/component.wit \ + --world adder \ + componentize \ + app \ + -o add.wasm Component built successfully ``` @@ -59,7 +69,6 @@ $ cargo run --release -- 1 2 ../path/to/add.wasm See [`componentize-py`'s examples](https://github.com/bytecodealliance/componentize-py/tree/main/examples) to try out build HTTP, CLI, and TCP components from Python applications. - ### Building a Component that Exports an Interface The [sample `add.wit` file](https://github.com/bytecodealliance/component-docs/tree/main/component-model/examples/example-host/add.wit) exports a function. However, you'll often prefer to export an interface, either to comply with an existing specification or to capture a set of functions and types that tend to go together. Let's expand our example world to export an interface rather than directly export the function. @@ -143,3 +152,5 @@ $ python3 host.py ``` [add-wasm]: https://github.com/bytecodealliance/component-docs/blob/main/component-model/examples/example-host/add.wasm + +[adder-wit]: https://github.com/bytecodealliance/component-docs/tree/main/component-model/examples/tutorial/wit/adder/world.wit From 12b0eebd1cecea0c444315eaaa6162a16ab52df4 Mon Sep 17 00:00:00 2001 From: Victor Adossi Date: Fri, 21 Mar 2025 23:27:14 +0900 Subject: [PATCH 126/175] refactor: a/b -> x/y Signed-off-by: Victor Adossi --- component-model/examples/example-host/README.md | 2 +- component-model/examples/tutorial/README.md | 2 +- component-model/examples/tutorial/adder/src/bindings.rs | 2 +- component-model/examples/tutorial/adder/src/lib.rs | 2 +- component-model/examples/tutorial/calculator/src/bindings.rs | 2 +- component-model/src/language-support.md | 2 +- component-model/src/language-support/csharp.md | 2 +- component-model/src/language-support/python.md | 2 +- component-model/src/language-support/rust.md | 5 +++-- component-model/src/tutorial.md | 2 +- 10 files changed, 12 insertions(+), 11 deletions(-) diff --git a/component-model/examples/example-host/README.md b/component-model/examples/example-host/README.md index 085cc33..651d66c 100644 --- a/component-model/examples/example-host/README.md +++ b/component-model/examples/example-host/README.md @@ -9,7 +9,7 @@ The `adder` world exports an interface called `add` which defines an function th package docs:adder@0.1.0; interface add { - add: func(a: u32, b: u32) -> u32; + add: func(x: u32, y: u32) -> u32; } world adder { diff --git a/component-model/examples/tutorial/README.md b/component-model/examples/tutorial/README.md index 7d7344b..54c37f2 100644 --- a/component-model/examples/tutorial/README.md +++ b/component-model/examples/tutorial/README.md @@ -10,7 +10,7 @@ package docs:adder@0.1.0; interface add { - add: func(a: u32, b: u32) -> u32; + add: func(x: u32, y: u32) -> u32; } world adder { diff --git a/component-model/examples/tutorial/adder/src/bindings.rs b/component-model/examples/tutorial/adder/src/bindings.rs index 7c3b88b..245617d 100644 --- a/component-model/examples/tutorial/adder/src/bindings.rs +++ b/component-model/examples/tutorial/adder/src/bindings.rs @@ -20,7 +20,7 @@ pub mod exports { _rt::as_i32(result0) } pub trait Guest { - fn add(a: u32, b: u32) -> u32; + fn add(x: u32, y: u32) -> u32; } #[doc(hidden)] macro_rules! __export_docs_adder_add_0_1_0_cabi { diff --git a/component-model/examples/tutorial/adder/src/lib.rs b/component-model/examples/tutorial/adder/src/lib.rs index ecab073..ec5d396 100644 --- a/component-model/examples/tutorial/adder/src/lib.rs +++ b/component-model/examples/tutorial/adder/src/lib.rs @@ -6,7 +6,7 @@ use bindings::exports::docs::adder::add::Guest; struct Component; impl Guest for Component { - fn add(a: u32, b: u32) -> u32 { + fn add(x: u32, y: u32) -> u32 { a + b } } diff --git a/component-model/examples/tutorial/calculator/src/bindings.rs b/component-model/examples/tutorial/calculator/src/bindings.rs index 43f2322..8511915 100644 --- a/component-model/examples/tutorial/calculator/src/bindings.rs +++ b/component-model/examples/tutorial/calculator/src/bindings.rs @@ -13,7 +13,7 @@ pub mod docs { super::super::super::__link_custom_section_describing_imports; use super::super::super::_rt; #[allow(unused_unsafe, clippy::all)] - pub fn add(a: u32, b: u32) -> u32 { + pub fn add(x: u32, y: u32) -> u32 { unsafe { #[cfg(target_arch = "wasm32")] #[link(wasm_import_module = "docs:adder/add@0.1.0")] diff --git a/component-model/src/language-support.md b/component-model/src/language-support.md index 3756ba2..1eb02c5 100644 --- a/component-model/src/language-support.md +++ b/component-model/src/language-support.md @@ -56,7 +56,7 @@ working with WebAssembly modules and components. package docs:adder@0.1.0; interface add { - add: func(a: u32, b: u32) -> u32; + add: func(x: u32, y: u32) -> u32; } world adder { diff --git a/component-model/src/language-support/csharp.md b/component-model/src/language-support/csharp.md index d94df79..de2009a 100644 --- a/component-model/src/language-support/csharp.md +++ b/component-model/src/language-support/csharp.md @@ -42,7 +42,7 @@ For this example we will use the [`adder` world][adder-world], with an `add` fun package docs:adder@0.1.0; interface add { - add: func(a: u32, b: u32) -> u32; + add: func(x: u32, y: u32) -> u32; } world adder { diff --git a/component-model/src/language-support/python.md b/component-model/src/language-support/python.md index a2dfe24..aae9267 100644 --- a/component-model/src/language-support/python.md +++ b/component-model/src/language-support/python.md @@ -78,7 +78,7 @@ The [sample `add.wit` file](https://github.com/bytecodealliance/component-docs/t package example:component; interface add { - add: func(a: u32, b: u32) -> u32; + add: func(x: u32, y: u32) -> u32; } world example { diff --git a/component-model/src/language-support/rust.md b/component-model/src/language-support/rust.md index ffb24a3..f03e531 100644 --- a/component-model/src/language-support/rust.md +++ b/component-model/src/language-support/rust.md @@ -128,7 +128,7 @@ The [sample `add.wit` file](https://github.com/bytecodealliance/component-docs/t package docs:adder@0.1.0; interface add { - add: func(a: u32, b: u32) -> u32; + add: func(x: u32, y: u32) -> u32; } world adder { @@ -140,13 +140,14 @@ you would write the following Rust code: ```rust mod bindings; + // Separating out the interface puts it in a sub-module use bindings::exports::docs::adder::add::Guest; struct Component; impl Guest for Component { - fn add(a: u32, b: u32) -> u32 { + fn add(x: u32, y: u32) -> u32 { a + b } } diff --git a/component-model/src/tutorial.md b/component-model/src/tutorial.md index 6ed7817..c4f3542 100644 --- a/component-model/src/tutorial.md +++ b/component-model/src/tutorial.md @@ -36,7 +36,7 @@ These files can be found in the component book repository in the [`examples/tuto package docs:adder@0.1.0; interface add { - add: func(a: u32, b: u32) -> u32; + add: func(x: u32, y: u32) -> u32; } world adder { From 980c0f76dd00c5b1e12cae1bd7139c19025c69f6 Mon Sep 17 00:00:00 2001 From: Victor Adossi Date: Sat, 22 Mar 2025 11:03:01 +0900 Subject: [PATCH 127/175] fix(lang/c): add missing links Signed-off-by: Victor Adossi --- component-model/src/language-support/c.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/component-model/src/language-support/c.md b/component-model/src/language-support/c.md index 7e419a3..153eeb4 100644 --- a/component-model/src/language-support/c.md +++ b/component-model/src/language-support/c.md @@ -5,7 +5,7 @@ WebAssembly components can be built from C and C++ using [`clang`][clang], the C [`wit-bindgen`](https://github.com/bytecodealliance/wit-bindgen) is a tool to generate guest language bindings from a given `.wit` file. -Although `wit-bindgen` is a standalone tool (whereas some languages have more integrated toolchains [`cargo-component`][cargo-component]), +Although `wit-bindgen` is a standalone tool (whereas some languages have more integrated toolchains like Rust's [`cargo-component`][cargo-component]), `wit-bindgen` can generate source-level bindings for `Rust`, `C`, `Java (TeaVM)`, and `TinyGo`, with the ability for more language generators to be added in the future. @@ -14,6 +14,8 @@ language generators to be added in the future. [clang]: https://clang.llvm.org/ [clang-tgt-wasm32-wasi]: https://clang.llvm.org/docs/ClangCommandLineReference.html#webassembly [llvm]: https://llvm.org/ +[wasi]: https://wasi.dev/ +[cargo-component]: https://crates.io/crates/cargo-component ## 1. Download dependencies @@ -131,6 +133,8 @@ Now, you can adapt preview1 to preview2 to build a component: wasm-tools component new adder.wasm --adapt wasi_snapshot_preview1.wasm -o adder.component.wasm ``` +[wasmtime-releases]: https://github.com/bytecodealliance/wasmtime/releases + ## 7. Inspect the built component Finally, you can inspect the embedded wit to see your component (including any WASI imports if necessary): @@ -199,6 +203,7 @@ This kind of error normally indicates that the host in question does not contain [host]: https://github.com/bytecodealliance/component-docs/tree/main/component-model/examples/example-host [add-to-linker]: https://docs.wasmtime.dev/api/wasmtime_wasi/fn.add_to_linker_sync.html +[example-host]: https://github.com/bytecodealliance/component-docs/tree/main/component-model/examples/example-host ## 9. Running a Component from C/C++ Applications From 80a63d12aabed725638190015dc33a26fd46d5f2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ingy=20d=C3=B6t=20Net?= Date: Mon, 24 Mar 2025 09:20:49 -0700 Subject: [PATCH 128/175] Update python.md Remove extra space in Python code that would make it print: ``` 1 + 2 = 3 ``` instead of: ``` 1 + 2 = 3 ``` --- component-model/src/language-support/python.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/component-model/src/language-support/python.md b/component-model/src/language-support/python.md index aae9267..cbe5a80 100644 --- a/component-model/src/language-support/python.md +++ b/component-model/src/language-support/python.md @@ -138,7 +138,7 @@ from wasmtime import Store def main(): store = Store() component = Root(store) - print("1 + 2 = ", component.add(store, 1, 2)) + print("1 + 2 =", component.add(store, 1, 2)) if __name__ == '__main__': main() From 262d47f405833527528b61d8228cc09d14e7f69e Mon Sep 17 00:00:00 2001 From: Mikhail Katychev Date: Mon, 24 Mar 2025 17:19:17 -0500 Subject: [PATCH 129/175] removed numbered headers --- component-model/src/language-support/rust.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/component-model/src/language-support/rust.md b/component-model/src/language-support/rust.md index 4e217fd..0f978bc 100644 --- a/component-model/src/language-support/rust.md +++ b/component-model/src/language-support/rust.md @@ -8,7 +8,7 @@ the component's implementation language. > [!NOTE] > You can find more details about `cargo-component` on [crates.io](https://crates.io/crates/cargo-component). -## 1. Setup +## Setup Install [`cargo-component`][cargo-component-install]: ```sh @@ -27,7 +27,7 @@ Clone the [component-docs](https://github.com/bytecodealliance/component-docs) r git clone https://github.com/bytecodealliance/component-docs ``` -## 2. Scaffolding a Component +## Scaffolding a Component We will create a component in Rust that implements the `add` function exported by the [`docs:adder/adder`][docs-adder] world in the From 661ac99e40667850d1bc5b2e85a54a913367982f Mon Sep 17 00:00:00 2001 From: Mikhail Katychev Date: Mon, 24 Mar 2025 17:19:41 -0500 Subject: [PATCH 130/175] typos --- component-model/examples/example-host/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/component-model/examples/example-host/README.md b/component-model/examples/example-host/README.md index 651d66c..67e543e 100644 --- a/component-model/examples/example-host/README.md +++ b/component-model/examples/example-host/README.md @@ -35,7 +35,7 @@ $ cargo run --release -- 1 2 add.wasm ``` > [!NOTE] -> `add.wasm` is available in thsi folder, but can be replaced with your own built WebAssembly component +> `add.wasm` is available in this folder, but can be replaced with your own built WebAssembly component > at any time (written in any language that supports WebAssembly Components), given that it satisfies > the `adder` world described above. From d23903ddc28ea9115eacb1b69e934a3f1245a459 Mon Sep 17 00:00:00 2001 From: Mikhail Katychev Date: Mon, 24 Mar 2025 17:23:12 -0500 Subject: [PATCH 131/175] update some other broken links --- component-model/src/language-support/rust.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/component-model/src/language-support/rust.md b/component-model/src/language-support/rust.md index 0f978bc..a67e267 100644 --- a/component-model/src/language-support/rust.md +++ b/component-model/src/language-support/rust.md @@ -286,8 +286,8 @@ As mentioned above, `cargo component build` doesn't generate a WIT file for a co ```toml [package.metadata.component.target.dependencies] - "docs:calculator" = { path = "../calculator/wit" } - "docs:adder" = { path = "../adder/wit" } + "docs:calculator" = { path = "../wit/calculator" } + "docs:adder" = { path = "../wit/adder" } ``` > If the external package refers to other packages, you need to provide the paths to them as well. From a2228c0ae60cf2659ec3803099ab4b1601f8a572 Mon Sep 17 00:00:00 2001 From: Mikhail Katychev Date: Mon, 24 Mar 2025 17:26:09 -0500 Subject: [PATCH 132/175] remove extra example-component ref --- component-model/src/language-support/rust.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/component-model/src/language-support/rust.md b/component-model/src/language-support/rust.md index a67e267..e5b2428 100644 --- a/component-model/src/language-support/rust.md +++ b/component-model/src/language-support/rust.md @@ -146,7 +146,7 @@ import their interfaces. > [!NOTE] > This section is about importing custom WIT interfaces from library components. -> By default, `cargo component build` imports any required [WASI interfaces](https://wasi.dev/interfaces) +> By default, `cargo-component` imports any required [WASI interfaces](https://wasi.dev/interfaces) > for us without needing to explicitly declare them. @@ -577,5 +577,4 @@ If you are hosting a Wasm runtime, you can export a resource from your host for [cargo-component]: https://github.com/bytecodealliance/cargo-component [cargo-component-install]: https://github.com/bytecodealliance/cargo-component#install -[example-component]: https://github.com/bytecodealliance/component-docs/tree/main/component-model/examples/example-host/add.wit [docs-adder]: https://github.com/bytecodealliance/component-docs/tree/main/component-model/examples/tutorial/wit/adder/world.wit From f3688173a0afaedcc45c511b2c5c37e306e07a7d Mon Sep 17 00:00:00 2001 From: Victor Adossi Date: Tue, 25 Mar 2025 12:31:31 +0900 Subject: [PATCH 133/175] fix: hack around mdbook-linkcheck warnings This commit introduces a hack that suppresses mdbook-linkcheck warnings for link-like alert constructs like `[!NOTE]`, until an upstream fix can be merged. Signed-off-by: Victor Adossi --- component-model/src/language-support/c.md | 3 +++ component-model/src/language-support/csharp.md | 4 ++++ component-model/src/language-support/go.md | 3 +++ component-model/src/language-support/javascript.md | 4 ++++ component-model/src/language-support/python.md | 2 ++ 5 files changed, 16 insertions(+) diff --git a/component-model/src/language-support/c.md b/component-model/src/language-support/c.md index 153eeb4..a7360b5 100644 --- a/component-model/src/language-support/c.md +++ b/component-model/src/language-support/c.md @@ -216,3 +216,6 @@ or any other host. See the [Rust Tooling guide](../language-support/rust.md#running-a-component-from-rust-applications) for instructions on how to run this component from the Rust `example-host` (replacing the path to `add.wasm` with your `add-component` above). + +[!NOTE]: # +[!WARNING]: # diff --git a/component-model/src/language-support/csharp.md b/component-model/src/language-support/csharp.md index de2009a..633443c 100644 --- a/component-model/src/language-support/csharp.md +++ b/component-model/src/language-support/csharp.md @@ -152,6 +152,7 @@ This kind of error normally indicates that the host in question does not contain [host]: https://github.com/bytecodealliance/component-docs/tree/main/component-model/examples/example-host [add-to-linker]: https://docs.wasmtime.dev/api/wasmtime_wasi/fn.add_to_linker_sync.html +[example-host]: https://github.com/bytecodealliance/component-docs/tree/main/component-model/examples/example-host ## Building a component that exports an interface @@ -325,3 +326,6 @@ wasmtime run ./dist/main.wasm Check out the [componentize-dotnet docs][componentize-dotnet-docs] for more configurations options. [componentize-dotnet-docs]: https://github.com/bytecodealliance/componentize-dotnet + +[!NOTE]: # +[!WARNING]: # diff --git a/component-model/src/language-support/go.md b/component-model/src/language-support/go.md index 5274529..85d1cbe 100644 --- a/component-model/src/language-support/go.md +++ b/component-model/src/language-support/go.md @@ -321,3 +321,6 @@ cargo run --release -- 1 2 /path/to/add.wasm ``` [example-host]: https://github.com/bytecodealliance/component-docs/tree/main/component-model/examples/example-host + +[!NOTE]: # +[!WARNING]: # diff --git a/component-model/src/language-support/javascript.md b/component-model/src/language-support/javascript.md index b0640ba..5336b07 100644 --- a/component-model/src/language-support/javascript.md +++ b/component-model/src/language-support/javascript.md @@ -548,3 +548,7 @@ reverseAndUppercase('!dlroW olleH') = HELLO WORLD! [wac]: https://github.com/bytecodealliance/wac [jco-examples-string-reverse-upper]: https://github.com/bytecodealliance/jco/tree/main/examples/components/string-reverse-upper + +[!TIP]: # +[!NOTE]: # +[!WARNING]: # diff --git a/component-model/src/language-support/python.md b/component-model/src/language-support/python.md index cbe5a80..eacffc6 100644 --- a/component-model/src/language-support/python.md +++ b/component-model/src/language-support/python.md @@ -154,3 +154,5 @@ $ python3 host.py [add-wasm]: https://github.com/bytecodealliance/component-docs/blob/main/component-model/examples/example-host/add.wasm [adder-wit]: https://github.com/bytecodealliance/component-docs/tree/main/component-model/examples/tutorial/wit/adder/world.wit + +[!NOTE]: # From 50d241265d7c5a156ac3fe0ab7937fd14ecf8b65 Mon Sep 17 00:00:00 2001 From: Victor Adossi Date: Tue, 25 Mar 2025 13:02:14 +0900 Subject: [PATCH 134/175] fix(ci): install mdbook-linkcheck in CI Signed-off-by: Victor Adossi --- .github/workflows/mdbook.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/mdbook.yml b/.github/workflows/mdbook.yml index 28379f5..2328443 100644 --- a/.github/workflows/mdbook.yml +++ b/.github/workflows/mdbook.yml @@ -30,7 +30,8 @@ jobs: runs-on: ubuntu-latest env: MDBOOK_VERSION: 0.4.21 - ALERTS_VERSION: 0.6.7 + MDBOOK_ALERTS_VERSION: 0.6.7 + MDBOOK_LINKCHECK_VERSION: 0.7.7 PUBLISH_DOMAIN: component-model.bytecodealliance.org steps: - uses: actions/checkout@v3 @@ -39,7 +40,8 @@ jobs: curl --proto '=https' --tlsv1.2 https://sh.rustup.rs -sSf -y | sh rustup update cargo install --version ${MDBOOK_VERSION} mdbook - cargo install --version ${ALERTS_VERSION} mdbook-alerts + cargo install --version ${MDBOOK_ALERTS_VERSION} mdbook-alerts + cargo install --version ${MDBOOK_LINKCHECK_VERSION} mdbook-linkcheck - name: Setup Pages id: pages uses: actions/configure-pages@v3 From 0561062894eb71c73e730aaa47d5bdac231f8484 Mon Sep 17 00:00:00 2001 From: Victor Adossi Date: Tue, 25 Mar 2025 13:37:57 +0900 Subject: [PATCH 135/175] fix(ci): deploy path for book This commit fixes the deploy path (which changes slightly, due to mdbook-linkcheck) Signed-off-by: Victor Adossi --- .github/workflows/mdbook.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/mdbook.yml b/.github/workflows/mdbook.yml index 2328443..6275401 100644 --- a/.github/workflows/mdbook.yml +++ b/.github/workflows/mdbook.yml @@ -59,7 +59,7 @@ jobs: - name: Upload artifact uses: actions/upload-pages-artifact@v3 with: - path: ./component-model/book + path: ./component-model/book/html # Deployment job deploy: From 956c1c495ff13595034aa8eac3f355a76b0a30d7 Mon Sep 17 00:00:00 2001 From: Victor Adossi Date: Tue, 25 Mar 2025 13:56:02 +0900 Subject: [PATCH 136/175] refactor(ci): add check for generated artifact Signed-off-by: Victor Adossi --- .github/workflows/mdbook.yml | 41 ++++++++++++++++++++++++------------ 1 file changed, 27 insertions(+), 14 deletions(-) diff --git a/.github/workflows/mdbook.yml b/.github/workflows/mdbook.yml index 6275401..4b2f6fc 100644 --- a/.github/workflows/mdbook.yml +++ b/.github/workflows/mdbook.yml @@ -24,42 +24,55 @@ concurrency: group: "pages" cancel-in-progress: false +env: + MDBOOK_VERSION: 0.4.21 + MDBOOK_ALERTS_VERSION: 0.6.7 + MDBOOK_LINKCHECK_VERSION: 0.7.7 + PUBLISH_DOMAIN: component-model.bytecodealliance.org + ARTIFACT_PATH: ./component-model/book/html + jobs: - # Build job build: runs-on: ubuntu-latest - env: - MDBOOK_VERSION: 0.4.21 - MDBOOK_ALERTS_VERSION: 0.6.7 - MDBOOK_LINKCHECK_VERSION: 0.7.7 - PUBLISH_DOMAIN: component-model.bytecodealliance.org steps: - uses: actions/checkout@v3 - name: Install mdBook run: | curl --proto '=https' --tlsv1.2 https://sh.rustup.rs -sSf -y | sh rustup update - cargo install --version ${MDBOOK_VERSION} mdbook - cargo install --version ${MDBOOK_ALERTS_VERSION} mdbook-alerts - cargo install --version ${MDBOOK_LINKCHECK_VERSION} mdbook-linkcheck - - name: Setup Pages - id: pages - uses: actions/configure-pages@v3 + cargo install --version ${{ env.MDBOOK_VERSION }} mdbook + cargo install --version ${{ env.MDBOOK_ALERTS_VERSION }} mdbook-alerts + cargo install --version ${{ env.MDBOOK_LINKCHECK_VERSION }} mdbook-linkcheck + - name: Build with mdBook run: mdbook build component-model + - name: Setup Python uses: actions/setup-python@v5 with: python-version: '3.13' + + # Ensure the build generated properly + - run: | + if [[ ! -f "${{ env.ARTIFACT_PATH }}/index.html" ]] + echo "[error] index.html @ [${{ env.ARTIFACT_PATH }}] is missing. Build or path misconfigured"; + exit 1; + fi + - name: Generate sitemap run: | - cd component-model + cd ${{ env.ARTIFACT_PATH }} python3 ../scripts/generate_sitemap.py --domain "component-model.bytecodealliance.org" --higher-priority "design" --output-path book/sitemap.xml cd .. + + - name: Setup Pages + id: pages + uses: actions/configure-pages@v3 + - name: Upload artifact uses: actions/upload-pages-artifact@v3 with: - path: ./component-model/book/html + path: ${{ env.ARTIFACT_PATH }} # Deployment job deploy: From 9cd83e1c51777f33b07d27a5566bff9ee66d1702 Mon Sep 17 00:00:00 2001 From: Victor Adossi Date: Tue, 25 Mar 2025 14:05:37 +0900 Subject: [PATCH 137/175] fix(ci): bash check Signed-off-by: Victor Adossi --- .github/workflows/mdbook.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/mdbook.yml b/.github/workflows/mdbook.yml index 4b2f6fc..6a0c500 100644 --- a/.github/workflows/mdbook.yml +++ b/.github/workflows/mdbook.yml @@ -53,8 +53,10 @@ jobs: python-version: '3.13' # Ensure the build generated properly - - run: | - if [[ ! -f "${{ env.ARTIFACT_PATH }}/index.html" ]] + - name: Ensure build outputs are present + shell: bash + run: | + if [[ ! -f "${{ env.ARTIFACT_PATH }}/index.html" ]]; then echo "[error] index.html @ [${{ env.ARTIFACT_PATH }}] is missing. Build or path misconfigured"; exit 1; fi From c817a8ff704e8c57df93f05d3d8cc549ba416388 Mon Sep 17 00:00:00 2001 From: Victor Adossi Date: Tue, 25 Mar 2025 14:29:13 +0900 Subject: [PATCH 138/175] fix(ci): sitemap generation Signed-off-by: Victor Adossi --- .github/workflows/mdbook.yml | 5 +++-- scripts/generate_sitemap.py | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/workflows/mdbook.yml b/.github/workflows/mdbook.yml index 6a0c500..200dcce 100644 --- a/.github/workflows/mdbook.yml +++ b/.github/workflows/mdbook.yml @@ -62,10 +62,11 @@ jobs: fi - name: Generate sitemap + shell: bash run: | cd ${{ env.ARTIFACT_PATH }} - python3 ../scripts/generate_sitemap.py --domain "component-model.bytecodealliance.org" --higher-priority "design" --output-path book/sitemap.xml - cd .. + python3 ../../../scripts/generate_sitemap.py --domain "component-model.bytecodealliance.org" --higher-priority "design" --output-path sitemap.xml + cd ../../../ - name: Setup Pages id: pages diff --git a/scripts/generate_sitemap.py b/scripts/generate_sitemap.py index bab48a3..b729de5 100644 --- a/scripts/generate_sitemap.py +++ b/scripts/generate_sitemap.py @@ -5,7 +5,7 @@ def parse_summary(): """Parse URLs from the SUMMARY.md file.""" - with open("src/SUMMARY.md", "r") as file: + with open("../../src/SUMMARY.md", "r") as file: for line in file: if "](" in line: url = line.split("](")[1].split(")")[0] From 02e4760e4352a5dceed10b30c78afcd29b8ff739 Mon Sep 17 00:00:00 2001 From: Mikhail Katychev Date: Tue, 25 Mar 2025 13:24:34 -0500 Subject: [PATCH 139/175] updated with feedback on add interface --- component-model/src/language-support/rust.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/component-model/src/language-support/rust.md b/component-model/src/language-support/rust.md index e5b2428..a29a78d 100644 --- a/component-model/src/language-support/rust.md +++ b/component-model/src/language-support/rust.md @@ -126,8 +126,8 @@ $ cargo run --release -- 1 2 ../add/target/wasm32-wasip1/release/add.wasm ## Exporting an interface -Notice how our `example` world currently exports `add` as a function. It's -often preferable to export an interface rather than a function, either to +Notice how our `root` world in the `wasm-tools` output exports `add` as part of an _interface_. +It's often preferable to export an interface rather than a function, either to comply with an existing specification or to capture several functions and types at once. From 08dd69297cc8d84846f279bb2feaf31853fd3976 Mon Sep 17 00:00:00 2001 From: Victor Adossi Date: Tue, 25 Mar 2025 13:15:03 +0900 Subject: [PATCH 140/175] feat(ci): run mdbook on pull requests Signed-off-by: Victor Adossi --- .github/workflows/deploy.yml | 85 ++++++++++++++++++++++++++++++++++++ .github/workflows/mdbook.yml | 79 ++++++++------------------------- 2 files changed, 104 insertions(+), 60 deletions(-) create mode 100644 .github/workflows/deploy.yml diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml new file mode 100644 index 0000000..c88b11a --- /dev/null +++ b/.github/workflows/deploy.yml @@ -0,0 +1,85 @@ +name: Deploy mdBook site to Pages + +on: + push: + branches: ["main"] + + workflow_dispatch: + +permissions: + contents: read + pages: write + id-token: write + +concurrency: + group: "pages" + cancel-in-progress: false + +env: + MDBOOK_VERSION: 0.4.21 + MDBOOK_ALERTS_VERSION: 0.6.7 + MDBOOK_LINKCHECK_VERSION: 0.7.7 + PUBLISH_DOMAIN: component-model.bytecodealliance.org + ARTIFACT_PATH: ./component-model/book/html + +jobs: + build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + + - uses: taiki-e/cache-cargo-install-action@v2 + with: + tool: mdbook@${{ env.MDBOOK_VERSION }} + + - uses: taiki-e/cache-cargo-install-action@v2 + with: + tool: mdbook-alerts@${{ env.MDBOOK_ALERTS_VERSION }} + + - uses: taiki-e/cache-cargo-install-action@v2 + with: + tool: mdbook-linkcheck@${{ env.MDBOOK_LINKCHECK_VERSION }} + + - name: Build with mdBook + run: mdbook build component-model + + - name: Setup Python + uses: actions/setup-python@v5 + with: + python-version: '3.13' + + - name: Ensure build outputs are present + shell: bash + run: | + if [[ ! -f "${{ env.ARTIFACT_PATH }}/index.html" ]]; then + echo "[error] index.html @ [${{ env.ARTIFACT_PATH }}] is missing. Build or path misconfigured"; + exit 1; + fi + + - name: Generate sitemap + shell: bash + run: | + cd ${{ env.ARTIFACT_PATH }} + python3 ../../../scripts/generate_sitemap.py --domain "component-model.bytecodealliance.org" --higher-priority "design" --output-path sitemap.xml + cd ../../../ + + - name: Setup Pages + id: pages + uses: actions/configure-pages@v3 + + - name: Upload artifact + uses: actions/upload-pages-artifact@v3 + with: + path: ${{ env.ARTIFACT_PATH }} + + deploy: + if: ${{ github.repository_owner == 'bytecodealliance' }} + environment: + name: github-pages + url: ${{ steps.deployment.outputs.page_url }} + runs-on: ubuntu-latest + needs: build + steps: + - name: Deploy to GitHub Pages + id: deployment + uses: actions/deploy-pages@v4 diff --git a/.github/workflows/mdbook.yml b/.github/workflows/mdbook.yml index 200dcce..08a7f15 100644 --- a/.github/workflows/mdbook.yml +++ b/.github/workflows/mdbook.yml @@ -1,58 +1,34 @@ -# Sample workflow for building and deploying a mdBook site to GitHub Pages -# -# To get started with mdBook see: https://rust-lang.github.io/mdBook/index.html -# -name: Deploy mdBook site to Pages +name: mdbook on: - # Runs on pushes targeting the default branch - push: - branches: ["main"] - - # Allows you to run this workflow manually from the Actions tab - workflow_dispatch: - -# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages -permissions: - contents: read - pages: write - id-token: write - -# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued. -# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete. -concurrency: - group: "pages" - cancel-in-progress: false + pull_request: env: MDBOOK_VERSION: 0.4.21 MDBOOK_ALERTS_VERSION: 0.6.7 MDBOOK_LINKCHECK_VERSION: 0.7.7 - PUBLISH_DOMAIN: component-model.bytecodealliance.org - ARTIFACT_PATH: ./component-model/book/html jobs: build: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - - name: Install mdBook - run: | - curl --proto '=https' --tlsv1.2 https://sh.rustup.rs -sSf -y | sh - rustup update - cargo install --version ${{ env.MDBOOK_VERSION }} mdbook - cargo install --version ${{ env.MDBOOK_ALERTS_VERSION }} mdbook-alerts - cargo install --version ${{ env.MDBOOK_LINKCHECK_VERSION }} mdbook-linkcheck - - name: Build with mdBook - run: mdbook build component-model + - uses: taiki-e/cache-cargo-install-action@v2 + with: + tool: mdbook@${{ env.MDBOOK_VERSION }} - - name: Setup Python - uses: actions/setup-python@v5 + - uses: taiki-e/cache-cargo-install-action@v2 with: - python-version: '3.13' + tool: mdbook-alerts@${{ env.MDBOOK_ALERTS_VERSION }} + + - uses: taiki-e/cache-cargo-install-action@v2 + with: + tool: mdbook-linkcheck@${{ env.MDBOOK_LINKCHECK_VERSION }} + + - name: Build with mdBook + run: mdbook build component-model - # Ensure the build generated properly - name: Ensure build outputs are present shell: bash run: | @@ -61,31 +37,14 @@ jobs: exit 1; fi + - name: Setup Python + uses: actions/setup-python@v5 + with: + python-version: '3.13' + - name: Generate sitemap shell: bash run: | cd ${{ env.ARTIFACT_PATH }} python3 ../../../scripts/generate_sitemap.py --domain "component-model.bytecodealliance.org" --higher-priority "design" --output-path sitemap.xml cd ../../../ - - - name: Setup Pages - id: pages - uses: actions/configure-pages@v3 - - - name: Upload artifact - uses: actions/upload-pages-artifact@v3 - with: - path: ${{ env.ARTIFACT_PATH }} - - # Deployment job - deploy: - if: ${{ github.repository_owner == 'bytecodealliance' }} - environment: - name: github-pages - url: ${{ steps.deployment.outputs.page_url }} - runs-on: ubuntu-latest - needs: build - steps: - - name: Deploy to GitHub Pages - id: deployment - uses: actions/deploy-pages@v4 From c6e447899d6e86ef5d0c2bb9bb44fab6339d2b79 Mon Sep 17 00:00:00 2001 From: Victor Adossi Date: Wed, 26 Mar 2025 22:17:40 +0900 Subject: [PATCH 141/175] refactor(ci): use reusable action Signed-off-by: Victor Adossi --- .github/actions/mdbook/action.yml | 113 ++++++++++++++++++++++++++++++ .github/workflows/deploy.yml | 52 ++------------ .github/workflows/mdbook.yml | 41 +---------- justfile | 19 +++++ scripts/generate_sitemap.py | 28 ++++++-- 5 files changed, 162 insertions(+), 91 deletions(-) create mode 100644 .github/actions/mdbook/action.yml create mode 100644 justfile diff --git a/.github/actions/mdbook/action.yml b/.github/actions/mdbook/action.yml new file mode 100644 index 0000000..ac81c7b --- /dev/null +++ b/.github/actions/mdbook/action.yml @@ -0,0 +1,113 @@ +name: mdbook + +description: | + Run the mdbook build, optionally outputting a pages artifact + +inputs: + publish-pages-artifact: + type: boolean + required: false + default: false + description: | + Whether to publish a pages artifact + + publish-domain: + type: string + required: false + default: "component-model.bytecodealliance.org" + description: | + Path to which to store the artifac + + mdbook-version: + type: string + required: false + default: "0.4.21" + description: | + Version of mdbook to use (ex. '0.4.21') + + mdbook-alerts-version: + type: string + required: false + default: "0.6.7" + description: | + Version of mdbook-alerts to use (ex. '0.6.7') + + mdbook-linkcheck-version: + type: string + required: false + default: "0.7.7" + description: | + Version of mdbook-linkcheck to use (ex. '0.7.7') + +env: + ARTIFACT_PATH: ./component-model/book/html + +runs: + using: composite + steps: + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + + - uses: extractions/setup-just@v2 + + - uses: taiki-e/cache-cargo-install-action@4d586f211d9b0bca9e7b59e57e2a0febf36c0929 # v2.1.1 + with: + tool: "just" + + - uses: taiki-e/cache-cargo-install-action@4d586f211d9b0bca9e7b59e57e2a0febf36c0929 # v2.1.1 + with: + tool: "mdbook@${{ inputs.mdbook-version }}" + + - uses: taiki-e/cache-cargo-install-action@4d586f211d9b0bca9e7b59e57e2a0febf36c0929 # v2.1.1 + with: + tool: "mdbook-alerts@${{ inputs.mdbook-alerts-version }}" + + - uses: taiki-e/cache-cargo-install-action@4d586f211d9b0bca9e7b59e57e2a0febf36c0929 # v2.1.1 + with: + tool: "mdbook-linkcheck@${{ inputs.mdbook-linkcheck-version }}" + + - name: Build with mdBook + shell: bash + run: mdbook build component-model + + - name: Setup Python + uses: actions/setup-python@8d9ed9ac5c53483de85588cdf95a591a75ab9f55 # v5.5.0 + with: + python-version: '3.13' + + - name: Ensure build outputs are present + shell: bash + run: | + if [[ ! -f "${{ env.ARTIFACT_PATH }}/index.html" ]]; then + echo "[error] index.html @ [${{ env.ARTIFACT_PATH }}] is missing. Build or path misconfigured"; + exit 1; + fi + + - name: Generate sitemap + shell: bash + run: | + cd ${{ env.ARTIFACT_PATH }} + python3 ../../../scripts/generate_sitemap.py \ + --domain "${{ inputs.publish-domain }}" \ + --higher-priority "design" \ + --output-path sitemap.xml + cd ../../../ + + - name: Ensure publish-domain was provided + if: ${{ inputs.publish-pages-artifact }} + shell: bash + run: | + if [ -z "${{ inputs.publish-domain }}" ]; then + echo "[error] publish-domain input is required when publishing"; + exit 1; + fi + + - name: Setup Pages + if: ${{ inputs.publish-pages-artifact }} + id: pages + uses: actions/configure-pages@983d7736d9b0ae728b81ab479565c72886d7745b # v5.0.0 + + - name: Upload artifact + if: ${{ inputs.publish-pages-artifact }} + uses: actions/upload-pages-artifact@56afc609e74202658d3ffba0e8f6dda462b719fa # v3.0.1 + with: + path: ${{ env.ARTIFACT_PATH }} diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index c88b11a..03ca078 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -26,60 +26,20 @@ jobs: build: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - - uses: taiki-e/cache-cargo-install-action@v2 + - uses: ./.github/actions/mdbook with: - tool: mdbook@${{ env.MDBOOK_VERSION }} - - - uses: taiki-e/cache-cargo-install-action@v2 - with: - tool: mdbook-alerts@${{ env.MDBOOK_ALERTS_VERSION }} - - - uses: taiki-e/cache-cargo-install-action@v2 - with: - tool: mdbook-linkcheck@${{ env.MDBOOK_LINKCHECK_VERSION }} - - - name: Build with mdBook - run: mdbook build component-model - - - name: Setup Python - uses: actions/setup-python@v5 - with: - python-version: '3.13' - - - name: Ensure build outputs are present - shell: bash - run: | - if [[ ! -f "${{ env.ARTIFACT_PATH }}/index.html" ]]; then - echo "[error] index.html @ [${{ env.ARTIFACT_PATH }}] is missing. Build or path misconfigured"; - exit 1; - fi - - - name: Generate sitemap - shell: bash - run: | - cd ${{ env.ARTIFACT_PATH }} - python3 ../../../scripts/generate_sitemap.py --domain "component-model.bytecodealliance.org" --higher-priority "design" --output-path sitemap.xml - cd ../../../ - - - name: Setup Pages - id: pages - uses: actions/configure-pages@v3 - - - name: Upload artifact - uses: actions/upload-pages-artifact@v3 - with: - path: ${{ env.ARTIFACT_PATH }} + publish-pages: true deploy: if: ${{ github.repository_owner == 'bytecodealliance' }} + needs: + - build environment: name: github-pages url: ${{ steps.deployment.outputs.page_url }} - runs-on: ubuntu-latest - needs: build steps: - name: Deploy to GitHub Pages id: deployment - uses: actions/deploy-pages@v4 + uses: actions/deploy-pages@d6db90164ac5ed86f2b6aed7e0febac5b3c0c03e # v4.0.5 diff --git a/.github/workflows/mdbook.yml b/.github/workflows/mdbook.yml index 08a7f15..1807592 100644 --- a/.github/workflows/mdbook.yml +++ b/.github/workflows/mdbook.yml @@ -3,48 +3,13 @@ name: mdbook on: pull_request: -env: - MDBOOK_VERSION: 0.4.21 - MDBOOK_ALERTS_VERSION: 0.6.7 - MDBOOK_LINKCHECK_VERSION: 0.7.7 - jobs: build: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 - - - uses: taiki-e/cache-cargo-install-action@v2 - with: - tool: mdbook@${{ env.MDBOOK_VERSION }} - - - uses: taiki-e/cache-cargo-install-action@v2 - with: - tool: mdbook-alerts@${{ env.MDBOOK_ALERTS_VERSION }} - - - uses: taiki-e/cache-cargo-install-action@v2 - with: - tool: mdbook-linkcheck@${{ env.MDBOOK_LINKCHECK_VERSION }} - - - name: Build with mdBook - run: mdbook build component-model - - - name: Ensure build outputs are present - shell: bash - run: | - if [[ ! -f "${{ env.ARTIFACT_PATH }}/index.html" ]]; then - echo "[error] index.html @ [${{ env.ARTIFACT_PATH }}] is missing. Build or path misconfigured"; - exit 1; - fi + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - - name: Setup Python - uses: actions/setup-python@v5 + - uses: ./.github/actions/mdbook with: - python-version: '3.13' + publish-pages: true - - name: Generate sitemap - shell: bash - run: | - cd ${{ env.ARTIFACT_PATH }} - python3 ../../../scripts/generate_sitemap.py --domain "component-model.bytecodealliance.org" --higher-priority "design" --output-path sitemap.xml - cd ../../../ diff --git a/justfile b/justfile new file mode 100644 index 0000000..fddddd7 --- /dev/null +++ b/justfile @@ -0,0 +1,19 @@ +just := env_var_or_default("JUST", "just") +just_dir := env_var_or_default("JUST_DIR", justfile_directory()) + +python := env_var_or_default("PYTHON", "python3") +cargo := env_var_or_default("CARGO", "cargo") + +publish_domain := env_var_or_default("PUBLISH_DOMAIN", "component-model.bytecodealliance.org") + +scripts_dir := env_var_or_default("SCRIPTS_DIR", "scripts") + +sitemap_output_path := absolute_path("./component-model/book/html/sitemap.xml") + +@_default: + {{just}} --list + +# Build the sitemap +@build-sitemap: + {{python}} {{scripts_dir}}/generate_sitemap.py --domain "{{publish_domain}}" --higher-priority "design" --output-path {{sitemap_output_path}} + diff --git a/scripts/generate_sitemap.py b/scripts/generate_sitemap.py index b729de5..b490e61 100644 --- a/scripts/generate_sitemap.py +++ b/scripts/generate_sitemap.py @@ -1,11 +1,13 @@ import os from urllib.parse import urljoin from datetime import datetime +from pathlib import Path + import argparse -def parse_summary(): +def parse_summary(summary_file_path): """Parse URLs from the SUMMARY.md file.""" - with open("../../src/SUMMARY.md", "r") as file: + with open(summary_file_path, "r") as file: for line in file: if "](" in line: url = line.split("](")[1].split(")")[0] @@ -23,10 +25,10 @@ def determine_priority(url_path, higher_priority_section): else: return "0.5" # All other pages -def generate_sitemap(domain, output_path, higher_priority_section): +def generate_sitemap(domain, output_path, summary_file_path, higher_priority_section): """Generate a sitemap XML file from SUMMARY.md structure.""" domain = "https://" + domain - urls = parse_summary() # Add base URL to the list of URLs + urls = parse_summary(summary_file_path) # Add base URL to the list of URLs urls = [""] + list(urls) sitemap = '\n' @@ -48,11 +50,23 @@ def generate_sitemap(domain, output_path, higher_priority_section): with open(output_path, "w") as file: file.write(sitemap) +DEFAULT_SUMMARY_MD_PATH = (Path(__file__).parent / "../component-model/src/SUMMARY.md").resolve() +DEFAULT_SITEMAP_XML_PATH = (Path(__file__).parent / "../component-model/book/html/sitemap.sml").resolve() + if __name__ == "__main__": parser = argparse.ArgumentParser(description="Generate a sitemap for mdBook") - parser.add_argument("-d", "--domain", required=True, help="Domain for the mdBook site (e.g., component-model.bytecodealliance.org)") - parser.add_argument("-o", "--output-path", default="sitemap.xml", help="Output path for the sitemap file") + parser.add_argument("-d", "--domain", required=True, help="Domain for the mdBook site (e.g., 'component-model.bytecodealliance.org')") + parser.add_argument("-o", "--output-path", default=DEFAULT_SITEMAP_XML_PATH, help="Output path for the sitemap file") + parser.add_argument("-s", "--summary-md-path", default=DEFAULT_SUMMARY_MD_PATH, help="Path to SUMMARY.md") parser.add_argument("-p", "--higher-priority", help="Subsection path (e.g., 'design') to assign a higher priority of 0.8") args = parser.parse_args() - generate_sitemap(args.domain, args.output_path, args.higher_priority) + summary_file_path = Path(args.summary_md_path).resolve() + if not summary_file_path.exists(): + raise FileNotFoundError(f"failed to find summary file [{summary_file_path}]") + + output_path = Path(args.output_path).resolve() + if not output_path.parent.exists(): + raise FileNotFoundError(f"failed to find output dir [{output_path.parent}]") + + generate_sitemap(args.domain, output_path, summary_file_path, args.higher_priority) From 9038e01b74c922db24502d3a6cacb5ae3cb08f1f Mon Sep 17 00:00:00 2001 From: Victor Adossi Date: Wed, 26 Mar 2025 23:34:35 +0900 Subject: [PATCH 142/175] fix: use build-sitemap Signed-off-by: Victor Adossi --- .github/actions/mdbook/action.yml | 16 +--------------- justfile | 10 ++++++++-- 2 files changed, 9 insertions(+), 17 deletions(-) diff --git a/.github/actions/mdbook/action.yml b/.github/actions/mdbook/action.yml index ac81c7b..235df5c 100644 --- a/.github/actions/mdbook/action.yml +++ b/.github/actions/mdbook/action.yml @@ -38,7 +38,6 @@ inputs: default: "0.7.7" description: | Version of mdbook-linkcheck to use (ex. '0.7.7') - env: ARTIFACT_PATH: ./component-model/book/html @@ -74,23 +73,10 @@ runs: with: python-version: '3.13' - - name: Ensure build outputs are present - shell: bash - run: | - if [[ ! -f "${{ env.ARTIFACT_PATH }}/index.html" ]]; then - echo "[error] index.html @ [${{ env.ARTIFACT_PATH }}] is missing. Build or path misconfigured"; - exit 1; - fi - - name: Generate sitemap shell: bash run: | - cd ${{ env.ARTIFACT_PATH }} - python3 ../../../scripts/generate_sitemap.py \ - --domain "${{ inputs.publish-domain }}" \ - --higher-priority "design" \ - --output-path sitemap.xml - cd ../../../ + just build-sitemap - name: Ensure publish-domain was provided if: ${{ inputs.publish-pages-artifact }} diff --git a/justfile b/justfile index fddddd7..3e1ae80 100644 --- a/justfile +++ b/justfile @@ -8,12 +8,18 @@ publish_domain := env_var_or_default("PUBLISH_DOMAIN", "component-model.bytecode scripts_dir := env_var_or_default("SCRIPTS_DIR", "scripts") -sitemap_output_path := absolute_path("./component-model/book/html/sitemap.xml") +sitemap_output_path := env_var_or_default("SITEMAP_OUTPUT_PATH", absolute_path("./component-model/book/html/sitemap.xml")) +book_output_dir := env_var_or_default("BOOK_OUTPUT_DIR", "./component-model/book/html") @_default: {{just}} --list # Build the sitemap @build-sitemap: - {{python}} {{scripts_dir}}/generate_sitemap.py --domain "{{publish_domain}}" --higher-priority "design" --output-path {{sitemap_output_path}} + {{python}} {{scripts_dir}}/generate_sitemap.py --domain "{{publish_domain}}" --higher-priority "design" --output-path {{sitemap_output_path}} + if [[ ! -f "{{book_output_dir}}/index.html" ]]; then \ + echo "[error] index.html @ [{{book_output_dir}}] is missing. Build or path misconfigured"; \ + exit 1; \ + fi + From df5e7474979bcf91ac18dfacd43c7b0b5bc8b669 Mon Sep 17 00:00:00 2001 From: Victor Adossi Date: Wed, 26 Mar 2025 23:42:05 +0900 Subject: [PATCH 143/175] feat(ci): add ability to use pre-existing ref Signed-off-by: Victor Adossi --- .github/workflows/deploy.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 03ca078..c72ab1d 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -5,6 +5,13 @@ on: branches: ["main"] workflow_dispatch: + inputs: + ref: + required: false + type: string + default: main + description: | + The git ref to deploy (ex. 'main', 'branch', '') permissions: contents: read @@ -27,6 +34,8 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + with: + ref: ${{ inputs.ref || 'main' }} - uses: ./.github/actions/mdbook with: From 35e401711c776e4bfd1bd9dfb9705f5cf96f72bc Mon Sep 17 00:00:00 2001 From: Victor Adossi Date: Wed, 26 Mar 2025 23:43:28 +0900 Subject: [PATCH 144/175] refactor(ci): ensure to not publish on PR builds Signed-off-by: Victor Adossi --- .github/workflows/deploy.yml | 3 ++- .github/workflows/mdbook.yml | 6 +++--- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index c72ab1d..ca02ddc 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -37,7 +37,8 @@ jobs: with: ref: ${{ inputs.ref || 'main' }} - - uses: ./.github/actions/mdbook + - name: build mdbook + uses: ./.github/actions/mdbook with: publish-pages: true diff --git a/.github/workflows/mdbook.yml b/.github/workflows/mdbook.yml index 1807592..64ed56a 100644 --- a/.github/workflows/mdbook.yml +++ b/.github/workflows/mdbook.yml @@ -9,7 +9,7 @@ jobs: steps: - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - - uses: ./.github/actions/mdbook + - name: build mdbook + uses: ./.github/actions/mdbook with: - publish-pages: true - + publish-pages: false From 82bbaefa716d2a65624647a0d37131aeb9382baf Mon Sep 17 00:00:00 2001 From: Victor Adossi Date: Wed, 26 Mar 2025 23:48:14 +0900 Subject: [PATCH 145/175] fix(ci): setting for reusable action Signed-off-by: Victor Adossi --- .github/workflows/deploy.yml | 2 +- .github/workflows/mdbook.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index ca02ddc..e932815 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -40,7 +40,7 @@ jobs: - name: build mdbook uses: ./.github/actions/mdbook with: - publish-pages: true + publish-pages-artifact: true deploy: if: ${{ github.repository_owner == 'bytecodealliance' }} diff --git a/.github/workflows/mdbook.yml b/.github/workflows/mdbook.yml index 64ed56a..1ce1e8b 100644 --- a/.github/workflows/mdbook.yml +++ b/.github/workflows/mdbook.yml @@ -12,4 +12,4 @@ jobs: - name: build mdbook uses: ./.github/actions/mdbook with: - publish-pages: false + publish-pages-artifact: true From ac849e705d6e28e5d2f9782bd578cc3c2504a4da Mon Sep 17 00:00:00 2001 From: Victor Adossi Date: Wed, 26 Mar 2025 23:51:27 +0900 Subject: [PATCH 146/175] fix(ci): justfile, extra just install Signed-off-by: Victor Adossi --- .github/actions/mdbook/action.yml | 4 ---- justfile | 2 +- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/.github/actions/mdbook/action.yml b/.github/actions/mdbook/action.yml index 235df5c..196ac66 100644 --- a/.github/actions/mdbook/action.yml +++ b/.github/actions/mdbook/action.yml @@ -48,10 +48,6 @@ runs: - uses: extractions/setup-just@v2 - - uses: taiki-e/cache-cargo-install-action@4d586f211d9b0bca9e7b59e57e2a0febf36c0929 # v2.1.1 - with: - tool: "just" - - uses: taiki-e/cache-cargo-install-action@4d586f211d9b0bca9e7b59e57e2a0febf36c0929 # v2.1.1 with: tool: "mdbook@${{ inputs.mdbook-version }}" diff --git a/justfile b/justfile index 3e1ae80..da9aeb9 100644 --- a/justfile +++ b/justfile @@ -17,7 +17,7 @@ book_output_dir := env_var_or_default("BOOK_OUTPUT_DIR", "./component-model/book # Build the sitemap @build-sitemap: {{python}} {{scripts_dir}}/generate_sitemap.py --domain "{{publish_domain}}" --higher-priority "design" --output-path {{sitemap_output_path}} - if [[ ! -f "{{book_output_dir}}/index.html" ]]; then \ + if [ ! -f "{{book_output_dir}}/index.html" ]; then \ echo "[error] index.html @ [{{book_output_dir}}] is missing. Build or path misconfigured"; \ exit 1; \ fi From 470026e3a87636db5b601a1339dbc51b7c9e5be4 Mon Sep 17 00:00:00 2001 From: Victor Adossi Date: Wed, 26 Mar 2025 23:54:27 +0900 Subject: [PATCH 147/175] refactor(ci): use artifact output path Signed-off-by: Victor Adossi --- .github/actions/mdbook/action.yml | 15 ++++++++------- justfile | 14 ++++++++++++-- 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/.github/actions/mdbook/action.yml b/.github/actions/mdbook/action.yml index 196ac66..9dc1420 100644 --- a/.github/actions/mdbook/action.yml +++ b/.github/actions/mdbook/action.yml @@ -38,8 +38,6 @@ inputs: default: "0.7.7" description: | Version of mdbook-linkcheck to use (ex. '0.7.7') -env: - ARTIFACT_PATH: ./component-model/book/html runs: using: composite @@ -60,15 +58,18 @@ runs: with: tool: "mdbook-linkcheck@${{ inputs.mdbook-linkcheck-version }}" - - name: Build with mdBook - shell: bash - run: mdbook build component-model - - name: Setup Python uses: actions/setup-python@8d9ed9ac5c53483de85588cdf95a591a75ab9f55 # v5.5.0 with: python-version: '3.13' + - name: Build with mdBook + shell: bash + id: book-build + run: | + just build-book + echo "output-path=$(just print-book-dir)" >> $GITHUB_OUTPUT + - name: Generate sitemap shell: bash run: | @@ -92,4 +93,4 @@ runs: if: ${{ inputs.publish-pages-artifact }} uses: actions/upload-pages-artifact@56afc609e74202658d3ffba0e8f6dda462b719fa # v3.0.1 with: - path: ${{ env.ARTIFACT_PATH }} + path: ${{ steps.book-build.outputs.output-path }} diff --git a/justfile b/justfile index da9aeb9..2166f5a 100644 --- a/justfile +++ b/justfile @@ -3,6 +3,7 @@ just_dir := env_var_or_default("JUST_DIR", justfile_directory()) python := env_var_or_default("PYTHON", "python3") cargo := env_var_or_default("CARGO", "cargo") +mdbook := env_var_or_default("MDBOOK", "mdbook") publish_domain := env_var_or_default("PUBLISH_DOMAIN", "component-model.bytecodealliance.org") @@ -14,12 +15,21 @@ book_output_dir := env_var_or_default("BOOK_OUTPUT_DIR", "./component-model/book @_default: {{just}} --list +# Print the directory the book was output to +[group('meta')] +@print-book-dir: + echo -n {{book_output_dir}} + +# Build the book +[group('build')] +@build-book: + {{mdbook}} build component-model + # Build the sitemap +[group('build')] @build-sitemap: {{python}} {{scripts_dir}}/generate_sitemap.py --domain "{{publish_domain}}" --higher-priority "design" --output-path {{sitemap_output_path}} if [ ! -f "{{book_output_dir}}/index.html" ]; then \ echo "[error] index.html @ [{{book_output_dir}}] is missing. Build or path misconfigured"; \ exit 1; \ fi - - From b04082b3d9918f91e9c158931b2560192cdf39c1 Mon Sep 17 00:00:00 2001 From: Victor Adossi Date: Thu, 27 Mar 2025 00:03:21 +0900 Subject: [PATCH 148/175] feat(ci): pass through publish domain during deploy Signed-off-by: Victor Adossi --- .github/workflows/deploy.yml | 9 ++++++++- justfile | 2 +- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index e932815..3e4a5f0 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -13,6 +13,13 @@ on: description: | The git ref to deploy (ex. 'main', 'branch', '') + publish-domain: + required: false + type: string + default: "component-model.bytecodealliance.org" + description: | + The domain to which to publish (ex. 'component-model.bytecodealliance.org') + permissions: contents: read pages: write @@ -26,7 +33,6 @@ env: MDBOOK_VERSION: 0.4.21 MDBOOK_ALERTS_VERSION: 0.6.7 MDBOOK_LINKCHECK_VERSION: 0.7.7 - PUBLISH_DOMAIN: component-model.bytecodealliance.org ARTIFACT_PATH: ./component-model/book/html jobs: @@ -41,6 +47,7 @@ jobs: uses: ./.github/actions/mdbook with: publish-pages-artifact: true + publish-domain: ${{ inputs.publish-domain || 'component-model.bytecodealliance.org' }} deploy: if: ${{ github.repository_owner == 'bytecodealliance' }} diff --git a/justfile b/justfile index 2166f5a..baa84b1 100644 --- a/justfile +++ b/justfile @@ -15,7 +15,7 @@ book_output_dir := env_var_or_default("BOOK_OUTPUT_DIR", "./component-model/book @_default: {{just}} --list -# Print the directory the book was output to +# Print the directory the book is/would be output to [group('meta')] @print-book-dir: echo -n {{book_output_dir}} From e2364935823b16cb744b4d371c677ed018477536 Mon Sep 17 00:00:00 2001 From: Victor Adossi Date: Thu, 27 Mar 2025 00:06:02 +0900 Subject: [PATCH 149/175] fix(ci): use publish domain Signed-off-by: Victor Adossi --- .github/actions/mdbook/action.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/actions/mdbook/action.yml b/.github/actions/mdbook/action.yml index 9dc1420..f3861dd 100644 --- a/.github/actions/mdbook/action.yml +++ b/.github/actions/mdbook/action.yml @@ -66,6 +66,8 @@ runs: - name: Build with mdBook shell: bash id: book-build + env: + PUBLISH_DOMAIN: ${{ inputs.publish-domain }} run: | just build-book echo "output-path=$(just print-book-dir)" >> $GITHUB_OUTPUT From ef8908e1402d3be754bbbe355a613bf5af5e2294 Mon Sep 17 00:00:00 2001 From: Victor Adossi Date: Thu, 27 Mar 2025 00:07:46 +0900 Subject: [PATCH 150/175] fix(ci): missing runs-on Signed-off-by: Victor Adossi --- .github/workflows/deploy.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 3e4a5f0..22de48a 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -51,6 +51,7 @@ jobs: deploy: if: ${{ github.repository_owner == 'bytecodealliance' }} + runs-on: ubuntu-latest needs: - build environment: From 9267bbb2c9b984a30abedfd77c5d1c89927817b7 Mon Sep 17 00:00:00 2001 From: Victor Adossi Date: Thu, 27 Mar 2025 00:08:41 +0900 Subject: [PATCH 151/175] refactor(ci): branches listing Signed-off-by: Victor Adossi --- .github/workflows/deploy.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 22de48a..e6af4e8 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -2,7 +2,8 @@ name: Deploy mdBook site to Pages on: push: - branches: ["main"] + branches: + - main workflow_dispatch: inputs: From c13a5ffeb4dc812ae156f204d71348ce16d04483 Mon Sep 17 00:00:00 2001 From: Kate Goldenring Date: Tue, 1 Apr 2025 08:21:05 -0700 Subject: [PATCH 152/175] Update wkg docs to be more comprehensive Signed-off-by: Kate Goldenring --- .../creating-and-consuming/distributing.md | 116 +++++++++++------- 1 file changed, 72 insertions(+), 44 deletions(-) diff --git a/component-model/src/creating-and-consuming/distributing.md b/component-model/src/creating-and-consuming/distributing.md index 31fdd5f..f454e47 100644 --- a/component-model/src/creating-and-consuming/distributing.md +++ b/component-model/src/creating-and-consuming/distributing.md @@ -6,91 +6,119 @@ Publishing and distribution are not defined by the core component model, but for You can get involved with improving the packaging and hosting of Wasm components by joining the [Bytecode Alliance Packaging Special Interest Group (SIG)](https://github.com/bytecodealliance/governance/blob/main/SIGs/sig-packaging/proposal.md). -## Registry Tooling +## The `wkg` Registry Tool -The [`wasm-pkg-tools` project](https://github.com/bytecodealliance/wasm-pkg-tools) enables fetching and publishing Wasm Components to OCI or Warg registries. It contains a `wkg` CLI tool that eases distributing and fetching components and WIT packages. The following examples walk through using `wkg`. +The [`wasm-pkg-tools` project](https://github.com/bytecodealliance/wasm-pkg-tools) enables fetching and publishing Wasm components to OCI registries. It contains a `wkg` CLI tool that eases distributing and fetching components and WIT packages. `wkg` contains several subcommand: -## Distributing Components Using `wkg` +- `wkg oci` - is a CLI wrapper around the [oci-wasm](https://github.com/bytecodealliance/rust-oci-wasm) crate which enables pushing/pulling Wasm artifacts to/from any OCI registry +- `wkg publish` - pushes *library* components or WIT packages +- `wkg get` - pulls *library* components or WIT packages +- `wkg wit` - commands for interacting with WIT files and dependencies +- `wkg config` - interact with the `wkg` configuration -A component is pushed to an OCI registry using `wkg oci push`. The example below pushes to a GHCR: +The following sections detail a subset of actions that can be performed with `wkg`. -```sh -wkg oci push ghcr.io/user/hello:0.1.0 hello.wasm -``` - -## Fetching Components Using `wkg` +## `wkg` Configuration Files -A component is pulled from a OCI registry using `wkg oci pull`. The example below pulls a component from GHCR: +The `wkg` tool uses a configuration file to understand where to publish and fetch specific packages to and from. It provides the ability to configure: -```sh -wkg oci pull ghcr.io/user/hello:0.1.0 -o hello.wasm -``` +- a default registry for all packages at the top level of the file +- a default registry for all packages of a specific namespace under `[namespace_registries]`. This section can be used to configure the registry of all `wasi` namespaced packages, such as `wasi:clocks` and `wasi:http`. +- an override for package of a specific namespace under `[package_registry_overrides]`. This section can be used to fetch/publish a specific package of a namespace from/to a different location than all other packages of that namespace. For example, maybe you want to fetch `wasi:http` from a different registry. +- credentials for a registry under `[registry."".oci]` +- and more! See the [`wkg` docs for more configuration options](https://github.com/bytecodealliance/wasm-pkg-tools?tab=readme-ov-file#configuration). -## Configuring `wkg` to Fetch WASI Packages +For example, to fetch WASI packages, such as `wasi:clocks` and `wasi:http`, a line can be added under the `namespace_registries` section for the `wasi` namespace. Specifically, the example below configures `wkg` to fetch WASI packages from the [WebAssembly OCI GitHub Container Registry](https://github.com/orgs/WebAssembly/packages), where the latest interfaces are published upon WASI releases. To edit your `wkg` config file, simply run `wkg config --edit`. -The `wkg` tool uses a configuration file to store settings with a default location of `$XDG_CONFIG_HOME/wasm-pkg/config.toml`. It must be configured to know which registry to use for which package namespaces. The following is a convenient configuration to ensure you can fetch WASI packages from the [WebAssembly OCI registry](https://github.com/WebAssembly/WASI/pkgs/container/wasi), where the latest interfaces are published upon WASI releases. +> Remember, all package names consist of the a namespace field followed by the package field. The package name `wasi:clocks` has a namespace of `wasi` and package field of `clocks`. In this way, the following configuration ensures that `wkg` will know to route fetches and publishes of any `wasi:x` to the configured location. ```toml # $XDG_CONFIG_HOME/wasm-pkg/config.toml default_registry = "ghcr.io" [namespace_registries] +# Instruct wkg to use the OCI protocol to fetch packages with the `wasi` namespace from ghcr.io/webassembly wasi = { registry = "wasi", metadata = { preferredProtocol = "oci", "oci" = {registry = "ghcr.io", namespacePrefix = "webassembly/" } } } - -[package_registry_overrides] - -[registry] ``` -## Distributing WIT Packages using `wkg` - -The `wkg` tool uses a [configuration file](https://github.com/bytecodealliance/wasm-pkg-tools?tab=readme-ov-file#configuration) to store settings with a default location of `$XDG_CONFIG_HOME/wasm-pkg/config.toml`. It must be configured to know which registry to use for which package namespaces. The following configuration, instructs `wkg` to use [ttl.sh](https://ttl.sh/) OCI registry for all packages with the `foo` namespace. +As a more generic example, The following configuration, instructs `wkg` to use [ttl.sh](https://ttl.sh/) OCI registry for all packages with the `docs` namespace. ```toml # $XDG_CONFIG_HOME/wasm-pkg/config.toml default_registry = "ghcr.io" [namespace_registries] -foo = { registry = "foo-registry", metadata = { preferredProtocol = "oci", "oci" = {registry = "ttl.sh", namespacePrefix = "wasm-components/" } } } +# Instruct wkg to use the OCI protocol to fetch packages with the `foo` namespace from ttl.sh/wasm-components +docs = { registry = "docs-registry", metadata = { preferredProtocol = "oci", "oci" = {registry = "ttl.sh", namespacePrefix = "wasm-components/" } } } +``` -[package_registry_overrides] +> Note: the registry name can be referenced in the `package_registry_overrides` section of the `wkg` config to provide overrides for specific packages of a namespace. -[registry] -``` -Now, `foo` packages can be built and published using `wkg`. +## Distributing WIT and Library Components using `wkg publish` -```sh -mkdir wit -cat > wit/foo.wit << EOL -package foo:bar@0.1.0; +Once you've [configured `wkg`](#wkg-configuration-files) to know where to publish packages to, you can use the `wkg publish` command to publish library *components* or *interfaces* to be consumed by others. + +Imagine you have defined the following `adder` world in WIT: + +```wit +package docs:adder@0.1.0; -interface do-something { - reduce: func(a: u32, b: u32) -> u32; +interface add { + add: func(a: u32, b: u32) -> u32; } -world example { - export do-something; +world adder { + export add; } -EOL +``` -wkg wit build -wkg publish foo:bar@0.1.0.wasm +You can publish this *WIT* using `wkg` by wrapping it up as a Wasm component. Yes, you heard that right! We are packaging WIT as Wasm. + +```sh +# Package the contents of add WIT directory as Wasm +wkg wit build --wit-dir tutorial/wit/adder +# Publish the produced component +wkg publish docs:adder@0.1.0.wasm ``` -This will publish the component to `ttl.sh/wasm-components/foo/bar:0.1.0` +If you had configured `wkg` as described in the [`wkg` configuration section](#wkg-configuration-files), this would publish the component to `ttl.sh/wasm-components/docs/adder:0.1.0`. This WIT can then be fetched using `wkg get`, specifying the format `wit`: -## Configuring `wkg` to Fetch Custom Packages +```sh +wkg get --format wit docs:adder@0.1.0 +``` + +Instead of publishing the WIT interface, you could publish the built component by running: + +```sh +wkg publish adder.wasm --package docs:adder@0.1.0 +``` + +This component can then be fetched by running: + +```sh +wkg get docs:adder@0.1.0 +``` + +## More Generic Operations with `wkg oci` + +The `wkg oci` subcommand is a CLI wrapper around the [oci-wasm](https://github.com/bytecodealliance/rust-oci-wasm) crate which enables pushing/pulling Wasm artifacts to/from any OCI registry. Unlike `wkg publish` and `wkg get` it is not limited to library components, as providing the WIT package is not required. + +A component is pushed to an OCI registry using `wkg oci pull`. The example below pulls a component from a GitHub Container Registry. + +```sh +wkg oci push ghcr.io/user/component:0.1.0 component.wasm +``` -After configuring `wkg` to know where to pull `foo` namespaced packages from, the `bar` package can be pulled with `wkg get`: +To pull a component, run: ```sh -wkg get --format wit foo:bar@0.1.0 +wkg oci pull ghcr.io/user/component:0.1.0 -o component.wasm ``` ## Fetching WIT Package Dependencies using `wkg` -Sometimes fetching a single package is not sufficient because it depends on other packages. For example, the following world describes a simple Wasm service which requires `wasi:http/proxy``: +Sometimes fetching a single package is not sufficient because it depends on other packages. For example, the following world describes a simple Wasm service which requires `wasi:http/proxy`: ```wit package foo:wasi-http-service; @@ -100,7 +128,7 @@ world target-world { } ``` -One may be tempted to simply get the `wasi:http` package with `wkg get --format wit wasi:http@0.2.3 -o wit/deps/http/`. However, `wasi:http` depends on other WASI packages such as `wasi:clocks` and `wasi:io`. To make sure to fetch a package and all its dependencies, use `wkg fetch`, which will read the package containing the world(s) you have defined in the given wit directory (`wit` by default). It will then fetch the +You may be tempted to simply get the `wasi:http` package with `wkg get --format wit wasi:http@0.2.3 -o wit/deps/http/`. However, `wasi:http` depends on other WASI packages such as `wasi:clocks` and `wasi:io`. To make sure to fetch a package and all its dependencies, use `wkg wit fetch`, which will read the package containing the world(s) you have defined in the given wit directory (`wit` by default). It will then fetch the dependencies and write them to the `deps` directory along with a lock file. After placing the above file in `./wit`, run the following to fetch the dependencies: From e0c92e4a79e9afcec60c5273ee1b85fb440a67c5 Mon Sep 17 00:00:00 2001 From: Alex Casalboni Date: Wed, 2 Apr 2025 22:30:48 +0200 Subject: [PATCH 153/175] docs: add -no-debug warning for tinygo --- component-model/src/language-support/go.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/component-model/src/language-support/go.md b/component-model/src/language-support/go.md index 85d1cbe..24d36db 100644 --- a/component-model/src/language-support/go.md +++ b/component-model/src/language-support/go.md @@ -286,6 +286,8 @@ Under the hood, TinyGo invokes `wasm-tools` to embed the WIT file to the module tinygo build -target=wasip2 -o add.wasm --wit-package docs:adder@0.1.0.wasm --wit-world adder main.go ``` +> **WARNING:** By default, tinygo includes all debug-related information in your .wasm file. That is desirable when prototyping or testing locally to obtain useful backtraces in case of errors (for example, with `wasmtime::WasmBacktraceDetails::Enable`). To remove debug data and optimize your binary file, build with `-no-debug`. The resulting .wasm file will be considerably smaller (up to 75% reduction in size). + We now have an add component that satisfies our `adder` world, exporting the `add` function, which We can confirm using the `wasm-tools component wit` command: From a01d1208017b1bfd1e43b1e99bc91be70c37c64c Mon Sep 17 00:00:00 2001 From: Alex Casalboni Date: Wed, 2 Apr 2025 22:31:58 +0200 Subject: [PATCH 154/175] docs: add '--disable all' warning for standard library utilities that don't work without WASI interfaces such as stdio, random, and clocks --- component-model/src/language-support/javascript.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/component-model/src/language-support/javascript.md b/component-model/src/language-support/javascript.md index 5336b07..e440f91 100644 --- a/component-model/src/language-support/javascript.md +++ b/component-model/src/language-support/javascript.md @@ -106,6 +106,8 @@ You should see output like the following: OK Successfully written add.wasm. ``` +> **WARNING:** By using `--disable all`, your component won't get access to any WASI interfaces that might be useful for debugging or logging. For example, you can't `console.log(...)` or `console.error(...)` without `stdio`; you can't use `Math.random()` without `random`; and you can't use `Date.now()` or `new Date()` without `clocks`. Please note that calls to `Math.random()` or `Data.now()` will return seemengly valid outputs, but without actual randomness or timestamp correctness. + [mdn-js-module]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Modules ## Running the Component in the `example-host` From 61bf101eec0a787054b5cc9ed85433eb7450ed56 Mon Sep 17 00:00:00 2001 From: Alex Casalboni Date: Wed, 2 Apr 2025 22:32:42 +0200 Subject: [PATCH 155/175] docs: add --release warning for Rust debugging --- component-model/src/language-support/rust.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/component-model/src/language-support/rust.md b/component-model/src/language-support/rust.md index f03e531..cba6a1f 100644 --- a/component-model/src/language-support/rust.md +++ b/component-model/src/language-support/rust.md @@ -90,6 +90,8 @@ Now, use `cargo component` to build the component, being sure to optimize with a cargo component build --release ``` +> **WARNING:** Building with `--release` removes all debug-related information from the resulting .wasm file. When prototyping or testing locally, you might want to avoid `--release` to obtain useful backtraces in case of errors (for example, with `wasmtime::WasmBacktraceDetails::Enable`). Note: the resulting .wasm file will be considerably larger (likely 4MB+). + You can use `wasm-tools component wit` to output the WIT package of the component: ``` From bf23676429388dc781cf8799aa81049902ea7717 Mon Sep 17 00:00:00 2001 From: Alex Casalboni Date: Thu, 3 Apr 2025 10:18:11 +0200 Subject: [PATCH 156/175] chore: typo --- component-model/src/language-support/javascript.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/component-model/src/language-support/javascript.md b/component-model/src/language-support/javascript.md index e440f91..64c5afd 100644 --- a/component-model/src/language-support/javascript.md +++ b/component-model/src/language-support/javascript.md @@ -106,7 +106,7 @@ You should see output like the following: OK Successfully written add.wasm. ``` -> **WARNING:** By using `--disable all`, your component won't get access to any WASI interfaces that might be useful for debugging or logging. For example, you can't `console.log(...)` or `console.error(...)` without `stdio`; you can't use `Math.random()` without `random`; and you can't use `Date.now()` or `new Date()` without `clocks`. Please note that calls to `Math.random()` or `Data.now()` will return seemengly valid outputs, but without actual randomness or timestamp correctness. +> **WARNING:** By using `--disable all`, your component won't get access to any WASI interfaces that might be useful for debugging or logging. For example, you can't `console.log(...)` or `console.error(...)` without `stdio`; you can't use `Math.random()` without `random`; and you can't use `Date.now()` or `new Date()` without `clocks`. Please note that calls to `Math.random()` or `Data.now()` will return seemingly valid outputs, but without actual randomness or timestamp correctness. [mdn-js-module]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Modules From 4742f3ba0bfbde4c4d57db92e0a601dae620a565 Mon Sep 17 00:00:00 2001 From: Alex Casalboni Date: Thu, 3 Apr 2025 10:19:21 +0200 Subject: [PATCH 157/175] chore: typo --- component-model/src/language-support/javascript.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/component-model/src/language-support/javascript.md b/component-model/src/language-support/javascript.md index 64c5afd..75e410c 100644 --- a/component-model/src/language-support/javascript.md +++ b/component-model/src/language-support/javascript.md @@ -106,7 +106,7 @@ You should see output like the following: OK Successfully written add.wasm. ``` -> **WARNING:** By using `--disable all`, your component won't get access to any WASI interfaces that might be useful for debugging or logging. For example, you can't `console.log(...)` or `console.error(...)` without `stdio`; you can't use `Math.random()` without `random`; and you can't use `Date.now()` or `new Date()` without `clocks`. Please note that calls to `Math.random()` or `Data.now()` will return seemingly valid outputs, but without actual randomness or timestamp correctness. +> **WARNING:** By using `--disable all`, your component won't get access to any WASI interfaces that might be useful for debugging or logging. For example, you can't `console.log(...)` or `console.error(...)` without `stdio`; you can't use `Math.random()` without `random`; and you can't use `Date.now()` or `new Date()` without `clocks`. Please note that calls to `Math.random()` or `Date.now()` will return seemingly valid outputs, but without actual randomness or timestamp correctness. [mdn-js-module]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Modules From 029f9c443a066f726b02aa83f974da7fcf90a1a2 Mon Sep 17 00:00:00 2001 From: kasparia Date: Mon, 7 Apr 2025 18:56:15 +0300 Subject: [PATCH 158/175] Match variable names to arguments --- component-model/examples/tutorial/adder/src/lib.rs | 2 +- component-model/src/language-support/rust.md | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/component-model/examples/tutorial/adder/src/lib.rs b/component-model/examples/tutorial/adder/src/lib.rs index ec5d396..3c5713c 100644 --- a/component-model/examples/tutorial/adder/src/lib.rs +++ b/component-model/examples/tutorial/adder/src/lib.rs @@ -7,7 +7,7 @@ struct Component; impl Guest for Component { fn add(x: u32, y: u32) -> u32 { - a + b + x + y } } diff --git a/component-model/src/language-support/rust.md b/component-model/src/language-support/rust.md index f03e531..13e512b 100644 --- a/component-model/src/language-support/rust.md +++ b/component-model/src/language-support/rust.md @@ -148,7 +148,7 @@ struct Component; impl Guest for Component { fn add(x: u32, y: u32) -> u32 { - a + b + x + y } } ``` From 722142f1ac0b51903b4f50aa2f4ecf372ee540cf Mon Sep 17 00:00:00 2001 From: Kate Goldenring Date: Fri, 4 Apr 2025 10:33:08 -0700 Subject: [PATCH 159/175] Remove distinction around library components in wkg and PR cleanups Signed-off-by: Kate Goldenring --- .../creating-and-consuming/distributing.md | 43 ++++++++++--------- 1 file changed, 22 insertions(+), 21 deletions(-) diff --git a/component-model/src/creating-and-consuming/distributing.md b/component-model/src/creating-and-consuming/distributing.md index f454e47..1b7142a 100644 --- a/component-model/src/creating-and-consuming/distributing.md +++ b/component-model/src/creating-and-consuming/distributing.md @@ -8,11 +8,13 @@ You can get involved with improving the packaging and hosting of Wasm components ## The `wkg` Registry Tool -The [`wasm-pkg-tools` project](https://github.com/bytecodealliance/wasm-pkg-tools) enables fetching and publishing Wasm components to OCI registries. It contains a `wkg` CLI tool that eases distributing and fetching components and WIT packages. `wkg` contains several subcommand: +The [`wasm-pkg-tools` project](https://github.com/bytecodealliance/wasm-pkg-tools) enables fetching and publishing Wasm components to OCI registries. It contains a `wkg` CLI tool that eases distributing and fetching components and WIT packages. The usual way of using `wkg` is to address packages by their package name, i.e. `example:adder@1.0.0`. When using `wkg` this way, you don't need to know about the physical location of the package, as the `wkg` configuration handles that for you. If you need to, though, you can also use `wkg` to work with OCI artifacts directly, addressing them by OCI references when using the `wkg oci` subcommand. -- `wkg oci` - is a CLI wrapper around the [oci-wasm](https://github.com/bytecodealliance/rust-oci-wasm) crate which enables pushing/pulling Wasm artifacts to/from any OCI registry -- `wkg publish` - pushes *library* components or WIT packages -- `wkg get` - pulls *library* components or WIT packages +`wkg` contains several subcommand: + +- `wkg oci` - pushes/pulls Wasm artifacts to/from any OCI registry +- `wkg publish` - publish components or WIT packages by package name +- `wkg get` - pulls components or WIT packages by package name - `wkg wit` - commands for interacting with WIT files and dependencies - `wkg config` - interact with the `wkg` configuration @@ -20,24 +22,24 @@ The following sections detail a subset of actions that can be performed with `wk ## `wkg` Configuration Files -The `wkg` tool uses a configuration file to understand where to publish and fetch specific packages to and from. It provides the ability to configure: +When you use most `wkg` commands (`wkg oci` being the exception), you don't interact with physical locations, only with package names. The `wkg` configuration file is used to map package naming to physical location. It provides the ability to configure: + +- The default registry for packages in a given namespace. For example, the location for `wasi` packages such as `wasi:clocks` or `wasi:http`. +- Registry overrides for specific packages, or packages not stored in the same place as the rest of their namespace. For example, if `wasi:key-value` were stored in a different registry from other `wasi` packages. +- The default registry for all packages not listed in one of the previous sections -- a default registry for all packages at the top level of the file -- a default registry for all packages of a specific namespace under `[namespace_registries]`. This section can be used to configure the registry of all `wasi` namespaced packages, such as `wasi:clocks` and `wasi:http`. -- an override for package of a specific namespace under `[package_registry_overrides]`. This section can be used to fetch/publish a specific package of a namespace from/to a different location than all other packages of that namespace. For example, maybe you want to fetch `wasi:http` from a different registry. -- credentials for a registry under `[registry."".oci]` -- and more! See the [`wkg` docs for more configuration options](https://github.com/bytecodealliance/wasm-pkg-tools?tab=readme-ov-file#configuration). +The configuration file also includes credentials for private registries, or for pushing to registries where you have permission, and other configuration options. See the [`wkg` docs for more configuration options](https://github.com/bytecodealliance/wasm-pkg-tools?tab=readme-ov-file#configuration). -For example, to fetch WASI packages, such as `wasi:clocks` and `wasi:http`, a line can be added under the `namespace_registries` section for the `wasi` namespace. Specifically, the example below configures `wkg` to fetch WASI packages from the [WebAssembly OCI GitHub Container Registry](https://github.com/orgs/WebAssembly/packages), where the latest interfaces are published upon WASI releases. To edit your `wkg` config file, simply run `wkg config --edit`. +For example, to fetch WASI packages, such as `wasi:clocks` and `wasi:http`, you can add a line under the `namespace_registries` section for the `wasi` namespace. Specifically, the example below configures `wkg` to fetch WASI packages from the [WebAssembly OCI GitHub Container Registry](https://github.com/orgs/WebAssembly/packages), where the latest interfaces are published upon WASI releases. To edit your `wkg` config file, run `wkg config --edit`. -> Remember, all package names consist of the a namespace field followed by the package field. The package name `wasi:clocks` has a namespace of `wasi` and package field of `clocks`. In this way, the following configuration ensures that `wkg` will know to route fetches and publishes of any `wasi:x` to the configured location. +> Remember, all package names consist of the a namespace field followed by the package field. The package name `wasi:clocks` has a namespace of `wasi` and package field of `clocks`. In this way, the following configuration ensures that `wkg` will know to route fetches and publishes of any `wasi:` to the configured location. ```toml # $XDG_CONFIG_HOME/wasm-pkg/config.toml default_registry = "ghcr.io" [namespace_registries] -# Instruct wkg to use the OCI protocol to fetch packages with the `wasi` namespace from ghcr.io/webassembly +# Tell wkg that packages with the `wasi` namespace are in an OCI registry under ghcr.io/webassembly wasi = { registry = "wasi", metadata = { preferredProtocol = "oci", "oci" = {registry = "ghcr.io", namespacePrefix = "webassembly/" } } } ``` @@ -54,10 +56,9 @@ docs = { registry = "docs-registry", metadata = { preferredProtocol = "oci", "o > Note: the registry name can be referenced in the `package_registry_overrides` section of the `wkg` config to provide overrides for specific packages of a namespace. +## Distributing WIT and Components by Package Name with `wkg publish` -## Distributing WIT and Library Components using `wkg publish` - -Once you've [configured `wkg`](#wkg-configuration-files) to know where to publish packages to, you can use the `wkg publish` command to publish library *components* or *interfaces* to be consumed by others. +Once you've [configured `wkg`](#wkg-configuration-files) to know where to publish packages to, you can use the `wkg publish` command to publish *components* or *interfaces* to be consumed by others. Imagine you have defined the following `adder` world in WIT: @@ -85,7 +86,7 @@ wkg publish docs:adder@0.1.0.wasm If you had configured `wkg` as described in the [`wkg` configuration section](#wkg-configuration-files), this would publish the component to `ttl.sh/wasm-components/docs/adder:0.1.0`. This WIT can then be fetched using `wkg get`, specifying the format `wit`: ```sh -wkg get --format wit docs:adder@0.1.0 +wkg get --format wit docs:adder@0.1.0 --output adder.wit ``` Instead of publishing the WIT interface, you could publish the built component by running: @@ -94,17 +95,17 @@ Instead of publishing the WIT interface, you could publish the built component b wkg publish adder.wasm --package docs:adder@0.1.0 ``` -This component can then be fetched by running: +You can then fetch the component by running: ```sh -wkg get docs:adder@0.1.0 +wkg get docs:adder@0.1.0 --output adder.wasm ``` ## More Generic Operations with `wkg oci` -The `wkg oci` subcommand is a CLI wrapper around the [oci-wasm](https://github.com/bytecodealliance/rust-oci-wasm) crate which enables pushing/pulling Wasm artifacts to/from any OCI registry. Unlike `wkg publish` and `wkg get` it is not limited to library components, as providing the WIT package is not required. +The `wkg oci` subcommand enables pushing/pulling Wasm artifacts to/from any OCI registry. Unlike `wkg publish` and `wkg get`, providing the WIT package is not required. -A component is pushed to an OCI registry using `wkg oci pull`. The example below pulls a component from a GitHub Container Registry. +To push a component to an OCI registry, use `wkg oci pull`. The example below pushes a component to a GitHub Container Registry. ```sh wkg oci push ghcr.io/user/component:0.1.0 component.wasm From eb15c5eb8b17b3ed042a1c25ea87656ff35f4043 Mon Sep 17 00:00:00 2001 From: Victor Adossi Date: Tue, 25 Mar 2025 01:00:30 +0900 Subject: [PATCH 160/175] fix(lang/rust): link to old WIT, prose & interface use example Signed-off-by: Victor Adossi --- component-model/src/language-support/rust.md | 54 ++++++++++++++++---- 1 file changed, 44 insertions(+), 10 deletions(-) diff --git a/component-model/src/language-support/rust.md b/component-model/src/language-support/rust.md index 28b87de..b822d8d 100644 --- a/component-model/src/language-support/rust.md +++ b/component-model/src/language-support/rust.md @@ -17,19 +17,19 @@ cargo install cargo-component ## 2. Scaffold a Component with `cargo component` -Create a Rust library that implements the `add` function in the [`adder`world][adder-wit]. +Create a Rust library that implements the `add` function in the [`adder` world][adder-wit]. First scaffold a project: ```sh -$ cargo component new add --lib && cd add +$ cargo component new adder --lib && cd adder ``` Note that `cargo component` generates the necessary bindings as a module called `bindings`. ## 3. Add the WIT world the Component will implement -Next, update `wit/world.wit` to match `add.wit`: +Next, update `wit/world.wit` to match the [`adder` world][adder-wit]: ``` package docs:adder@0.1.0; @@ -124,13 +124,24 @@ $ cargo run --release -- 1 2 ../add/target/wasm32-wasip1/release/add.wasm ## Exporting an interface with `cargo component` -The [sample `add.wit` file](https://github.com/bytecodealliance/component-docs/tree/main/component-model/examples/example-host/add.wit) exports a function. However, you'll often prefer to export an interface, either to comply with an existing specification or to capture a set of functions and types that tend to go together. For example, to implement the following world: +While it is possible to export a raw function, prefer exporting an interface, similar to the [sample `adder` world][add-wit]. +This often makes it easier to comply with an existing specification or to capture a set of functions and types +that tend to go together. + +For example, consider the following changes to the `add` interface in the `adder` world: ```wit package docs:adder@0.1.0; + interface add { - add: func(x: u32, y: u32) -> u32; + variant operand { + unsigned32(u32) + signed32(s32) + zero, + } + + add: func(x: operand, y: operand) -> result; } world adder { @@ -138,23 +149,46 @@ world adder { } ``` -you would write the following Rust code: +This would be implemented with the following Rust code: ```rust +#[allow(warnings)] mod bindings; -// Separating out the interface puts it in a sub-module -use bindings::exports::docs::adder::add::Guest; +use bindings::exports::docs::adder::add::{Guest, Operand}; struct Component; impl Guest for Component { - fn add(x: u32, y: u32) -> u32 { - x + y + fn add(x: Operand, y: Operand) -> Result { + let x = convert_operand(x); + let y = convert_operand(y); + match x + y { + v if v == 0 => Ok(Operand::Zero), + v if v < 0 => i32::try_from(v) + .map_err(|e| format!("unexpectedly invalid u32: {e}")) + .map(Operand::Signed32), + v => u32::try_from(v) + .map_err(|e| format!("unexpectedly invalid u32: {e}")) + .map(Operand::Unsigned32), + } + } +} + +fn convert_operand(operand: Operand) -> i64 { + match operand { + Operand::Unsigned32(v) => v as i64, + Operand::Signed32(v) => v as i64, + Operand::Zero => 0, } } + +bindings::export!(Component with_types_in bindings); ``` +While the code above is unlikely to appear in real interfaces, but it shows the more common case of an interface +including types that are meant to be used *with* the interface in question. + ## Importing an interface with `cargo component` The world file (`wit/world.wit`) generated for you by `cargo component new --lib` doesn't specify any imports. From ec6b327c3ca539dc1cf4ef8a324defb460bcaf0d Mon Sep 17 00:00:00 2001 From: Victor Adossi <123968127+vados-cosmonic@users.noreply.github.com> Date: Tue, 25 Mar 2025 13:10:47 +0900 Subject: [PATCH 161/175] fix(lang/rust): prose Co-authored-by: Kate Goldenring --- component-model/src/language-support/rust.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/component-model/src/language-support/rust.md b/component-model/src/language-support/rust.md index b822d8d..70ab3e2 100644 --- a/component-model/src/language-support/rust.md +++ b/component-model/src/language-support/rust.md @@ -186,7 +186,7 @@ fn convert_operand(operand: Operand) -> i64 { bindings::export!(Component with_types_in bindings); ``` -While the code above is unlikely to appear in real interfaces, but it shows the more common case of an interface +The code above is unlikely to appear in real interfaces; however, it shows the more common case of an interface including types that are meant to be used *with* the interface in question. ## Importing an interface with `cargo component` From 266e9f371cf8bc0944a9eaad9b7ea7fc456dd231 Mon Sep 17 00:00:00 2001 From: Victor Adossi <123968127+vados-cosmonic@users.noreply.github.com> Date: Tue, 25 Mar 2025 13:10:57 +0900 Subject: [PATCH 162/175] fix(lang/rust): prose Co-authored-by: Kate Goldenring --- component-model/src/language-support/rust.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/component-model/src/language-support/rust.md b/component-model/src/language-support/rust.md index 70ab3e2..a7bbda0 100644 --- a/component-model/src/language-support/rust.md +++ b/component-model/src/language-support/rust.md @@ -124,7 +124,7 @@ $ cargo run --release -- 1 2 ../add/target/wasm32-wasip1/release/add.wasm ## Exporting an interface with `cargo component` -While it is possible to export a raw function, prefer exporting an interface, similar to the [sample `adder` world][add-wit]. +While it is possible to export a raw function, it is a best practice to export an interface, similar to the [sample `adder` world][add-wit]. This often makes it easier to comply with an existing specification or to capture a set of functions and types that tend to go together. From 803be65b9b7d978fc5be9044cf76d7b0c0afe50e Mon Sep 17 00:00:00 2001 From: Victor Adossi Date: Thu, 27 Mar 2025 22:42:31 +0900 Subject: [PATCH 163/175] fix(lang/rust): remove more advanced interface example Signed-off-by: Victor Adossi --- component-model/src/language-support/rust.md | 67 -------------------- 1 file changed, 67 deletions(-) diff --git a/component-model/src/language-support/rust.md b/component-model/src/language-support/rust.md index a7bbda0..b3b03b1 100644 --- a/component-model/src/language-support/rust.md +++ b/component-model/src/language-support/rust.md @@ -122,73 +122,6 @@ $ cargo run --release -- 1 2 ../add/target/wasm32-wasip1/release/add.wasm 1 + 2 = 3 ``` -## Exporting an interface with `cargo component` - -While it is possible to export a raw function, it is a best practice to export an interface, similar to the [sample `adder` world][add-wit]. -This often makes it easier to comply with an existing specification or to capture a set of functions and types -that tend to go together. - -For example, consider the following changes to the `add` interface in the `adder` world: - -```wit -package docs:adder@0.1.0; - - -interface add { - variant operand { - unsigned32(u32) - signed32(s32) - zero, - } - - add: func(x: operand, y: operand) -> result; -} - -world adder { - export add; -} -``` - -This would be implemented with the following Rust code: - -```rust -#[allow(warnings)] -mod bindings; - -use bindings::exports::docs::adder::add::{Guest, Operand}; - -struct Component; - -impl Guest for Component { - fn add(x: Operand, y: Operand) -> Result { - let x = convert_operand(x); - let y = convert_operand(y); - match x + y { - v if v == 0 => Ok(Operand::Zero), - v if v < 0 => i32::try_from(v) - .map_err(|e| format!("unexpectedly invalid u32: {e}")) - .map(Operand::Signed32), - v => u32::try_from(v) - .map_err(|e| format!("unexpectedly invalid u32: {e}")) - .map(Operand::Unsigned32), - } - } -} - -fn convert_operand(operand: Operand) -> i64 { - match operand { - Operand::Unsigned32(v) => v as i64, - Operand::Signed32(v) => v as i64, - Operand::Zero => 0, - } -} - -bindings::export!(Component with_types_in bindings); -``` - -The code above is unlikely to appear in real interfaces; however, it shows the more common case of an interface -including types that are meant to be used *with* the interface in question. - ## Importing an interface with `cargo component` The world file (`wit/world.wit`) generated for you by `cargo component new --lib` doesn't specify any imports. From 534c3ea504d2898e590f08bc6e1b8fc98bd69db9 Mon Sep 17 00:00:00 2001 From: Victor Adossi Date: Thu, 27 Mar 2025 22:44:32 +0900 Subject: [PATCH 164/175] fix(lang/rust): naming of adder.wasm Signed-off-by: Victor Adossi --- component-model/src/language-support/rust.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/component-model/src/language-support/rust.md b/component-model/src/language-support/rust.md index b3b03b1..fbe6947 100644 --- a/component-model/src/language-support/rust.md +++ b/component-model/src/language-support/rust.md @@ -95,7 +95,7 @@ cargo component build --release You can use `wasm-tools component wit` to output the WIT package of the component: ``` -$ wasm-tools component wit target/wasm32-wasip1/release/add.wasm +$ wasm-tools component wit target/wasm32-wasip1/release/adder.wasm package root:component; world root { @@ -118,7 +118,7 @@ Rust bindings, bring in WASI worlds, and execute the component. ```sh $ cd examples/example-host -$ cargo run --release -- 1 2 ../add/target/wasm32-wasip1/release/add.wasm +$ cargo run --release -- 1 2 ../add/target/wasm32-wasip1/release/adder.wasm 1 + 2 = 3 ``` @@ -201,7 +201,8 @@ world root { } ``` -As the import is unfulfilled, the `calculator.wasm` component could not run by itself in its current form. To fulfill the `add` import, so that only `calculate` is exported, you would need to [compose the `calculator.wasm` with some `exports-add.wasm` into a single, self-contained component](../creating-and-consuming/composing.md). +As the import is unfulfilled, the `calculator.wasm` component could not run by itself in its current form. To fulfill the `add` import, so that +only `calculate` is exported, you would need to [compose the `calculator.wasm` with some `adder.wasm` into a single, self-contained component](../creating-and-consuming/composing.md). ## Creating a command component with `cargo component` From 5bbe8e45ca466445f83f196dc99e1c28a0b9f875 Mon Sep 17 00:00:00 2001 From: Mikhail Katychev Date: Wed, 9 Apr 2025 18:11:55 -0500 Subject: [PATCH 165/175] PR feedback on adder commentary --- .../examples/tutorial/adder/src/bindings.rs | 27 +++++++++++-------- .../examples/tutorial/adder/src/lib.rs | 7 ++++- component-model/src/language-support/rust.md | 7 ++--- 3 files changed, 24 insertions(+), 17 deletions(-) diff --git a/component-model/examples/tutorial/adder/src/bindings.rs b/component-model/examples/tutorial/adder/src/bindings.rs index 245617d..52775cd 100644 --- a/component-model/examples/tutorial/adder/src/bindings.rs +++ b/component-model/examples/tutorial/adder/src/bindings.rs @@ -1,4 +1,4 @@ -// Generated by `wit-bindgen` 0.36.0. DO NOT EDIT! +// Generated by `wit-bindgen` 0.41.0. DO NOT EDIT! // Options used: // * runtime_path: "wit_bindgen_rt" #[rustfmt::skip] @@ -6,7 +6,7 @@ pub mod exports { pub mod docs { pub mod adder { - #[allow(dead_code, clippy::all)] + #[allow(dead_code, async_fn_in_trait, unused_imports, clippy::all)] pub mod add { #[used] #[doc(hidden)] @@ -25,9 +25,10 @@ pub mod exports { #[doc(hidden)] macro_rules! __export_docs_adder_add_0_1_0_cabi { ($ty:ident with_types_in $($path_to_types:tt)*) => { - const _ : () = { #[export_name = "docs:adder/add@0.1.0#add"] - unsafe extern "C" fn export_add(arg0 : i32, arg1 : i32,) -> i32 { - $($path_to_types)*:: _export_add_cabi::<$ty > (arg0, arg1) } }; + const _ : () = { #[unsafe (export_name = + "docs:adder/add@0.1.0#add")] unsafe extern "C" fn export_add(arg0 + : i32, arg1 : i32,) -> i32 { unsafe { $($path_to_types)*:: + _export_add_cabi::<$ty > (arg0, arg1) } } }; }; } #[doc(hidden)] @@ -38,6 +39,7 @@ pub mod exports { } #[rustfmt::skip] mod _rt { + #![allow(dead_code, clippy::all)] #[cfg(target_arch = "wasm32")] pub fn run_ctors_once() { wit_bindgen_rt::run_ctors_once(); @@ -102,8 +104,8 @@ mod _rt { } } } -/// Generates `#[no_mangle]` functions to export the specified type as the -/// root implementation of all generated traits. +/// Generates `#[unsafe(no_mangle)]` functions to export the specified type as +/// the root implementation of all generated traits. /// /// For more information see the documentation of `wit_bindgen::generate!`. /// @@ -133,14 +135,17 @@ macro_rules! __export_adder_impl { #[doc(inline)] pub(crate) use __export_adder_impl as export; #[cfg(target_arch = "wasm32")] -#[link_section = "component-type:wit-bindgen:0.36.0:docs:adder@0.1.0:adder:encoded world"] +#[unsafe( + link_section = "component-type:wit-bindgen:0.41.0:docs:adder@0.1.0:adder:encoded world" +)] #[doc(hidden)] +#[allow(clippy::octal_escapes)] pub static __WIT_BINDGEN_COMPONENT_TYPE: [u8; 203] = *b"\ \0asm\x0d\0\x01\0\0\x19\x16wit-component-encoding\x04\0\x07P\x01A\x02\x01A\x02\x01\ -B\x02\x01@\x02\x01ay\x01by\0y\x04\0\x03add\x01\0\x04\0\x14docs:adder/add@0.1.0\x05\ +B\x02\x01@\x02\x01xy\x01yy\0y\x04\0\x03add\x01\0\x04\0\x14docs:adder/add@0.1.0\x05\ \0\x04\0\x16docs:adder/adder@0.1.0\x04\0\x0b\x0b\x01\0\x05adder\x03\0\0\0G\x09pr\ -oducers\x01\x0cprocessed-by\x02\x0dwit-component\x070.220.0\x10wit-bindgen-rust\x06\ -0.36.0"; +oducers\x01\x0cprocessed-by\x02\x0dwit-component\x070.227.1\x10wit-bindgen-rust\x06\ +0.41.0"; #[inline(never)] #[doc(hidden)] pub fn __link_custom_section_describing_imports() { diff --git a/component-model/examples/tutorial/adder/src/lib.rs b/component-model/examples/tutorial/adder/src/lib.rs index 3538169..ee6a2b5 100644 --- a/component-model/examples/tutorial/adder/src/lib.rs +++ b/component-model/examples/tutorial/adder/src/lib.rs @@ -1,8 +1,13 @@ #[allow(warnings)] mod bindings; -// Separating out the interface puts it in a sub-module +// The comments that follow the use declaration below correlate the rust module path with their +// `world.wit` counterparts: use bindings::exports::docs::adder::add::Guest; +// <- items bundled with `export` keyword +// <- package namespace +// <- package field +// <- interface name struct Component; diff --git a/component-model/src/language-support/rust.md b/component-model/src/language-support/rust.md index 81e4c5d..12a96ed 100644 --- a/component-model/src/language-support/rust.md +++ b/component-model/src/language-support/rust.md @@ -89,10 +89,7 @@ Now, let's build our component, being sure to optimize with a release build: cargo component build --release ``` -You can use `wasm-tools` to inspect the WIT package generated by `cargo-component`: - - -You can use `wasm-tools component wit` to output the WIT package of the component: +You can use `wasm-tools` to output the WIT package of the component: ```console wasm-tools component wit target/wasm32-wasip1/release/add.wasm @@ -118,7 +115,7 @@ package docs:adder@0.1.0 { ### Running a Component To verify that our component works, lets run it from a Rust application that knows how to run a -component targeting the [`docs:adder/adder`](#adding-the-wit-world) world. +component targeting the [`adder` world](#adding-the-wit-world). The application uses [`wasmtime`](https://github.com/bytecodealliance/wasmtime) crates to generate Rust bindings, bring in WASI worlds, and execute the component. From 688bbbdcb185668e1e0f46b7f4e2a18502448bbf Mon Sep 17 00:00:00 2001 From: Mikhail Katychev Date: Thu, 10 Apr 2025 10:47:12 -0500 Subject: [PATCH 166/175] Update component-model/src/language-support/rust.md Co-authored-by: Victor Adossi <123968127+vados-cosmonic@users.noreply.github.com> --- component-model/src/language-support/rust.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/component-model/src/language-support/rust.md b/component-model/src/language-support/rust.md index 12a96ed..2f347d3 100644 --- a/component-model/src/language-support/rust.md +++ b/component-model/src/language-support/rust.md @@ -110,7 +110,10 @@ package docs:adder@0.1.0 { } ``` -> **WARNING:** Building with `--release` removes all debug-related information from the resulting .wasm file. When prototyping or testing locally, you might want to avoid `--release` to obtain useful backtraces in case of errors (for example, with `wasmtime::WasmBacktraceDetails::Enable`). Note: the resulting .wasm file will be considerably larger (likely 4MB+). +> [!WARNING] +> Building with `--release` removes all debug-related information from the resulting .wasm file. +> +> When prototyping or testing locally, you might want to avoid `--release` to obtain useful backtraces in case of errors (for example, with `wasmtime::WasmBacktraceDetails::Enable`). Note: the resulting .wasm file will be considerably larger (likely 4MB+). ### Running a Component From e63b3d1287a2d38b4281a4575d05a2ef6a276375 Mon Sep 17 00:00:00 2001 From: Mikhail Katychev Date: Thu, 10 Apr 2025 14:32:08 -0500 Subject: [PATCH 167/175] PR feedback about console vs sh and warnings --- component-model/src/language-support/rust.md | 38 ++++++++++---------- 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/component-model/src/language-support/rust.md b/component-model/src/language-support/rust.md index 2f347d3..58757e4 100644 --- a/component-model/src/language-support/rust.md +++ b/component-model/src/language-support/rust.md @@ -11,19 +11,19 @@ the component's implementation language. ## 1. Setup Install [`cargo-component`][cargo-component-install]: -```console +```sh cargo install --locked cargo-component ``` Install [`wasm-tools`](https://github.com/bytecodealliance/wasm-tools#installation): -```console +```sh cargo install --locked wasm-tools ``` Install [`wasmtime`](https://github.com/bytecodealliance/wasmtime#installation): -```console +```sh curl https://wasmtime.dev/install.sh -sSf | bash ``` Clone the [component-docs](https://github.com/bytecodealliance/component-docs) repo: -```console +```sh git clone https://github.com/bytecodealliance/component-docs ``` @@ -35,12 +35,12 @@ by the [`adder` world][docs-adder] world in the [package](https://github.com/WebAssembly/component-model/blob/main/design/mvp/WIT.md#package-names). First `cd` into the `tutorial` directory found in the repo we just cloned: -```console +```sh cd component-docs/component-model/examples/tutorial ``` Now create a new WebAssembly component package called `add`: -```console +```sh cargo component new add --lib && cd add ``` @@ -64,7 +64,7 @@ package = "docs:adder" Now that we've updated our `world.wit` and `Cargo.toml`, we can re-generate bindings with the command below: -```console +```sh cargo component bindings ``` @@ -85,13 +85,21 @@ code should look something like the following: Now, let's build our component, being sure to optimize with a release build: -```console +```sh cargo component build --release ``` +> [!WARNING] +> Building with `--release` removes all debug-related information from the resulting .wasm file. +> +> When prototyping or testing locally, you might want to avoid `--release` to +> obtain useful backtraces in case of errors (for example, with +> `wasmtime::WasmBacktraceDetails::Enable`). Note: the resulting .wasm file +> will be considerably larger (likely 4MB+). + You can use `wasm-tools` to output the WIT package of the component: -```console +```sh wasm-tools component wit target/wasm32-wasip1/release/add.wasm ``` @@ -110,10 +118,6 @@ package docs:adder@0.1.0 { } ``` -> [!WARNING] -> Building with `--release` removes all debug-related information from the resulting .wasm file. -> -> When prototyping or testing locally, you might want to avoid `--release` to obtain useful backtraces in case of errors (for example, with `wasmtime::WasmBacktraceDetails::Enable`). Note: the resulting .wasm file will be considerably larger (likely 4MB+). ### Running a Component @@ -123,7 +127,7 @@ component targeting the [`adder` world](#adding-the-wit-world). The application uses [`wasmtime`](https://github.com/bytecodealliance/wasmtime) crates to generate Rust bindings, bring in WASI worlds, and execute the component. -```sh +```console $ cd examples/example-host $ cargo run --release -- 1 2 ../add/target/wasm32-wasip1/release/adder.wasm 1 + 2 = 3 @@ -175,9 +179,7 @@ world calculator { ### Referencing the package to import -Because the `docs:adder` package is in a different project, we must first tell -`cargo component` how to find it. To do this, add the following to the -`Cargo.toml` file: +Because the `docs:adder` package is in a different project, we must first tell `cargo component` how to find it. To do this, add the following to the `Cargo.toml` file: ```toml [package.metadata.component.target.dependencies] @@ -313,7 +315,7 @@ As mentioned above, `cargo component build` doesn't generate a WIT file for a co 6. Run the composed component: - ```sh + ```console $ wasmtime run ./my-composed-command.wasm 1 + 1 = 579 # might need to go back and do some work on the calculator implementation ``` From 917d2b0b0ebf820b23351a929ca3043b27e4a6fb Mon Sep 17 00:00:00 2001 From: Mikhail Katychev Date: Fri, 11 Apr 2025 00:24:11 -0500 Subject: [PATCH 168/175] partial git revert --- .../examples/tutorial/adder/src/lib.rs | 3 ++- component-model/src/language-support/rust.md | 20 +++++-------------- 2 files changed, 7 insertions(+), 16 deletions(-) diff --git a/component-model/examples/tutorial/adder/src/lib.rs b/component-model/examples/tutorial/adder/src/lib.rs index ee6a2b5..75a36fa 100644 --- a/component-model/examples/tutorial/adder/src/lib.rs +++ b/component-model/examples/tutorial/adder/src/lib.rs @@ -1,7 +1,8 @@ #[allow(warnings)] mod bindings; -// The comments that follow the use declaration below correlate the rust module path with their +// The comments that follow the `use` declaration below +// correlate the rust module path segments with their // `world.wit` counterparts: use bindings::exports::docs::adder::add::Guest; // <- items bundled with `export` keyword diff --git a/component-model/src/language-support/rust.md b/component-model/src/language-support/rust.md index 58757e4..d0918fd 100644 --- a/component-model/src/language-support/rust.md +++ b/component-model/src/language-support/rust.md @@ -22,24 +22,14 @@ Install [`wasmtime`](https://github.com/bytecodealliance/wasmtime#installation): ```sh curl https://wasmtime.dev/install.sh -sSf | bash ``` -Clone the [component-docs](https://github.com/bytecodealliance/component-docs) repo: -```sh -git clone https://github.com/bytecodealliance/component-docs -``` ## 2. Scaffolding a Component We will create a component in Rust that implements the `add` function exported -by the [`adder` world][docs-adder] world in the -`docs:adder` +by the [`adder` world][docs-adder] world in the `docs:adder` [package](https://github.com/WebAssembly/component-model/blob/main/design/mvp/WIT.md#package-names). -First `cd` into the `tutorial` directory found in the repo we just cloned: -```sh -cd component-docs/component-model/examples/tutorial -``` - -Now create a new WebAssembly component package called `add`: +First, we will create a new WebAssembly component package called `add`: ```sh cargo component new add --lib && cd add ``` @@ -183,7 +173,7 @@ Because the `docs:adder` package is in a different project, we must first tell ` ```toml [package.metadata.component.target.dependencies] -"docs:adder" = { path = "../wit/adder" } # directory containing the WIT package +"docs:adder" = { path = "../adder/wit" } # directory containing the WIT package ``` > [!NOTE] @@ -294,8 +284,8 @@ As mentioned above, `cargo component build` doesn't generate a WIT file for a co ```toml [package.metadata.component.target.dependencies] - "docs:calculator" = { path = "../wit/calculator" } - "docs:adder" = { path = "../wit/adder" } + "docs:calculator" = { path = "../calculator/wit" } + "docs:adder" = { path = "../adder/wit" } ``` > If the external package refers to other packages, you need to provide the paths to them as well. From ec05fac0909dd0027fd805cd2654ed4c018726ea Mon Sep 17 00:00:00 2001 From: Mikhail Katychev Date: Fri, 11 Apr 2025 00:48:10 -0500 Subject: [PATCH 169/175] remove merge artifact --- component-model/src/language-support/rust.md | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/component-model/src/language-support/rust.md b/component-model/src/language-support/rust.md index d0918fd..12d0ffa 100644 --- a/component-model/src/language-support/rust.md +++ b/component-model/src/language-support/rust.md @@ -123,20 +123,6 @@ $ cargo run --release -- 1 2 ../add/target/wasm32-wasip1/release/adder.wasm 1 + 2 = 3 ``` -## Exporting an interface - -Notice how our `root` world in the `wasm-tools` output exports `add` as part of an _interface_. -It's often preferable to export an interface rather than a function, either to -comply with an existing specification or to capture several functions and types -at once. - -For example, to implement the [`adder` world](#adding-the-wit-world), you would -write the following Rust code: - -```rust -{{#include ../../examples/tutorial/adder/src/lib.rs}} -``` - ## Importing an interface The world file (`wit/world.wit`) we generated doesn't specify any imports. If From 9102bc949bb408d58907bc6f718828202abcb294 Mon Sep 17 00:00:00 2001 From: Mikhail Katychev Date: Fri, 11 Apr 2025 20:35:23 -0500 Subject: [PATCH 170/175] update note wording --- .../examples/tutorial/adder/src/lib.rs | 2 +- component-model/src/language-support/rust.md | 19 ++++++++----------- 2 files changed, 9 insertions(+), 12 deletions(-) diff --git a/component-model/examples/tutorial/adder/src/lib.rs b/component-model/examples/tutorial/adder/src/lib.rs index 75a36fa..20f59a3 100644 --- a/component-model/examples/tutorial/adder/src/lib.rs +++ b/component-model/examples/tutorial/adder/src/lib.rs @@ -7,7 +7,7 @@ mod bindings; use bindings::exports::docs::adder::add::Guest; // <- items bundled with `export` keyword // <- package namespace -// <- package field +// <- package // <- interface name struct Component; diff --git a/component-model/src/language-support/rust.md b/component-model/src/language-support/rust.md index 12d0ffa..ceecc82 100644 --- a/component-model/src/language-support/rust.md +++ b/component-model/src/language-support/rust.md @@ -1,8 +1,7 @@ # Components in Rust -Rust has first-class support for the component model via the [`cargo-component` -tool][cargo-component]. We will be using -the `cargo component` subcommand to create WebAssembly components using Rust as +Rust has first-class support for the component model via the [`cargo-component` tool][cargo-component]. +We will be using the `cargo component` subcommand to create WebAssembly components using Rust as the component's implementation language. > [!NOTE] @@ -64,8 +63,7 @@ implement. ## 5. Implementing the `Guest` trait -Implement the `Guest` trait in `src/lib.rs`, using the scaffolded code. Your -code should look something like the following: +Implement the `Guest` trait in `src/lib.rs`, using the scaffolded code. Your code should look something like the following: ```rs {{#include ../../examples/tutorial/adder/src/lib.rs}} @@ -80,12 +78,12 @@ cargo component build --release ``` > [!WARNING] -> Building with `--release` removes all debug-related information from the resulting .wasm file. +> Building with `--release` removes all debug-related information from the resulting `.wasm` file. > > When prototyping or testing locally, you might want to avoid `--release` to > obtain useful backtraces in case of errors (for example, with -> `wasmtime::WasmBacktraceDetails::Enable`). Note: the resulting .wasm file -> will be considerably larger (likely 4MB+). +> [`wasmtime::WasmBacktraceDetails::Enable`](https://docs.rs/wasmtime/latest/wasmtime/enum.WasmBacktraceDetails.html#variant.Enable)). +> Note: the resulting `.wasm` file will be considerably larger (likely 4MB+). You can use `wasm-tools` to output the WIT package of the component: @@ -125,9 +123,8 @@ $ cargo run --release -- 1 2 ../add/target/wasm32-wasip1/release/adder.wasm ## Importing an interface -The world file (`wit/world.wit`) we generated doesn't specify any imports. If -your component consumes other components, you can edit the `world.wit` file to -import their interfaces. +The world file (`wit/world.wit`) we generated doesn't specify any imports. +If your component consumes other components, you can edit the `world.wit` file to import their interfaces. > [!NOTE] > This section is about importing custom WIT interfaces from library components. From f13ed9d32aa6667527379cb52c2b0201ca88135c Mon Sep 17 00:00:00 2001 From: Kate Goldenring Date: Thu, 24 Apr 2025 20:00:51 -0700 Subject: [PATCH 171/175] Add codeowners file Signed-off-by: Kate Goldenring --- .github/CODEOWNERS | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 .github/CODEOWNERS diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS new file mode 100644 index 0000000..6c09b99 --- /dev/null +++ b/.github/CODEOWNERS @@ -0,0 +1,6 @@ +# This file is described here: https://help.github.com/en/articles/about-code-owners + +# Global Owners: These members are Maintainers of the docs +* @itowlson +* @kate-goldenring +* @vados-cosmonic \ No newline at end of file From 7ea483eb98ac30550d4f03087f374abc7c5b0d38 Mon Sep 17 00:00:00 2001 From: Kate Goldenring Date: Thu, 24 Apr 2025 20:52:16 -0700 Subject: [PATCH 172/175] Update rust guide and tutorial examples to use registries for WITs Signed-off-by: Kate Goldenring --- .../tutorial/adder/Cargo-component.lock | 12 ++ .../examples/tutorial/adder/Cargo.toml | 18 ++- .../examples/tutorial/adder/src/bindings.rs | 16 +-- .../examples/tutorial/calculator/Cargo.toml | 21 ++- .../tutorial/calculator/src/bindings.rs | 125 ++++++++---------- component-model/src/language-support/rust.md | 25 ++-- 6 files changed, 117 insertions(+), 100 deletions(-) create mode 100644 component-model/examples/tutorial/adder/Cargo-component.lock diff --git a/component-model/examples/tutorial/adder/Cargo-component.lock b/component-model/examples/tutorial/adder/Cargo-component.lock new file mode 100644 index 0000000..ce555ee --- /dev/null +++ b/component-model/examples/tutorial/adder/Cargo-component.lock @@ -0,0 +1,12 @@ +# This file is automatically generated by cargo-component. +# It is not intended for manual editing. +version = 1 + +[[package]] +name = "docs:adder" +registry = "ghcr.io/bytecodealliance" + +[[package.version]] +requirement = "^0.1.0" +version = "0.1.0" +digest = "sha256:d4cb950366f8756821c401ec496ad43b35ffb0df3b2e757eb6aa3c1fa30d38c2" diff --git a/component-model/examples/tutorial/adder/Cargo.toml b/component-model/examples/tutorial/adder/Cargo.toml index 7578216..b4e028e 100644 --- a/component-model/examples/tutorial/adder/Cargo.toml +++ b/component-model/examples/tutorial/adder/Cargo.toml @@ -9,11 +9,17 @@ wit-bindgen-rt = { version = "0.37.0", features = ["bitflags"] } [lib] crate-type = ["cdylib"] -[package.metadata.component] +# Tell cargo-component where to find the package for the target world +# The following tells cargo-component to fetch the WIT from ghcr.io/bytecodealliance/docs/adder:0.1.0 +[package.metadata.component.target] +# The registry which contains the package +registry = "ghcr.io/bytecodealliance" +# The package name package = "docs:adder" +# The package version +version = "0.1.0" -[package.metadata.component.dependencies] - -[package.metadata.component.target] -path = "../wit/adder" -world = "adder" +# # To instead use a WIT on the local filesystem, uncomment the following lines +# [package.metadata.component.target] +# # Path to the directory containing the WIT +# path = "../wit/adder" \ No newline at end of file diff --git a/component-model/examples/tutorial/adder/src/bindings.rs b/component-model/examples/tutorial/adder/src/bindings.rs index 52775cd..28bd96b 100644 --- a/component-model/examples/tutorial/adder/src/bindings.rs +++ b/component-model/examples/tutorial/adder/src/bindings.rs @@ -122,7 +122,7 @@ mod _rt { /// ``` #[allow(unused_macros)] #[doc(hidden)] -macro_rules! __export_adder_impl { +macro_rules! __export_root_impl { ($ty:ident) => { self::export!($ty with_types_in self); }; @@ -133,19 +133,19 @@ macro_rules! __export_adder_impl { }; } #[doc(inline)] -pub(crate) use __export_adder_impl as export; +pub(crate) use __export_root_impl as export; #[cfg(target_arch = "wasm32")] #[unsafe( - link_section = "component-type:wit-bindgen:0.41.0:docs:adder@0.1.0:adder:encoded world" + link_section = "component-type:wit-bindgen:0.41.0:root:component:root:encoded world" )] #[doc(hidden)] #[allow(clippy::octal_escapes)] -pub static __WIT_BINDGEN_COMPONENT_TYPE: [u8; 203] = *b"\ -\0asm\x0d\0\x01\0\0\x19\x16wit-component-encoding\x04\0\x07P\x01A\x02\x01A\x02\x01\ +pub static __WIT_BINDGEN_COMPONENT_TYPE: [u8; 199] = *b"\ +\0asm\x0d\0\x01\0\0\x19\x16wit-component-encoding\x04\0\x07M\x01A\x02\x01A\x02\x01\ B\x02\x01@\x02\x01xy\x01yy\0y\x04\0\x03add\x01\0\x04\0\x14docs:adder/add@0.1.0\x05\ -\0\x04\0\x16docs:adder/adder@0.1.0\x04\0\x0b\x0b\x01\0\x05adder\x03\0\0\0G\x09pr\ -oducers\x01\x0cprocessed-by\x02\x0dwit-component\x070.227.1\x10wit-bindgen-rust\x06\ -0.41.0"; +\0\x04\0\x13root:component/root\x04\0\x0b\x0a\x01\0\x04root\x03\0\0\0G\x09produc\ +ers\x01\x0cprocessed-by\x02\x0dwit-component\x070.227.1\x10wit-bindgen-rust\x060\ +.41.0"; #[inline(never)] #[doc(hidden)] pub fn __link_custom_section_describing_imports() { diff --git a/component-model/examples/tutorial/calculator/Cargo.toml b/component-model/examples/tutorial/calculator/Cargo.toml index 6f6f717..5235794 100644 --- a/component-model/examples/tutorial/calculator/Cargo.toml +++ b/component-model/examples/tutorial/calculator/Cargo.toml @@ -9,14 +9,21 @@ wit-bindgen-rt = { version = "0.24.0", features = ["bitflags"] } [lib] crate-type = ["cdylib"] -[package.metadata.component] -package = "docs:calculator" - -[package.metadata.component.target.dependencies] -"docs:adder" = { path = "../wit/adder" } # directory containing the WIT package - +# Tell cargo-component where to find the package for the target world +# The following tells cargo-component to fetch the WIT from a local directory [package.metadata.component.target] +# Path to the directory containing the WIT path = "../wit/calculator" +# World within the package to target world = "calculator" -[package.metadata.component.dependencies] +[package.metadata.component.target.dependencies] +# Tell cargo-component where to find the package for the dependencies +"docs:adder" = { path = "../wit/adder" } + +## To instead fetch the package and it's dependencies from a registry, uncomment the following lines +# [package.metadata.component.target] +# package = "docs:calculator" +# version = "0.1.0" +# registry = "ghcr.io/bytecodealliance" +# world = "calculator" \ No newline at end of file diff --git a/component-model/examples/tutorial/calculator/src/bindings.rs b/component-model/examples/tutorial/calculator/src/bindings.rs index 8511915..ec0a2ec 100644 --- a/component-model/examples/tutorial/calculator/src/bindings.rs +++ b/component-model/examples/tutorial/calculator/src/bindings.rs @@ -1,80 +1,74 @@ -// Generated by `wit-bindgen` 0.25.0. DO NOT EDIT! +// Generated by `wit-bindgen` 0.41.0. DO NOT EDIT! // Options used: -#[allow(dead_code)] +// * runtime_path: "wit_bindgen_rt" +#[rustfmt::skip] +#[allow(dead_code, clippy::all)] pub mod docs { - #[allow(dead_code)] pub mod adder { - #[allow(dead_code, clippy::all)] + #[allow(dead_code, async_fn_in_trait, unused_imports, clippy::all)] pub mod add { #[used] #[doc(hidden)] - #[cfg(target_arch = "wasm32")] - static __FORCE_SECTION_REF: fn() = - super::super::super::__link_custom_section_describing_imports; + static __FORCE_SECTION_REF: fn() = super::super::super::__link_custom_section_describing_imports; use super::super::super::_rt; #[allow(unused_unsafe, clippy::all)] pub fn add(x: u32, y: u32) -> u32 { unsafe { #[cfg(target_arch = "wasm32")] #[link(wasm_import_module = "docs:adder/add@0.1.0")] - extern "C" { + unsafe extern "C" { #[link_name = "add"] - fn wit_import(_: i32, _: i32) -> i32; + fn wit_import0(_: i32, _: i32) -> i32; } - #[cfg(not(target_arch = "wasm32"))] - fn wit_import(_: i32, _: i32) -> i32 { + unsafe extern "C" fn wit_import0(_: i32, _: i32) -> i32 { unreachable!() } - let ret = wit_import(_rt::as_i32(&a), _rt::as_i32(&b)); + let ret = unsafe { wit_import0(_rt::as_i32(&x), _rt::as_i32(&y)) }; ret as u32 } } } } } -#[allow(dead_code)] +#[rustfmt::skip] +#[allow(dead_code, clippy::all)] pub mod exports { - #[allow(dead_code)] pub mod docs { - #[allow(dead_code)] pub mod calculator { - #[allow(dead_code, clippy::all)] + #[allow(dead_code, async_fn_in_trait, unused_imports, clippy::all)] pub mod calculate { #[used] #[doc(hidden)] - #[cfg(target_arch = "wasm32")] - static __FORCE_SECTION_REF: fn() = - super::super::super::super::__link_custom_section_describing_imports; + static __FORCE_SECTION_REF: fn() = super::super::super::super::__link_custom_section_describing_imports; use super::super::super::super::_rt; #[repr(u8)] - #[derive(Clone, Copy, Eq, PartialEq)] + #[derive(Clone, Copy, Eq, Ord, PartialEq, PartialOrd)] pub enum Op { Add, } impl ::core::fmt::Debug for Op { - fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + fn fmt( + &self, + f: &mut ::core::fmt::Formatter<'_>, + ) -> ::core::fmt::Result { match self { Op::Add => f.debug_tuple("Op::Add").finish(), } } } - impl Op { #[doc(hidden)] pub unsafe fn _lift(val: u8) -> Op { if !cfg!(debug_assertions) { return ::core::mem::transmute(val); } - match val { 0 => Op::Add, - _ => panic!("invalid enum discriminant"), } } } - #[doc(hidden)] #[allow(non_snake_case)] pub unsafe fn _export_eval_expression_cabi( @@ -82,112 +76,102 @@ pub mod exports { arg1: i32, arg2: i32, ) -> i32 { - #[cfg(target_arch = "wasm32")] - _rt::run_ctors_once(); - let result0 = - T::eval_expression(Op::_lift(arg0 as u8), arg1 as u32, arg2 as u32); + #[cfg(target_arch = "wasm32")] _rt::run_ctors_once(); + let result0 = T::eval_expression( + Op::_lift(arg0 as u8), + arg1 as u32, + arg2 as u32, + ); _rt::as_i32(result0) } pub trait Guest { fn eval_expression(op: Op, x: u32, y: u32) -> u32; } #[doc(hidden)] - - macro_rules! __export_docs_calculator_calculate_0_1_0_cabi{ - ($ty:ident with_types_in $($path_to_types:tt)*) => (const _: () = { - - #[export_name = "docs:calculator/calculate@0.1.0#eval-expression"] - unsafe extern "C" fn export_eval_expression(arg0: i32,arg1: i32,arg2: i32,) -> i32 { - $($path_to_types)*::_export_eval_expression_cabi::<$ty>(arg0, arg1, arg2) - } - };); - } + macro_rules! __export_docs_calculator_calculate_0_1_0_cabi { + ($ty:ident with_types_in $($path_to_types:tt)*) => { + const _ : () = { #[unsafe (export_name = + "docs:calculator/calculate@0.1.0#eval-expression")] unsafe extern + "C" fn export_eval_expression(arg0 : i32, arg1 : i32, arg2 : + i32,) -> i32 { unsafe { $($path_to_types)*:: + _export_eval_expression_cabi::<$ty > (arg0, arg1, arg2) } } }; + }; + } #[doc(hidden)] pub(crate) use __export_docs_calculator_calculate_0_1_0_cabi; } } } } +#[rustfmt::skip] mod _rt { - + #![allow(dead_code, clippy::all)] pub fn as_i32(t: T) -> i32 { t.as_i32() } - pub trait AsI32 { fn as_i32(self) -> i32; } - impl<'a, T: Copy + AsI32> AsI32 for &'a T { fn as_i32(self) -> i32 { (*self).as_i32() } } - impl AsI32 for i32 { #[inline] fn as_i32(self) -> i32 { self as i32 } } - impl AsI32 for u32 { #[inline] fn as_i32(self) -> i32 { self as i32 } } - impl AsI32 for i16 { #[inline] fn as_i32(self) -> i32 { self as i32 } } - impl AsI32 for u16 { #[inline] fn as_i32(self) -> i32 { self as i32 } } - impl AsI32 for i8 { #[inline] fn as_i32(self) -> i32 { self as i32 } } - impl AsI32 for u8 { #[inline] fn as_i32(self) -> i32 { self as i32 } } - impl AsI32 for char { #[inline] fn as_i32(self) -> i32 { self as i32 } } - impl AsI32 for usize { #[inline] fn as_i32(self) -> i32 { self as i32 } } - #[cfg(target_arch = "wasm32")] pub fn run_ctors_once() { wit_bindgen_rt::run_ctors_once(); } } - -/// Generates `#[no_mangle]` functions to export the specified type as the -/// root implementation of all generated traits. +/// Generates `#[unsafe(no_mangle)]` functions to export the specified type as +/// the root implementation of all generated traits. /// /// For more information see the documentation of `wit_bindgen::generate!`. /// @@ -204,31 +188,34 @@ mod _rt { /// ``` #[allow(unused_macros)] #[doc(hidden)] - macro_rules! __export_calculator_impl { - ($ty:ident) => (self::export!($ty with_types_in self);); - ($ty:ident with_types_in $($path_to_types_root:tt)*) => ( - $($path_to_types_root)*::exports::docs::calculator::calculate::__export_docs_calculator_calculate_0_1_0_cabi!($ty with_types_in $($path_to_types_root)*::exports::docs::calculator::calculate); - ) + ($ty:ident) => { + self::export!($ty with_types_in self); + }; + ($ty:ident with_types_in $($path_to_types_root:tt)*) => { + $($path_to_types_root)*:: + exports::docs::calculator::calculate::__export_docs_calculator_calculate_0_1_0_cabi!($ty + with_types_in $($path_to_types_root)*:: exports::docs::calculator::calculate); + }; } #[doc(inline)] pub(crate) use __export_calculator_impl as export; - #[cfg(target_arch = "wasm32")] -#[link_section = "component-type:wit-bindgen:0.25.0:calculator:encoded world"] +#[unsafe( + link_section = "component-type:wit-bindgen:0.41.0:docs:calculator@0.1.0:calculator:encoded world" +)] #[doc(hidden)] +#[allow(clippy::octal_escapes)] pub static __WIT_BINDGEN_COMPONENT_TYPE: [u8; 308] = *b"\ \0asm\x0d\0\x01\0\0\x19\x16wit-component-encoding\x04\0\x07\xb3\x01\x01A\x02\x01\ -A\x04\x01B\x02\x01@\x02\x01ay\x01by\0y\x04\0\x03add\x01\0\x03\x01\x14docs:adder/\ -add@0.1.0\x05\0\x01B\x04\x01m\x01\x03add\x04\0\x02op\x03\0\0\x01@\x03\x02op\x01\x01\ -xy\x01yy\0y\x04\0\x0feval-expression\x01\x02\x04\x01\x1fdocs:calculator/calculat\ -e@0.1.0\x05\x01\x04\x01\x20docs:calculator/calculator@0.1.0\x04\0\x0b\x10\x01\0\x0a\ -calculator\x03\0\0\0G\x09producers\x01\x0cprocessed-by\x02\x0dwit-component\x070\ -.208.1\x10wit-bindgen-rust\x060.25.0"; - +A\x04\x01B\x02\x01@\x02\x01xy\x01yy\0y\x04\0\x03add\x01\0\x03\0\x14docs:adder/ad\ +d@0.1.0\x05\0\x01B\x04\x01m\x01\x03add\x04\0\x02op\x03\0\0\x01@\x03\x02op\x01\x01\ +xy\x01yy\0y\x04\0\x0feval-expression\x01\x02\x04\0\x1fdocs:calculator/calculate@\ +0.1.0\x05\x01\x04\0\x20docs:calculator/calculator@0.1.0\x04\0\x0b\x10\x01\0\x0ac\ +alculator\x03\0\0\0G\x09producers\x01\x0cprocessed-by\x02\x0dwit-component\x070.\ +227.1\x10wit-bindgen-rust\x060.41.0"; #[inline(never)] #[doc(hidden)] -#[cfg(target_arch = "wasm32")] pub fn __link_custom_section_describing_imports() { wit_bindgen_rt::maybe_link_cabi_realloc(); } diff --git a/component-model/src/language-support/rust.md b/component-model/src/language-support/rust.md index ceecc82..af7d240 100644 --- a/component-model/src/language-support/rust.md +++ b/component-model/src/language-support/rust.md @@ -35,19 +35,25 @@ cargo component new add --lib && cd add ## 3. Adding the WIT world -We now need to change our generated `wit/world.wit` to match `docs:adder`: -```wit -{{#include ../../examples/tutorial/wit/adder/world.wit}} -``` - -The `package.metadata.component` section of our `Cargo.toml` should be changed -to the following: +Now, that we have a template generated for our app, we can use `cargo-component`'s registries support to fetch the `docs:adder` package and generate bindings for our component. Modify the `package` section of our `Cargo.toml` to only contain the following target definition: ```toml -[package.metadata.component] +[package.metadata.component.target] package = "docs:adder" +version = "0.1.0" +registry = "ghcr.io/bytecodealliance" ``` +This tells `cargo-component` to fetch the world from `ghcr.io/bytecodealliance/docs/adder:0.1.0`. + +> [!NOTE] +> Instead of using registries, you can also point to a package in your local file system. For example, if your package is at `/path/to/wit/directory/adder.wit`, you could specify this in your `Cargo.toml` as follows: +> ```toml +> [package.metadata.component.target] +> # Path to the directory containing the WIT +> path = "/path/to/wit/directory" +> ``` + ## 4. Generating bindings Now that we've updated our `world.wit` and `Cargo.toml`, we can re-generate @@ -106,11 +112,10 @@ package docs:adder@0.1.0 { } ``` - ### Running a Component To verify that our component works, lets run it from a Rust application that knows how to run a -component targeting the [`adder` world](#adding-the-wit-world). +component targeting the [`adder` world](#3-adding-the-wit-world). The application uses [`wasmtime`](https://github.com/bytecodealliance/wasmtime) crates to generate Rust bindings, bring in WASI worlds, and execute the component. From bdfbd3d018a43dfbadc5591900b8d067b3eff816 Mon Sep 17 00:00:00 2001 From: Kate Goldenring Date: Wed, 7 May 2025 10:37:10 -0700 Subject: [PATCH 173/175] Revert "Update rust guide and tutorial examples to use registries for WITs" --- .../tutorial/adder/Cargo-component.lock | 12 -- .../examples/tutorial/adder/Cargo.toml | 18 +-- .../examples/tutorial/adder/src/bindings.rs | 16 +-- .../examples/tutorial/calculator/Cargo.toml | 21 +-- .../tutorial/calculator/src/bindings.rs | 125 ++++++++++-------- component-model/src/language-support/rust.md | 25 ++-- 6 files changed, 100 insertions(+), 117 deletions(-) delete mode 100644 component-model/examples/tutorial/adder/Cargo-component.lock diff --git a/component-model/examples/tutorial/adder/Cargo-component.lock b/component-model/examples/tutorial/adder/Cargo-component.lock deleted file mode 100644 index ce555ee..0000000 --- a/component-model/examples/tutorial/adder/Cargo-component.lock +++ /dev/null @@ -1,12 +0,0 @@ -# This file is automatically generated by cargo-component. -# It is not intended for manual editing. -version = 1 - -[[package]] -name = "docs:adder" -registry = "ghcr.io/bytecodealliance" - -[[package.version]] -requirement = "^0.1.0" -version = "0.1.0" -digest = "sha256:d4cb950366f8756821c401ec496ad43b35ffb0df3b2e757eb6aa3c1fa30d38c2" diff --git a/component-model/examples/tutorial/adder/Cargo.toml b/component-model/examples/tutorial/adder/Cargo.toml index b4e028e..7578216 100644 --- a/component-model/examples/tutorial/adder/Cargo.toml +++ b/component-model/examples/tutorial/adder/Cargo.toml @@ -9,17 +9,11 @@ wit-bindgen-rt = { version = "0.37.0", features = ["bitflags"] } [lib] crate-type = ["cdylib"] -# Tell cargo-component where to find the package for the target world -# The following tells cargo-component to fetch the WIT from ghcr.io/bytecodealliance/docs/adder:0.1.0 -[package.metadata.component.target] -# The registry which contains the package -registry = "ghcr.io/bytecodealliance" -# The package name +[package.metadata.component] package = "docs:adder" -# The package version -version = "0.1.0" -# # To instead use a WIT on the local filesystem, uncomment the following lines -# [package.metadata.component.target] -# # Path to the directory containing the WIT -# path = "../wit/adder" \ No newline at end of file +[package.metadata.component.dependencies] + +[package.metadata.component.target] +path = "../wit/adder" +world = "adder" diff --git a/component-model/examples/tutorial/adder/src/bindings.rs b/component-model/examples/tutorial/adder/src/bindings.rs index 28bd96b..52775cd 100644 --- a/component-model/examples/tutorial/adder/src/bindings.rs +++ b/component-model/examples/tutorial/adder/src/bindings.rs @@ -122,7 +122,7 @@ mod _rt { /// ``` #[allow(unused_macros)] #[doc(hidden)] -macro_rules! __export_root_impl { +macro_rules! __export_adder_impl { ($ty:ident) => { self::export!($ty with_types_in self); }; @@ -133,19 +133,19 @@ macro_rules! __export_root_impl { }; } #[doc(inline)] -pub(crate) use __export_root_impl as export; +pub(crate) use __export_adder_impl as export; #[cfg(target_arch = "wasm32")] #[unsafe( - link_section = "component-type:wit-bindgen:0.41.0:root:component:root:encoded world" + link_section = "component-type:wit-bindgen:0.41.0:docs:adder@0.1.0:adder:encoded world" )] #[doc(hidden)] #[allow(clippy::octal_escapes)] -pub static __WIT_BINDGEN_COMPONENT_TYPE: [u8; 199] = *b"\ -\0asm\x0d\0\x01\0\0\x19\x16wit-component-encoding\x04\0\x07M\x01A\x02\x01A\x02\x01\ +pub static __WIT_BINDGEN_COMPONENT_TYPE: [u8; 203] = *b"\ +\0asm\x0d\0\x01\0\0\x19\x16wit-component-encoding\x04\0\x07P\x01A\x02\x01A\x02\x01\ B\x02\x01@\x02\x01xy\x01yy\0y\x04\0\x03add\x01\0\x04\0\x14docs:adder/add@0.1.0\x05\ -\0\x04\0\x13root:component/root\x04\0\x0b\x0a\x01\0\x04root\x03\0\0\0G\x09produc\ -ers\x01\x0cprocessed-by\x02\x0dwit-component\x070.227.1\x10wit-bindgen-rust\x060\ -.41.0"; +\0\x04\0\x16docs:adder/adder@0.1.0\x04\0\x0b\x0b\x01\0\x05adder\x03\0\0\0G\x09pr\ +oducers\x01\x0cprocessed-by\x02\x0dwit-component\x070.227.1\x10wit-bindgen-rust\x06\ +0.41.0"; #[inline(never)] #[doc(hidden)] pub fn __link_custom_section_describing_imports() { diff --git a/component-model/examples/tutorial/calculator/Cargo.toml b/component-model/examples/tutorial/calculator/Cargo.toml index 5235794..6f6f717 100644 --- a/component-model/examples/tutorial/calculator/Cargo.toml +++ b/component-model/examples/tutorial/calculator/Cargo.toml @@ -9,21 +9,14 @@ wit-bindgen-rt = { version = "0.24.0", features = ["bitflags"] } [lib] crate-type = ["cdylib"] -# Tell cargo-component where to find the package for the target world -# The following tells cargo-component to fetch the WIT from a local directory +[package.metadata.component] +package = "docs:calculator" + +[package.metadata.component.target.dependencies] +"docs:adder" = { path = "../wit/adder" } # directory containing the WIT package + [package.metadata.component.target] -# Path to the directory containing the WIT path = "../wit/calculator" -# World within the package to target world = "calculator" -[package.metadata.component.target.dependencies] -# Tell cargo-component where to find the package for the dependencies -"docs:adder" = { path = "../wit/adder" } - -## To instead fetch the package and it's dependencies from a registry, uncomment the following lines -# [package.metadata.component.target] -# package = "docs:calculator" -# version = "0.1.0" -# registry = "ghcr.io/bytecodealliance" -# world = "calculator" \ No newline at end of file +[package.metadata.component.dependencies] diff --git a/component-model/examples/tutorial/calculator/src/bindings.rs b/component-model/examples/tutorial/calculator/src/bindings.rs index ec0a2ec..8511915 100644 --- a/component-model/examples/tutorial/calculator/src/bindings.rs +++ b/component-model/examples/tutorial/calculator/src/bindings.rs @@ -1,74 +1,80 @@ -// Generated by `wit-bindgen` 0.41.0. DO NOT EDIT! +// Generated by `wit-bindgen` 0.25.0. DO NOT EDIT! // Options used: -// * runtime_path: "wit_bindgen_rt" -#[rustfmt::skip] -#[allow(dead_code, clippy::all)] +#[allow(dead_code)] pub mod docs { + #[allow(dead_code)] pub mod adder { - #[allow(dead_code, async_fn_in_trait, unused_imports, clippy::all)] + #[allow(dead_code, clippy::all)] pub mod add { #[used] #[doc(hidden)] - static __FORCE_SECTION_REF: fn() = super::super::super::__link_custom_section_describing_imports; + #[cfg(target_arch = "wasm32")] + static __FORCE_SECTION_REF: fn() = + super::super::super::__link_custom_section_describing_imports; use super::super::super::_rt; #[allow(unused_unsafe, clippy::all)] pub fn add(x: u32, y: u32) -> u32 { unsafe { #[cfg(target_arch = "wasm32")] #[link(wasm_import_module = "docs:adder/add@0.1.0")] - unsafe extern "C" { + extern "C" { #[link_name = "add"] - fn wit_import0(_: i32, _: i32) -> i32; + fn wit_import(_: i32, _: i32) -> i32; } + #[cfg(not(target_arch = "wasm32"))] - unsafe extern "C" fn wit_import0(_: i32, _: i32) -> i32 { + fn wit_import(_: i32, _: i32) -> i32 { unreachable!() } - let ret = unsafe { wit_import0(_rt::as_i32(&x), _rt::as_i32(&y)) }; + let ret = wit_import(_rt::as_i32(&a), _rt::as_i32(&b)); ret as u32 } } } } } -#[rustfmt::skip] -#[allow(dead_code, clippy::all)] +#[allow(dead_code)] pub mod exports { + #[allow(dead_code)] pub mod docs { + #[allow(dead_code)] pub mod calculator { - #[allow(dead_code, async_fn_in_trait, unused_imports, clippy::all)] + #[allow(dead_code, clippy::all)] pub mod calculate { #[used] #[doc(hidden)] - static __FORCE_SECTION_REF: fn() = super::super::super::super::__link_custom_section_describing_imports; + #[cfg(target_arch = "wasm32")] + static __FORCE_SECTION_REF: fn() = + super::super::super::super::__link_custom_section_describing_imports; use super::super::super::super::_rt; #[repr(u8)] - #[derive(Clone, Copy, Eq, Ord, PartialEq, PartialOrd)] + #[derive(Clone, Copy, Eq, PartialEq)] pub enum Op { Add, } impl ::core::fmt::Debug for Op { - fn fmt( - &self, - f: &mut ::core::fmt::Formatter<'_>, - ) -> ::core::fmt::Result { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { match self { Op::Add => f.debug_tuple("Op::Add").finish(), } } } + impl Op { #[doc(hidden)] pub unsafe fn _lift(val: u8) -> Op { if !cfg!(debug_assertions) { return ::core::mem::transmute(val); } + match val { 0 => Op::Add, + _ => panic!("invalid enum discriminant"), } } } + #[doc(hidden)] #[allow(non_snake_case)] pub unsafe fn _export_eval_expression_cabi( @@ -76,102 +82,112 @@ pub mod exports { arg1: i32, arg2: i32, ) -> i32 { - #[cfg(target_arch = "wasm32")] _rt::run_ctors_once(); - let result0 = T::eval_expression( - Op::_lift(arg0 as u8), - arg1 as u32, - arg2 as u32, - ); + #[cfg(target_arch = "wasm32")] + _rt::run_ctors_once(); + let result0 = + T::eval_expression(Op::_lift(arg0 as u8), arg1 as u32, arg2 as u32); _rt::as_i32(result0) } pub trait Guest { fn eval_expression(op: Op, x: u32, y: u32) -> u32; } #[doc(hidden)] - macro_rules! __export_docs_calculator_calculate_0_1_0_cabi { - ($ty:ident with_types_in $($path_to_types:tt)*) => { - const _ : () = { #[unsafe (export_name = - "docs:calculator/calculate@0.1.0#eval-expression")] unsafe extern - "C" fn export_eval_expression(arg0 : i32, arg1 : i32, arg2 : - i32,) -> i32 { unsafe { $($path_to_types)*:: - _export_eval_expression_cabi::<$ty > (arg0, arg1, arg2) } } }; - }; - } + + macro_rules! __export_docs_calculator_calculate_0_1_0_cabi{ + ($ty:ident with_types_in $($path_to_types:tt)*) => (const _: () = { + + #[export_name = "docs:calculator/calculate@0.1.0#eval-expression"] + unsafe extern "C" fn export_eval_expression(arg0: i32,arg1: i32,arg2: i32,) -> i32 { + $($path_to_types)*::_export_eval_expression_cabi::<$ty>(arg0, arg1, arg2) + } + };); + } #[doc(hidden)] pub(crate) use __export_docs_calculator_calculate_0_1_0_cabi; } } } } -#[rustfmt::skip] mod _rt { - #![allow(dead_code, clippy::all)] + pub fn as_i32(t: T) -> i32 { t.as_i32() } + pub trait AsI32 { fn as_i32(self) -> i32; } + impl<'a, T: Copy + AsI32> AsI32 for &'a T { fn as_i32(self) -> i32 { (*self).as_i32() } } + impl AsI32 for i32 { #[inline] fn as_i32(self) -> i32 { self as i32 } } + impl AsI32 for u32 { #[inline] fn as_i32(self) -> i32 { self as i32 } } + impl AsI32 for i16 { #[inline] fn as_i32(self) -> i32 { self as i32 } } + impl AsI32 for u16 { #[inline] fn as_i32(self) -> i32 { self as i32 } } + impl AsI32 for i8 { #[inline] fn as_i32(self) -> i32 { self as i32 } } + impl AsI32 for u8 { #[inline] fn as_i32(self) -> i32 { self as i32 } } + impl AsI32 for char { #[inline] fn as_i32(self) -> i32 { self as i32 } } + impl AsI32 for usize { #[inline] fn as_i32(self) -> i32 { self as i32 } } + #[cfg(target_arch = "wasm32")] pub fn run_ctors_once() { wit_bindgen_rt::run_ctors_once(); } } -/// Generates `#[unsafe(no_mangle)]` functions to export the specified type as -/// the root implementation of all generated traits. + +/// Generates `#[no_mangle]` functions to export the specified type as the +/// root implementation of all generated traits. /// /// For more information see the documentation of `wit_bindgen::generate!`. /// @@ -188,34 +204,31 @@ mod _rt { /// ``` #[allow(unused_macros)] #[doc(hidden)] + macro_rules! __export_calculator_impl { - ($ty:ident) => { - self::export!($ty with_types_in self); - }; - ($ty:ident with_types_in $($path_to_types_root:tt)*) => { - $($path_to_types_root)*:: - exports::docs::calculator::calculate::__export_docs_calculator_calculate_0_1_0_cabi!($ty - with_types_in $($path_to_types_root)*:: exports::docs::calculator::calculate); - }; + ($ty:ident) => (self::export!($ty with_types_in self);); + ($ty:ident with_types_in $($path_to_types_root:tt)*) => ( + $($path_to_types_root)*::exports::docs::calculator::calculate::__export_docs_calculator_calculate_0_1_0_cabi!($ty with_types_in $($path_to_types_root)*::exports::docs::calculator::calculate); + ) } #[doc(inline)] pub(crate) use __export_calculator_impl as export; + #[cfg(target_arch = "wasm32")] -#[unsafe( - link_section = "component-type:wit-bindgen:0.41.0:docs:calculator@0.1.0:calculator:encoded world" -)] +#[link_section = "component-type:wit-bindgen:0.25.0:calculator:encoded world"] #[doc(hidden)] -#[allow(clippy::octal_escapes)] pub static __WIT_BINDGEN_COMPONENT_TYPE: [u8; 308] = *b"\ \0asm\x0d\0\x01\0\0\x19\x16wit-component-encoding\x04\0\x07\xb3\x01\x01A\x02\x01\ -A\x04\x01B\x02\x01@\x02\x01xy\x01yy\0y\x04\0\x03add\x01\0\x03\0\x14docs:adder/ad\ -d@0.1.0\x05\0\x01B\x04\x01m\x01\x03add\x04\0\x02op\x03\0\0\x01@\x03\x02op\x01\x01\ -xy\x01yy\0y\x04\0\x0feval-expression\x01\x02\x04\0\x1fdocs:calculator/calculate@\ -0.1.0\x05\x01\x04\0\x20docs:calculator/calculator@0.1.0\x04\0\x0b\x10\x01\0\x0ac\ -alculator\x03\0\0\0G\x09producers\x01\x0cprocessed-by\x02\x0dwit-component\x070.\ -227.1\x10wit-bindgen-rust\x060.41.0"; +A\x04\x01B\x02\x01@\x02\x01ay\x01by\0y\x04\0\x03add\x01\0\x03\x01\x14docs:adder/\ +add@0.1.0\x05\0\x01B\x04\x01m\x01\x03add\x04\0\x02op\x03\0\0\x01@\x03\x02op\x01\x01\ +xy\x01yy\0y\x04\0\x0feval-expression\x01\x02\x04\x01\x1fdocs:calculator/calculat\ +e@0.1.0\x05\x01\x04\x01\x20docs:calculator/calculator@0.1.0\x04\0\x0b\x10\x01\0\x0a\ +calculator\x03\0\0\0G\x09producers\x01\x0cprocessed-by\x02\x0dwit-component\x070\ +.208.1\x10wit-bindgen-rust\x060.25.0"; + #[inline(never)] #[doc(hidden)] +#[cfg(target_arch = "wasm32")] pub fn __link_custom_section_describing_imports() { wit_bindgen_rt::maybe_link_cabi_realloc(); } diff --git a/component-model/src/language-support/rust.md b/component-model/src/language-support/rust.md index af7d240..ceecc82 100644 --- a/component-model/src/language-support/rust.md +++ b/component-model/src/language-support/rust.md @@ -35,25 +35,19 @@ cargo component new add --lib && cd add ## 3. Adding the WIT world -Now, that we have a template generated for our app, we can use `cargo-component`'s registries support to fetch the `docs:adder` package and generate bindings for our component. Modify the `package` section of our `Cargo.toml` to only contain the following target definition: +We now need to change our generated `wit/world.wit` to match `docs:adder`: +```wit +{{#include ../../examples/tutorial/wit/adder/world.wit}} +``` + +The `package.metadata.component` section of our `Cargo.toml` should be changed +to the following: ```toml -[package.metadata.component.target] +[package.metadata.component] package = "docs:adder" -version = "0.1.0" -registry = "ghcr.io/bytecodealliance" ``` -This tells `cargo-component` to fetch the world from `ghcr.io/bytecodealliance/docs/adder:0.1.0`. - -> [!NOTE] -> Instead of using registries, you can also point to a package in your local file system. For example, if your package is at `/path/to/wit/directory/adder.wit`, you could specify this in your `Cargo.toml` as follows: -> ```toml -> [package.metadata.component.target] -> # Path to the directory containing the WIT -> path = "/path/to/wit/directory" -> ``` - ## 4. Generating bindings Now that we've updated our `world.wit` and `Cargo.toml`, we can re-generate @@ -112,10 +106,11 @@ package docs:adder@0.1.0 { } ``` + ### Running a Component To verify that our component works, lets run it from a Rust application that knows how to run a -component targeting the [`adder` world](#3-adding-the-wit-world). +component targeting the [`adder` world](#adding-the-wit-world). The application uses [`wasmtime`](https://github.com/bytecodealliance/wasmtime) crates to generate Rust bindings, bring in WASI worlds, and execute the component. From 390e0cd18a0f7527373755ba568dc234facab75b Mon Sep 17 00:00:00 2001 From: Victor Adossi Date: Thu, 8 May 2025 17:12:56 +0900 Subject: [PATCH 174/175] fix(csharp): fix adder classname Signed-off-by: Victor Adossi --- component-model/src/language-support/csharp.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/component-model/src/language-support/csharp.md b/component-model/src/language-support/csharp.md index 633443c..abeb242 100644 --- a/component-model/src/language-support/csharp.md +++ b/component-model/src/language-support/csharp.md @@ -95,7 +95,7 @@ To fix this, add the following code to your in a file called `Component.cs`: ```csharp namespace AdderWorld; -public class AdderWorldImpl : IAdderWorld +public class AddImpl : IAdderWorld { public static uint Add(uint x, uint y) { From a23b6383359e0bcf997f5a578406b825287869c8 Mon Sep 17 00:00:00 2001 From: Mikhail Katychev Date: Mon, 12 May 2025 10:49:32 -0500 Subject: [PATCH 175/175] chore(infra): Add `.gitattributes` file to repo (#244) * add fie * added Cargo-component.lock to toml syntax --- .gitattributes | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 .gitattributes diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..c87cd58 --- /dev/null +++ b/.gitattributes @@ -0,0 +1,11 @@ +# Ensure all text is checked out with Unix EOL +* text=auto eol=lf + +# Ensure binary files aren't considered as text +*.wasm binary + +# Genrated code from cargo-component +component-model/examples/tutorial/*/src/bindings.rs linguist-generated + +Cargo-component.lock linguist-language=toml +

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 i32 { + #[allow(unused_imports)] + use wit_bindgen::rt::{alloc, vec::Vec, string::String}; + + // Before executing any other code, use this function to run all static + // constructors, if they have not yet been run. This is a hack required + // to work around wasi-libc ctors calling import functions to initialize + // the environment. + // + // This functionality will be removed once rust 1.69.0 is stable, at which + // point wasi-libc will no longer have this behavior. + // + // See + // https://github.com/bytecodealliance/preview2-prototyping/issues/99 + // for more details. + #[cfg(target_arch="wasm32")] + wit_bindgen::rt::run_ctors_once(); + + let result0 = <_GuestImpl as Guest>::add(arg0 as u32, arg1 as u32); + wit_bindgen::rt::as_i32(result0) + } + }; + use super::super::super::super::super::Component as _GuestImpl; + pub trait Guest { + fn add(a: u32,b: u32,) -> u32; + } + + } + + } + } +} + +#[cfg(target_arch = "wasm32")] +#[link_section = "component-type:adder"] +#[doc(hidden)] +pub static __WIT_BINDGEN_COMPONENT_TYPE: [u8; 733] = [3, 0, 5, 97, 100, 100, 101, 114, 0, 97, 115, 109, 13, 0, 1, 0, 7, 92, 1, 65, 2, 1, 66, 4, 1, 109, 1, 3, 97, 100, 100, 4, 0, 2, 111, 112, 3, 0, 0, 1, 64, 3, 2, 111, 112, 1, 1, 120, 121, 1, 121, 121, 0, 121, 4, 0, 15, 101, 118, 97, 108, 45, 101, 120, 112, 114, 101, 115, 115, 105, 111, 110, 1, 2, 4, 1, 31, 100, 111, 99, 115, 58, 99, 97, 108, 99, 117, 108, 97, 116, 111, 114, 47, 99, 97, 108, 99, 117, 108, 97, 116, 101, 64, 48, 46, 49, 46, 48, 5, 0, 11, 15, 1, 0, 9, 99, 97, 108, 99, 117, 108, 97, 116, 101, 3, 0, 0, 7, 55, 1, 65, 2, 1, 66, 2, 1, 64, 2, 1, 97, 121, 1, 98, 121, 0, 121, 4, 0, 3, 97, 100, 100, 1, 0, 4, 1, 25, 100, 111, 99, 115, 58, 99, 97, 108, 99, 117, 108, 97, 116, 111, 114, 47, 97, 100, 100, 64, 48, 46, 49, 46, 48, 5, 0, 11, 9, 1, 0, 3, 97, 100, 100, 3, 2, 0, 7, 90, 1, 65, 2, 1, 65, 2, 1, 66, 2, 1, 64, 2, 1, 97, 121, 1, 98, 121, 0, 121, 4, 0, 3, 97, 100, 100, 1, 0, 4, 1, 25, 100, 111, 99, 115, 58, 99, 97, 108, 99, 117, 108, 97, 116, 111, 114, 47, 97, 100, 100, 64, 48, 46, 49, 46, 48, 5, 0, 4, 1, 27, 100, 111, 99, 115, 58, 99, 97, 108, 99, 117, 108, 97, 116, 111, 114, 47, 97, 100, 100, 101, 114, 64, 48, 46, 49, 46, 48, 4, 0, 11, 11, 1, 0, 5, 97, 100, 100, 101, 114, 3, 4, 0, 7, 184, 1, 1, 65, 2, 1, 65, 4, 1, 66, 2, 1, 64, 2, 1, 97, 121, 1, 98, 121, 0, 121, 4, 0, 3, 97, 100, 100, 1, 0, 3, 1, 25, 100, 111, 99, 115, 58, 99, 97, 108, 99, 117, 108, 97, 116, 111, 114, 47, 97, 100, 100, 64, 48, 46, 49, 46, 48, 5, 0, 1, 66, 4, 1, 109, 1, 3, 97, 100, 100, 4, 0, 2, 111, 112, 3, 0, 0, 1, 64, 3, 2, 111, 112, 1, 1, 120, 121, 1, 121, 121, 0, 121, 4, 0, 15, 101, 118, 97, 108, 45, 101, 120, 112, 114, 101, 115, 115, 105, 111, 110, 1, 2, 4, 1, 31, 100, 111, 99, 115, 58, 99, 97, 108, 99, 117, 108, 97, 116, 111, 114, 47, 99, 97, 108, 99, 117, 108, 97, 116, 101, 64, 48, 46, 49, 46, 48, 5, 1, 4, 1, 32, 100, 111, 99, 115, 58, 99, 97, 108, 99, 117, 108, 97, 116, 111, 114, 47, 99, 97, 108, 99, 117, 108, 97, 116, 111, 114, 64, 48, 46, 49, 46, 48, 4, 0, 11, 16, 1, 0, 10, 99, 97, 108, 99, 117, 108, 97, 116, 111, 114, 3, 6, 0, 7, 125, 1, 65, 2, 1, 65, 2, 1, 66, 4, 1, 109, 1, 3, 97, 100, 100, 4, 0, 2, 111, 112, 3, 0, 0, 1, 64, 3, 2, 111, 112, 1, 1, 120, 121, 1, 121, 121, 0, 121, 4, 0, 15, 101, 118, 97, 108, 45, 101, 120, 112, 114, 101, 115, 115, 105, 111, 110, 1, 2, 3, 1, 31, 100, 111, 99, 115, 58, 99, 97, 108, 99, 117, 108, 97, 116, 111, 114, 47, 99, 97, 108, 99, 117, 108, 97, 116, 101, 64, 48, 46, 49, 46, 48, 5, 0, 4, 1, 25, 100, 111, 99, 115, 58, 99, 97, 108, 99, 117, 108, 97, 116, 111, 114, 47, 97, 112, 112, 64, 48, 46, 49, 46, 48, 4, 0, 11, 9, 1, 0, 3, 97, 112, 112, 3, 8, 0, 0, 16, 12, 112, 97, 99, 107, 97, 103, 101, 45, 100, 111, 99, 115, 0, 123, 125, 0, 70, 9, 112, 114, 111, 100, 117, 99, 101, 114, 115, 1, 12, 112, 114, 111, 99, 101, 115, 115, 101, 100, 45, 98, 121, 2, 13, 119, 105, 116, 45, 99, 111, 109, 112, 111, 110, 101, 110, 116, 6, 48, 46, 49, 56, 46, 50, 16, 119, 105, 116, 45, 98, 105, 110, 100, 103, 101, 110, 45, 114, 117, 115, 116, 6, 48, 46, 49, 54, 46, 48]; + +#[inline(never)] +#[doc(hidden)] +#[cfg(target_arch = "wasm32")] +pub fn __link_section() {} diff --git a/component-model/examples/tutorial/adder/src/lib.rs b/component-model/examples/tutorial/adder/src/lib.rs index 2460a13..0057fe5 100644 --- a/component-model/examples/tutorial/adder/src/lib.rs +++ b/component-model/examples/tutorial/adder/src/lib.rs @@ -1,5 +1,6 @@ -cargo_component_bindings::generate!(); -use bindings::exports::docs::calculator::add::Guest; +mod bindings; + +use crate::bindings::exports::docs::calculator::add::Guest; struct Component; diff --git a/component-model/examples/tutorial/calculator/Cargo-component.lock b/component-model/examples/tutorial/calculator/Cargo-component.lock deleted file mode 100644 index 00bc239..0000000 --- a/component-model/examples/tutorial/calculator/Cargo-component.lock +++ /dev/null @@ -1,3 +0,0 @@ -# This file is automatically generated by cargo-component. -# It is not intended for manual editing. -version = 1 diff --git a/component-model/examples/tutorial/calculator/Cargo.lock b/component-model/examples/tutorial/calculator/Cargo.lock index 92ae88c..64f015f 100644 --- a/component-model/examples/tutorial/calculator/Cargo.lock +++ b/component-model/examples/tutorial/calculator/Cargo.lock @@ -2,438 +2,24 @@ # It is not intended for manual editing. version = 3 -[[package]] -name = "anyhow" -version = "1.0.75" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6" - -[[package]] -name = "bitflags" -version = "1.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" - [[package]] name = "bitflags" -version = "2.4.0" +version = "2.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4682ae6287fcf752ecaabbfcc7b6f9b72aa33933dc23a554d853aea8eea8635" +checksum = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf" [[package]] name = "calculator" version = "0.1.0" dependencies = [ - "cargo-component-bindings", -] - -[[package]] -name = "cargo-component-bindings" -version = "0.1.0" -source = "git+https://github.com/bytecodealliance/cargo-component#86ccf3e9e57885784d5a32dcbb162813d5c820ba" -dependencies = [ - "cargo-component-macro", "wit-bindgen", ] -[[package]] -name = "cargo-component-macro" -version = "0.1.0" -source = "git+https://github.com/bytecodealliance/cargo-component#86ccf3e9e57885784d5a32dcbb162813d5c820ba" -dependencies = [ - "heck", - "proc-macro2", - "quote", - "syn", - "wit-bindgen-core", - "wit-bindgen-rust", - "wit-bindgen-rust-lib", - "wit-component", -] - -[[package]] -name = "equivalent" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" - -[[package]] -name = "form_urlencoded" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652" -dependencies = [ - "percent-encoding", -] - -[[package]] -name = "hashbrown" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c6201b9ff9fd90a5a3bac2e56a830d0caa509576f0e503818ee82c181b3437a" - -[[package]] -name = "heck" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" -dependencies = [ - "unicode-segmentation", -] - -[[package]] -name = "id-arena" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25a2bc672d1148e28034f176e01fffebb08b35768468cc954630da77a1449005" - -[[package]] -name = "idna" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c" -dependencies = [ - "unicode-bidi", - "unicode-normalization", -] - -[[package]] -name = "indexmap" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5477fe2230a79769d8dc68e0eabf5437907c0457a5614a9e8dddb67f65eb65d" -dependencies = [ - "equivalent", - "hashbrown", - "serde", -] - -[[package]] -name = "itoa" -version = "1.0.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" - -[[package]] -name = "leb128" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "884e2677b40cc8c339eaefcb701c32ef1fd2493d71118dc0ca4b6a736c93bd67" - -[[package]] -name = "log" -version = "0.4.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" - -[[package]] -name = "memchr" -version = "2.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f478948fd84d9f8e86967bf432640e46adfb5a4bd4f14ef7e864ab38220534ae" - -[[package]] -name = "percent-encoding" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" - -[[package]] -name = "proc-macro2" -version = "1.0.66" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9" -dependencies = [ - "unicode-ident", -] - -[[package]] -name = "pulldown-cmark" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77a1a2f1f0a7ecff9c31abbe177637be0e97a0aef46cf8738ece09327985d998" -dependencies = [ - "bitflags 1.3.2", - "memchr", - "unicase", -] - -[[package]] -name = "quote" -version = "1.0.33" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" -dependencies = [ - "proc-macro2", -] - -[[package]] -name = "ryu" -version = "1.0.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" - -[[package]] -name = "semver" -version = "1.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0293b4b29daaf487284529cc2f5675b8e57c61f70167ba415a463651fd6a918" - -[[package]] -name = "serde" -version = "1.0.188" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf9e0fcba69a370eed61bcf2b728575f726b50b55cba78064753d708ddc7549e" -dependencies = [ - "serde_derive", -] - -[[package]] -name = "serde_derive" -version = "1.0.188" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4eca7ac642d82aa35b60049a6eccb4be6be75e599bd2e9adb5f875a737654af2" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "serde_json" -version = "1.0.105" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "693151e1ac27563d6dbcec9dee9fbd5da8539b20fa14ad3752b2e6d363ace360" -dependencies = [ - "itoa", - "ryu", - "serde", -] - -[[package]] -name = "smallvec" -version = "1.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62bb4feee49fdd9f707ef802e22365a35de4b7b299de4763d44bfea899442ff9" - -[[package]] -name = "spdx" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b19b32ed6d899ab23174302ff105c1577e45a06b08d4fe0a9dd13ce804bbbf71" -dependencies = [ - "smallvec", -] - -[[package]] -name = "syn" -version = "2.0.29" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c324c494eba9d92503e6f1ef2e6df781e78f6a7705a0202d9801b198807d518a" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - -[[package]] -name = "tinyvec" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" -dependencies = [ - "tinyvec_macros", -] - -[[package]] -name = "tinyvec_macros" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" - -[[package]] -name = "unicase" -version = "2.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89" -dependencies = [ - "version_check", -] - -[[package]] -name = "unicode-bidi" -version = "0.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" - -[[package]] -name = "unicode-ident" -version = "1.0.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c" - -[[package]] -name = "unicode-normalization" -version = "0.1.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" -dependencies = [ - "tinyvec", -] - -[[package]] -name = "unicode-segmentation" -version = "1.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36" - -[[package]] -name = "unicode-xid" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" - -[[package]] -name = "url" -version = "2.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "143b538f18257fac9cad154828a57c6bf5157e1aa604d4816b5995bf6de87ae5" -dependencies = [ - "form_urlencoded", - "idna", - "percent-encoding", -] - -[[package]] -name = "version_check" -version = "0.9.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" - -[[package]] -name = "wasm-encoder" -version = "0.32.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ba64e81215916eaeb48fee292f29401d69235d62d8b8fd92a7b2844ec5ae5f7" -dependencies = [ - "leb128", -] - -[[package]] -name = "wasm-metadata" -version = "0.10.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08dc59d1fa569150851542143ca79438ca56845ccb31696c70225c638e063471" -dependencies = [ - "anyhow", - "indexmap", - "serde", - "serde_json", - "spdx", - "wasm-encoder", - "wasmparser", -] - -[[package]] -name = "wasmparser" -version = "0.112.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e986b010f47fcce49cf8ea5d5f9e5d2737832f12b53ae8ae785bbe895d0877bf" -dependencies = [ - "indexmap", - "semver", -] - [[package]] name = "wit-bindgen" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8a3e8e965dc50e6eb4410d9a11720719fadc6a1713803ea5f3be390b81c8279" -dependencies = [ - "bitflags 2.4.0", - "wit-bindgen-rust-macro", -] - -[[package]] -name = "wit-bindgen-core" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77255512565dfbd0b61de466e854918041d1da53c7bc049d6188c6e02643dc1e" -dependencies = [ - "anyhow", - "wit-component", - "wit-parser", -] - -[[package]] -name = "wit-bindgen-rust" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "399c60e6ea8598d1380e792f13d557007834f0fb799fea6503408cbc5debb4ae" -dependencies = [ - "anyhow", - "heck", - "wasm-metadata", - "wit-bindgen-core", - "wit-bindgen-rust-lib", - "wit-component", -] - -[[package]] -name = "wit-bindgen-rust-lib" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd9fb7a43c7dc28b0b727d6ae01bf369981229b7539e768fba2b7a4df13feeeb" -dependencies = [ - "heck", - "wit-bindgen-core", -] - -[[package]] -name = "wit-bindgen-rust-macro" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44cea5ed784da06da0e55836a6c160e7502dbe28771c2368a595e8606243bf22" -dependencies = [ - "anyhow", - "proc-macro2", - "syn", - "wit-bindgen-core", - "wit-bindgen-rust", - "wit-bindgen-rust-lib", - "wit-component", -] - -[[package]] -name = "wit-component" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66d9f2d16dd55d1a372dcfd4b7a466ea876682a5a3cb97e71ec9eef04affa876" -dependencies = [ - "anyhow", - "bitflags 2.4.0", - "indexmap", - "log", - "serde", - "serde_json", - "wasm-encoder", - "wasm-metadata", - "wasmparser", - "wit-parser", -] - -[[package]] -name = "wit-parser" -version = "0.11.0" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61e8b849bea13cc2315426b16efe6eb6813466d78f5fde69b0bb150c9c40e0dc" +checksum = "b76f1d099678b4f69402a421e888bbe71bf20320c2f3f3565d0e7484dbe5bc20" dependencies = [ - "anyhow", - "id-arena", - "indexmap", - "log", - "pulldown-cmark", - "semver", - "unicode-xid", - "url", + "bitflags", ] diff --git a/component-model/examples/tutorial/calculator/Cargo.toml b/component-model/examples/tutorial/calculator/Cargo.toml index 56945ca..3f2bfd8 100644 --- a/component-model/examples/tutorial/calculator/Cargo.toml +++ b/component-model/examples/tutorial/calculator/Cargo.toml @@ -4,7 +4,7 @@ version = "0.1.0" edition = "2021" [dependencies] -cargo-component-bindings = { git = "https://github.com/bytecodealliance/cargo-component" } +wit-bindgen = { version = "0.16.0", default-features = false, features = ["realloc"] } [lib] crate-type = ["cdylib"] @@ -15,3 +15,5 @@ package = "docs:calculator" [package.metadata.component.target] path = "../wit/calculator.wit" world = "calculator" + +[package.metadata.component.dependencies] diff --git a/component-model/examples/tutorial/calculator/src/bindings.rs b/component-model/examples/tutorial/calculator/src/bindings.rs new file mode 100644 index 0000000..ada57cd --- /dev/null +++ b/component-model/examples/tutorial/calculator/src/bindings.rs @@ -0,0 +1,121 @@ +// Generated by `wit-bindgen` 0.16.0. DO NOT EDIT! +pub mod docs { + pub mod calculator { + + #[allow(clippy::all)] + pub mod add { + #[used] + #[doc(hidden)] + #[cfg(target_arch = "wasm32")] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_section; + #[allow(unused_unsafe, clippy::all)] + pub fn add(a: u32,b: u32,) -> u32{ + + #[allow(unused_imports)] + use wit_bindgen::rt::{alloc, vec::Vec, string::String}; + unsafe { + + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "docs:calculator/add@0.1.0")] + extern "C" { + #[link_name = "add"] + fn wit_import(_: i32, _: i32, ) -> i32; + } + + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: i32, _: i32, ) -> i32{ unreachable!() } + let ret = wit_import(wit_bindgen::rt::as_i32(a), wit_bindgen::rt::as_i32(b)); + ret as u32 + } + } + + } + + } +} +pub mod exports { + pub mod docs { + pub mod calculator { + + #[allow(clippy::all)] + pub mod calculate { + #[used] + #[doc(hidden)] + #[cfg(target_arch = "wasm32")] + static __FORCE_SECTION_REF: fn() = super::super::super::super::__link_section; + #[repr(u8)] + #[derive(Clone, Copy, Eq, PartialEq)] + pub enum Op { + Add, + } + impl ::core::fmt::Debug for Op { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Op::Add => { + f.debug_tuple("Op::Add").finish() + } + } + } + } + + impl Op{ + pub(crate) unsafe fn _lift(val: u8) -> Op{ + if !cfg!(debug_assertions) { + return ::core::mem::transmute(val); + } + + match val { + 0 => Op::Add, + + _ => panic!("invalid enum discriminant"), + } + } + } + + const _: () = { + + #[doc(hidden)] + #[export_name = "docs:calculator/calculate@0.1.0#eval-expression"] + #[allow(non_snake_case)] + unsafe extern "C" fn __export_eval_expression(arg0: i32,arg1: i32,arg2: i32,) -> i32 { + #[allow(unused_imports)] + use wit_bindgen::rt::{alloc, vec::Vec, string::String}; + + // Before executing any other code, use this function to run all static + // constructors, if they have not yet been run. This is a hack required + // to work around wasi-libc ctors calling import functions to initialize + // the environment. + // + // This functionality will be removed once rust 1.69.0 is stable, at which + // point wasi-libc will no longer have this behavior. + // + // See + // https://github.com/bytecodealliance/preview2-prototyping/issues/99 + // for more details. + #[cfg(target_arch="wasm32")] + wit_bindgen::rt::run_ctors_once(); + + let result0 = <_GuestImpl as Guest>::eval_expression(Op::_lift(arg0 as u8), arg1 as u32, arg2 as u32); + wit_bindgen::rt::as_i32(result0) + } + }; + use super::super::super::super::super::Component as _GuestImpl; + pub trait Guest { + fn eval_expression(op: Op,x: u32,y: u32,) -> u32; + } + + } + + } + } +} + +#[cfg(target_arch = "wasm32")] +#[link_section = "component-type:calculator"] +#[doc(hidden)] +pub static __WIT_BINDGEN_COMPONENT_TYPE: [u8; 738] = [3, 0, 10, 99, 97, 108, 99, 117, 108, 97, 116, 111, 114, 0, 97, 115, 109, 13, 0, 1, 0, 7, 92, 1, 65, 2, 1, 66, 4, 1, 109, 1, 3, 97, 100, 100, 4, 0, 2, 111, 112, 3, 0, 0, 1, 64, 3, 2, 111, 112, 1, 1, 120, 121, 1, 121, 121, 0, 121, 4, 0, 15, 101, 118, 97, 108, 45, 101, 120, 112, 114, 101, 115, 115, 105, 111, 110, 1, 2, 4, 1, 31, 100, 111, 99, 115, 58, 99, 97, 108, 99, 117, 108, 97, 116, 111, 114, 47, 99, 97, 108, 99, 117, 108, 97, 116, 101, 64, 48, 46, 49, 46, 48, 5, 0, 11, 15, 1, 0, 9, 99, 97, 108, 99, 117, 108, 97, 116, 101, 3, 0, 0, 7, 55, 1, 65, 2, 1, 66, 2, 1, 64, 2, 1, 97, 121, 1, 98, 121, 0, 121, 4, 0, 3, 97, 100, 100, 1, 0, 4, 1, 25, 100, 111, 99, 115, 58, 99, 97, 108, 99, 117, 108, 97, 116, 111, 114, 47, 97, 100, 100, 64, 48, 46, 49, 46, 48, 5, 0, 11, 9, 1, 0, 3, 97, 100, 100, 3, 2, 0, 7, 90, 1, 65, 2, 1, 65, 2, 1, 66, 2, 1, 64, 2, 1, 97, 121, 1, 98, 121, 0, 121, 4, 0, 3, 97, 100, 100, 1, 0, 4, 1, 25, 100, 111, 99, 115, 58, 99, 97, 108, 99, 117, 108, 97, 116, 111, 114, 47, 97, 100, 100, 64, 48, 46, 49, 46, 48, 5, 0, 4, 1, 27, 100, 111, 99, 115, 58, 99, 97, 108, 99, 117, 108, 97, 116, 111, 114, 47, 97, 100, 100, 101, 114, 64, 48, 46, 49, 46, 48, 4, 0, 11, 11, 1, 0, 5, 97, 100, 100, 101, 114, 3, 4, 0, 7, 184, 1, 1, 65, 2, 1, 65, 4, 1, 66, 2, 1, 64, 2, 1, 97, 121, 1, 98, 121, 0, 121, 4, 0, 3, 97, 100, 100, 1, 0, 3, 1, 25, 100, 111, 99, 115, 58, 99, 97, 108, 99, 117, 108, 97, 116, 111, 114, 47, 97, 100, 100, 64, 48, 46, 49, 46, 48, 5, 0, 1, 66, 4, 1, 109, 1, 3, 97, 100, 100, 4, 0, 2, 111, 112, 3, 0, 0, 1, 64, 3, 2, 111, 112, 1, 1, 120, 121, 1, 121, 121, 0, 121, 4, 0, 15, 101, 118, 97, 108, 45, 101, 120, 112, 114, 101, 115, 115, 105, 111, 110, 1, 2, 4, 1, 31, 100, 111, 99, 115, 58, 99, 97, 108, 99, 117, 108, 97, 116, 111, 114, 47, 99, 97, 108, 99, 117, 108, 97, 116, 101, 64, 48, 46, 49, 46, 48, 5, 1, 4, 1, 32, 100, 111, 99, 115, 58, 99, 97, 108, 99, 117, 108, 97, 116, 111, 114, 47, 99, 97, 108, 99, 117, 108, 97, 116, 111, 114, 64, 48, 46, 49, 46, 48, 4, 0, 11, 16, 1, 0, 10, 99, 97, 108, 99, 117, 108, 97, 116, 111, 114, 3, 6, 0, 7, 125, 1, 65, 2, 1, 65, 2, 1, 66, 4, 1, 109, 1, 3, 97, 100, 100, 4, 0, 2, 111, 112, 3, 0, 0, 1, 64, 3, 2, 111, 112, 1, 1, 120, 121, 1, 121, 121, 0, 121, 4, 0, 15, 101, 118, 97, 108, 45, 101, 120, 112, 114, 101, 115, 115, 105, 111, 110, 1, 2, 3, 1, 31, 100, 111, 99, 115, 58, 99, 97, 108, 99, 117, 108, 97, 116, 111, 114, 47, 99, 97, 108, 99, 117, 108, 97, 116, 101, 64, 48, 46, 49, 46, 48, 5, 0, 4, 1, 25, 100, 111, 99, 115, 58, 99, 97, 108, 99, 117, 108, 97, 116, 111, 114, 47, 97, 112, 112, 64, 48, 46, 49, 46, 48, 4, 0, 11, 9, 1, 0, 3, 97, 112, 112, 3, 8, 0, 0, 16, 12, 112, 97, 99, 107, 97, 103, 101, 45, 100, 111, 99, 115, 0, 123, 125, 0, 70, 9, 112, 114, 111, 100, 117, 99, 101, 114, 115, 1, 12, 112, 114, 111, 99, 101, 115, 115, 101, 100, 45, 98, 121, 2, 13, 119, 105, 116, 45, 99, 111, 109, 112, 111, 110, 101, 110, 116, 6, 48, 46, 49, 56, 46, 50, 16, 119, 105, 116, 45, 98, 105, 110, 100, 103, 101, 110, 45, 114, 117, 115, 116, 6, 48, 46, 49, 54, 46, 48]; + +#[inline(never)] +#[doc(hidden)] +#[cfg(target_arch = "wasm32")] +pub fn __link_section() {} diff --git a/component-model/examples/tutorial/calculator/src/lib.rs b/component-model/examples/tutorial/calculator/src/lib.rs index fed827f..c32fdfc 100644 --- a/component-model/examples/tutorial/calculator/src/lib.rs +++ b/component-model/examples/tutorial/calculator/src/lib.rs @@ -1,4 +1,4 @@ -cargo_component_bindings::generate!(); +mod bindings; use bindings::exports::docs::calculator::calculate::{Guest, Op}; diff --git a/component-model/examples/tutorial/command/Cargo-component.lock b/component-model/examples/tutorial/command/Cargo-component.lock deleted file mode 100644 index 00bc239..0000000 --- a/component-model/examples/tutorial/command/Cargo-component.lock +++ /dev/null @@ -1,3 +0,0 @@ -# This file is automatically generated by cargo-component. -# It is not intended for manual editing. -version = 1 diff --git a/component-model/examples/tutorial/command/Cargo.lock b/component-model/examples/tutorial/command/Cargo.lock index 39dbab4..a0bf4c0 100644 --- a/component-model/examples/tutorial/command/Cargo.lock +++ b/component-model/examples/tutorial/command/Cargo.lock @@ -4,9 +4,9 @@ version = 3 [[package]] name = "anstream" -version = "0.5.0" +version = "0.6.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1f58811cfac344940f1a400b6e6231ce35171f614f26439e80f8c1465c5cc0c" +checksum = "6e2e1ebcb11de5c03c67de28a7df593d32191b44939c482e97702baaaa6ab6a5" dependencies = [ "anstyle", "anstyle-parse", @@ -18,33 +18,33 @@ dependencies = [ [[package]] name = "anstyle" -version = "1.0.2" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "15c4c2c83f81532e5845a733998b6971faca23490340a418e9b72a3ec9de12ea" +checksum = "7079075b41f533b8c61d2a4d073c4676e1f8b249ff94a393b0595db304e0dd87" [[package]] name = "anstyle-parse" -version = "0.2.1" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "938874ff5980b03a87c5524b3ae5b59cf99b1d6bc836848df7bc5ada9643c333" +checksum = "c75ac65da39e5fe5ab759307499ddad880d724eed2f6ce5b5e8a26f4f387928c" dependencies = [ "utf8parse", ] [[package]] name = "anstyle-query" -version = "1.0.0" +version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ca11d4be1bab0c8bc8734a9aa7bf4ee8316d462a08c6ac5052f888fef5b494b" +checksum = "e28923312444cdd728e4738b3f9c9cac739500909bb3d3c94b43551b16517648" dependencies = [ "windows-sys", ] [[package]] name = "anstyle-wincon" -version = "2.1.0" +version = "3.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "58f54d10c6dfa51283a066ceab3ec1ab78d13fae00aa49243a45e4571fb79dfd" +checksum = "1cd54b81ec8d6180e24654d0b371ad22fc3dd083b6ff8ba325b72e00c87660a7" dependencies = [ "anstyle", "windows-sys", @@ -52,62 +52,31 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.75" +version = "1.0.79" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4668cab20f66d8d020e1fbc0ebe47217433c1b6c8f2040faf858554e394ace6" +checksum = "080e9890a082662b09c1ad45f567faeeb47f22b5fb23895fbe1e651e718e25ca" [[package]] name = "bitflags" -version = "1.3.2" +version = "2.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" - -[[package]] -name = "bitflags" -version = "2.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b4682ae6287fcf752ecaabbfcc7b6f9b72aa33933dc23a554d853aea8eea8635" - -[[package]] -name = "cargo-component-bindings" -version = "0.1.0" -source = "git+https://github.com/bytecodealliance/cargo-component#86ccf3e9e57885784d5a32dcbb162813d5c820ba" -dependencies = [ - "cargo-component-macro", - "wit-bindgen", -] - -[[package]] -name = "cargo-component-macro" -version = "0.1.0" -source = "git+https://github.com/bytecodealliance/cargo-component#86ccf3e9e57885784d5a32dcbb162813d5c820ba" -dependencies = [ - "heck", - "proc-macro2", - "quote", - "syn", - "wit-bindgen-core", - "wit-bindgen-rust", - "wit-bindgen-rust-lib", - "wit-component", -] +checksum = "ed570934406eb16438a4e976b1b4500774099c13b8cb96eec99f620f05090ddf" [[package]] name = "clap" -version = "4.4.1" +version = "4.4.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c8d502cbaec4595d2e7d5f61e318f05417bd2b66fdc3809498f0d3fdf0bea27" +checksum = "1e578d6ec4194633722ccf9544794b71b1385c3c027efe0c55db226fc880865c" dependencies = [ "clap_builder", "clap_derive", - "once_cell", ] [[package]] name = "clap_builder" -version = "4.4.1" +version = "4.4.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5891c7bc0edb3e1c2204fc5e94009affabeb1821c9e5fdc3959536c5c0bb984d" +checksum = "4df4df40ec50c46000231c914968278b1eb05098cf8f1b3a518a95030e71d1c7" dependencies = [ "anstream", "anstyle", @@ -117,9 +86,9 @@ dependencies = [ [[package]] name = "clap_derive" -version = "4.4.0" +version = "4.4.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c9fd1a5729c4548118d7d70ff234a44868d00489a4b6597b0b020918a0e91a1a" +checksum = "cf9804afaaf59a91e75b022a30fb7229a7901f60c755489cc61c9b423b836442" dependencies = [ "heck", "proc-macro2", @@ -129,9 +98,9 @@ dependencies = [ [[package]] name = "clap_lex" -version = "0.5.1" +version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd7cc57abe963c6d3b9d8be5b06ba7c8957a930305ca90304f24ef040aa6f961" +checksum = "702fc72eb24e5a1e48ce58027a675bc24edd52096d5397d4aea7c6dd9eca0bd1" [[package]] name = "colorchoice" @@ -144,190 +113,34 @@ name = "command" version = "0.1.0" dependencies = [ "anyhow", - "cargo-component-bindings", "clap", + "wit-bindgen", ] -[[package]] -name = "equivalent" -version = "1.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" - -[[package]] -name = "form_urlencoded" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a62bc1cf6f830c2ec14a513a9fb124d0a213a629668a4186f329db21fe045652" -dependencies = [ - "percent-encoding", -] - -[[package]] -name = "hashbrown" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c6201b9ff9fd90a5a3bac2e56a830d0caa509576f0e503818ee82c181b3437a" - [[package]] name = "heck" version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" -dependencies = [ - "unicode-segmentation", -] - -[[package]] -name = "id-arena" -version = "2.2.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25a2bc672d1148e28034f176e01fffebb08b35768468cc954630da77a1449005" - -[[package]] -name = "idna" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d20d6b07bfbc108882d88ed8e37d39636dcc260e15e30c45e6ba089610b917c" -dependencies = [ - "unicode-bidi", - "unicode-normalization", -] - -[[package]] -name = "indexmap" -version = "2.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5477fe2230a79769d8dc68e0eabf5437907c0457a5614a9e8dddb67f65eb65d" -dependencies = [ - "equivalent", - "hashbrown", - "serde", -] - -[[package]] -name = "itoa" -version = "1.0.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af150ab688ff2122fcef229be89cb50dd66af9e01a4ff320cc137eecc9bacc38" - -[[package]] -name = "leb128" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "884e2677b40cc8c339eaefcb701c32ef1fd2493d71118dc0ca4b6a736c93bd67" - -[[package]] -name = "log" -version = "0.4.20" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" - -[[package]] -name = "memchr" -version = "2.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f478948fd84d9f8e86967bf432640e46adfb5a4bd4f14ef7e864ab38220534ae" - -[[package]] -name = "once_cell" -version = "1.18.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd8b5dd2ae5ed71462c540258bedcb51965123ad7e7ccf4b9a8cafaa4a63576d" - -[[package]] -name = "percent-encoding" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b2a4787296e9989611394c33f193f676704af1686e70b8f8033ab5ba9a35a94" [[package]] name = "proc-macro2" -version = "1.0.66" +version = "1.0.78" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18fb31db3f9bddb2ea821cde30a9f70117e3f119938b5ee630b7403aa6e2ead9" +checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae" dependencies = [ "unicode-ident", ] -[[package]] -name = "pulldown-cmark" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77a1a2f1f0a7ecff9c31abbe177637be0e97a0aef46cf8738ece09327985d998" -dependencies = [ - "bitflags 1.3.2", - "memchr", - "unicase", -] - [[package]] name = "quote" -version = "1.0.33" +version = "1.0.35" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5267fca4496028628a95160fc423a33e8b2e6af8a5302579e322e4b520293cae" +checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" dependencies = [ "proc-macro2", ] -[[package]] -name = "ryu" -version = "1.0.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" - -[[package]] -name = "semver" -version = "1.0.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0293b4b29daaf487284529cc2f5675b8e57c61f70167ba415a463651fd6a918" - -[[package]] -name = "serde" -version = "1.0.188" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf9e0fcba69a370eed61bcf2b728575f726b50b55cba78064753d708ddc7549e" -dependencies = [ - "serde_derive", -] - -[[package]] -name = "serde_derive" -version = "1.0.188" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4eca7ac642d82aa35b60049a6eccb4be6be75e599bd2e9adb5f875a737654af2" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - -[[package]] -name = "serde_json" -version = "1.0.105" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "693151e1ac27563d6dbcec9dee9fbd5da8539b20fa14ad3752b2e6d363ace360" -dependencies = [ - "itoa", - "ryu", - "serde", -] - -[[package]] -name = "smallvec" -version = "1.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62bb4feee49fdd9f707ef802e22365a35de4b7b299de4763d44bfea899442ff9" - -[[package]] -name = "spdx" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b19b32ed6d899ab23174302ff105c1577e45a06b08d4fe0a9dd13ce804bbbf71" -dependencies = [ - "smallvec", -] - [[package]] name = "strsim" version = "0.10.0" @@ -336,82 +149,20 @@ checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" [[package]] name = "syn" -version = "2.0.29" +version = "2.0.48" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c324c494eba9d92503e6f1ef2e6df781e78f6a7705a0202d9801b198807d518a" +checksum = "0f3531638e407dfc0814761abb7c00a5b54992b849452a0646b7f65c9f770f3f" dependencies = [ "proc-macro2", "quote", "unicode-ident", ] -[[package]] -name = "tinyvec" -version = "1.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" -dependencies = [ - "tinyvec_macros", -] - -[[package]] -name = "tinyvec_macros" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" - -[[package]] -name = "unicase" -version = "2.7.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7d2d4dafb69621809a81864c9c1b864479e1235c0dd4e199924b9742439ed89" -dependencies = [ - "version_check", -] - -[[package]] -name = "unicode-bidi" -version = "0.3.13" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92888ba5573ff080736b3648696b70cafad7d250551175acbaa4e0385b3e1460" - [[package]] name = "unicode-ident" -version = "1.0.11" +version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "301abaae475aa91687eb82514b328ab47a211a533026cb25fc3e519b86adfc3c" - -[[package]] -name = "unicode-normalization" -version = "0.1.22" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" -dependencies = [ - "tinyvec", -] - -[[package]] -name = "unicode-segmentation" -version = "1.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1dd624098567895118886609431a7c3b8f516e41d30e0643f03d94592a147e36" - -[[package]] -name = "unicode-xid" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" - -[[package]] -name = "url" -version = "2.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "143b538f18257fac9cad154828a57c6bf5157e1aa604d4816b5995bf6de87ae5" -dependencies = [ - "form_urlencoded", - "idna", - "percent-encoding", -] +checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" [[package]] name = "utf8parse" @@ -419,60 +170,20 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" -[[package]] -name = "version_check" -version = "0.9.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" - -[[package]] -name = "wasm-encoder" -version = "0.32.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ba64e81215916eaeb48fee292f29401d69235d62d8b8fd92a7b2844ec5ae5f7" -dependencies = [ - "leb128", -] - -[[package]] -name = "wasm-metadata" -version = "0.10.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "08dc59d1fa569150851542143ca79438ca56845ccb31696c70225c638e063471" -dependencies = [ - "anyhow", - "indexmap", - "serde", - "serde_json", - "spdx", - "wasm-encoder", - "wasmparser", -] - -[[package]] -name = "wasmparser" -version = "0.112.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e986b010f47fcce49cf8ea5d5f9e5d2737832f12b53ae8ae785bbe895d0877bf" -dependencies = [ - "indexmap", - "semver", -] - [[package]] name = "windows-sys" -version = "0.48.0" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" +checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ "windows-targets", ] [[package]] name = "windows-targets" -version = "0.48.5" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" +checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd" dependencies = [ "windows_aarch64_gnullvm", "windows_aarch64_msvc", @@ -485,136 +196,51 @@ dependencies = [ [[package]] name = "windows_aarch64_gnullvm" -version = "0.48.5" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" +checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea" [[package]] name = "windows_aarch64_msvc" -version = "0.48.5" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" +checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef" [[package]] name = "windows_i686_gnu" -version = "0.48.5" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" +checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313" [[package]] name = "windows_i686_msvc" -version = "0.48.5" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" +checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a" [[package]] name = "windows_x86_64_gnu" -version = "0.48.5" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" +checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd" [[package]] name = "windows_x86_64_gnullvm" -version = "0.48.5" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" +checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e" [[package]] name = "windows_x86_64_msvc" -version = "0.48.5" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" +checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" [[package]] name = "wit-bindgen" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8a3e8e965dc50e6eb4410d9a11720719fadc6a1713803ea5f3be390b81c8279" -dependencies = [ - "bitflags 2.4.0", - "wit-bindgen-rust-macro", -] - -[[package]] -name = "wit-bindgen-core" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "77255512565dfbd0b61de466e854918041d1da53c7bc049d6188c6e02643dc1e" -dependencies = [ - "anyhow", - "wit-component", - "wit-parser", -] - -[[package]] -name = "wit-bindgen-rust" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "399c60e6ea8598d1380e792f13d557007834f0fb799fea6503408cbc5debb4ae" -dependencies = [ - "anyhow", - "heck", - "wasm-metadata", - "wit-bindgen-core", - "wit-bindgen-rust-lib", - "wit-component", -] - -[[package]] -name = "wit-bindgen-rust-lib" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd9fb7a43c7dc28b0b727d6ae01bf369981229b7539e768fba2b7a4df13feeeb" -dependencies = [ - "heck", - "wit-bindgen-core", -] - -[[package]] -name = "wit-bindgen-rust-macro" -version = "0.11.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44cea5ed784da06da0e55836a6c160e7502dbe28771c2368a595e8606243bf22" -dependencies = [ - "anyhow", - "proc-macro2", - "syn", - "wit-bindgen-core", - "wit-bindgen-rust", - "wit-bindgen-rust-lib", - "wit-component", -] - -[[package]] -name = "wit-component" -version = "0.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "66d9f2d16dd55d1a372dcfd4b7a466ea876682a5a3cb97e71ec9eef04affa876" -dependencies = [ - "anyhow", - "bitflags 2.4.0", - "indexmap", - "log", - "serde", - "serde_json", - "wasm-encoder", - "wasm-metadata", - "wasmparser", - "wit-parser", -] - -[[package]] -name = "wit-parser" -version = "0.11.0" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "61e8b849bea13cc2315426b16efe6eb6813466d78f5fde69b0bb150c9c40e0dc" +checksum = "b76f1d099678b4f69402a421e888bbe71bf20320c2f3f3565d0e7484dbe5bc20" dependencies = [ - "anyhow", - "id-arena", - "indexmap", - "log", - "pulldown-cmark", - "semver", - "unicode-xid", - "url", + "bitflags", ] diff --git a/component-model/examples/tutorial/command/Cargo.toml b/component-model/examples/tutorial/command/Cargo.toml index 1588b3f..7edf3a4 100644 --- a/component-model/examples/tutorial/command/Cargo.toml +++ b/component-model/examples/tutorial/command/Cargo.toml @@ -3,13 +3,14 @@ name = "command" version = "0.1.0" edition = "2021" -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - -[dependencies] -anyhow = "1" -cargo-component-bindings = { git = "https://github.com/bytecodealliance/cargo-component" } -clap = { version = "4.3.19", features = ["derive"] } +[package.metadata.component] +package = "docs:calculator" [package.metadata.component.target] path = "../wit/calculator.wit" world = "app" + +[dependencies] +anyhow = "1" +clap = { version = "4.3.19", features = ["derive"] } +wit-bindgen = { version = "0.16.0", default-features = false, features = ["realloc"] } diff --git a/component-model/examples/tutorial/command/src/bindings.rs b/component-model/examples/tutorial/command/src/bindings.rs new file mode 100644 index 0000000..30f66b1 --- /dev/null +++ b/component-model/examples/tutorial/command/src/bindings.rs @@ -0,0 +1,74 @@ +// Generated by `wit-bindgen` 0.16.0. DO NOT EDIT! +pub mod docs { + pub mod calculator { + + #[allow(clippy::all)] + pub mod calculate { + #[used] + #[doc(hidden)] + #[cfg(target_arch = "wasm32")] + static __FORCE_SECTION_REF: fn() = super::super::super::__link_section; + #[repr(u8)] + #[derive(Clone, Copy, Eq, PartialEq)] + pub enum Op { + Add, + } + impl ::core::fmt::Debug for Op { + fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result { + match self { + Op::Add => { + f.debug_tuple("Op::Add").finish() + } + } + } + } + + impl Op{ + pub(crate) unsafe fn _lift(val: u8) -> Op{ + if !cfg!(debug_assertions) { + return ::core::mem::transmute(val); + } + + match val { + 0 => Op::Add, + + _ => panic!("invalid enum discriminant"), + } + } + } + + #[allow(unused_unsafe, clippy::all)] + pub fn eval_expression(op: Op,x: u32,y: u32,) -> u32{ + + #[allow(unused_imports)] + use wit_bindgen::rt::{alloc, vec::Vec, string::String}; + unsafe { + + #[cfg(target_arch = "wasm32")] + #[link(wasm_import_module = "docs:calculator/calculate@0.1.0")] + extern "C" { + #[link_name = "eval-expression"] + fn wit_import(_: i32, _: i32, _: i32, ) -> i32; + } + + #[cfg(not(target_arch = "wasm32"))] + fn wit_import(_: i32, _: i32, _: i32, ) -> i32{ unreachable!() } + let ret = wit_import(op.clone() as i32, wit_bindgen::rt::as_i32(x), wit_bindgen::rt::as_i32(y)); + ret as u32 + } + } + + } + + } +} + +#[cfg(target_arch = "wasm32")] +#[link_section = "component-type:app"] +#[doc(hidden)] +pub static __WIT_BINDGEN_COMPONENT_TYPE: [u8; 731] = [3, 0, 3, 97, 112, 112, 0, 97, 115, 109, 13, 0, 1, 0, 7, 92, 1, 65, 2, 1, 66, 4, 1, 109, 1, 3, 97, 100, 100, 4, 0, 2, 111, 112, 3, 0, 0, 1, 64, 3, 2, 111, 112, 1, 1, 120, 121, 1, 121, 121, 0, 121, 4, 0, 15, 101, 118, 97, 108, 45, 101, 120, 112, 114, 101, 115, 115, 105, 111, 110, 1, 2, 4, 1, 31, 100, 111, 99, 115, 58, 99, 97, 108, 99, 117, 108, 97, 116, 111, 114, 47, 99, 97, 108, 99, 117, 108, 97, 116, 101, 64, 48, 46, 49, 46, 48, 5, 0, 11, 15, 1, 0, 9, 99, 97, 108, 99, 117, 108, 97, 116, 101, 3, 0, 0, 7, 55, 1, 65, 2, 1, 66, 2, 1, 64, 2, 1, 97, 121, 1, 98, 121, 0, 121, 4, 0, 3, 97, 100, 100, 1, 0, 4, 1, 25, 100, 111, 99, 115, 58, 99, 97, 108, 99, 117, 108, 97, 116, 111, 114, 47, 97, 100, 100, 64, 48, 46, 49, 46, 48, 5, 0, 11, 9, 1, 0, 3, 97, 100, 100, 3, 2, 0, 7, 90, 1, 65, 2, 1, 65, 2, 1, 66, 2, 1, 64, 2, 1, 97, 121, 1, 98, 121, 0, 121, 4, 0, 3, 97, 100, 100, 1, 0, 4, 1, 25, 100, 111, 99, 115, 58, 99, 97, 108, 99, 117, 108, 97, 116, 111, 114, 47, 97, 100, 100, 64, 48, 46, 49, 46, 48, 5, 0, 4, 1, 27, 100, 111, 99, 115, 58, 99, 97, 108, 99, 117, 108, 97, 116, 111, 114, 47, 97, 100, 100, 101, 114, 64, 48, 46, 49, 46, 48, 4, 0, 11, 11, 1, 0, 5, 97, 100, 100, 101, 114, 3, 4, 0, 7, 184, 1, 1, 65, 2, 1, 65, 4, 1, 66, 2, 1, 64, 2, 1, 97, 121, 1, 98, 121, 0, 121, 4, 0, 3, 97, 100, 100, 1, 0, 3, 1, 25, 100, 111, 99, 115, 58, 99, 97, 108, 99, 117, 108, 97, 116, 111, 114, 47, 97, 100, 100, 64, 48, 46, 49, 46, 48, 5, 0, 1, 66, 4, 1, 109, 1, 3, 97, 100, 100, 4, 0, 2, 111, 112, 3, 0, 0, 1, 64, 3, 2, 111, 112, 1, 1, 120, 121, 1, 121, 121, 0, 121, 4, 0, 15, 101, 118, 97, 108, 45, 101, 120, 112, 114, 101, 115, 115, 105, 111, 110, 1, 2, 4, 1, 31, 100, 111, 99, 115, 58, 99, 97, 108, 99, 117, 108, 97, 116, 111, 114, 47, 99, 97, 108, 99, 117, 108, 97, 116, 101, 64, 48, 46, 49, 46, 48, 5, 1, 4, 1, 32, 100, 111, 99, 115, 58, 99, 97, 108, 99, 117, 108, 97, 116, 111, 114, 47, 99, 97, 108, 99, 117, 108, 97, 116, 111, 114, 64, 48, 46, 49, 46, 48, 4, 0, 11, 16, 1, 0, 10, 99, 97, 108, 99, 117, 108, 97, 116, 111, 114, 3, 6, 0, 7, 125, 1, 65, 2, 1, 65, 2, 1, 66, 4, 1, 109, 1, 3, 97, 100, 100, 4, 0, 2, 111, 112, 3, 0, 0, 1, 64, 3, 2, 111, 112, 1, 1, 120, 121, 1, 121, 121, 0, 121, 4, 0, 15, 101, 118, 97, 108, 45, 101, 120, 112, 114, 101, 115, 115, 105, 111, 110, 1, 2, 3, 1, 31, 100, 111, 99, 115, 58, 99, 97, 108, 99, 117, 108, 97, 116, 111, 114, 47, 99, 97, 108, 99, 117, 108, 97, 116, 101, 64, 48, 46, 49, 46, 48, 5, 0, 4, 1, 25, 100, 111, 99, 115, 58, 99, 97, 108, 99, 117, 108, 97, 116, 111, 114, 47, 97, 112, 112, 64, 48, 46, 49, 46, 48, 4, 0, 11, 9, 1, 0, 3, 97, 112, 112, 3, 8, 0, 0, 16, 12, 112, 97, 99, 107, 97, 103, 101, 45, 100, 111, 99, 115, 0, 123, 125, 0, 70, 9, 112, 114, 111, 100, 117, 99, 101, 114, 115, 1, 12, 112, 114, 111, 99, 101, 115, 115, 101, 100, 45, 98, 121, 2, 13, 119, 105, 116, 45, 99, 111, 109, 112, 111, 110, 101, 110, 116, 6, 48, 46, 49, 56, 46, 50, 16, 119, 105, 116, 45, 98, 105, 110, 100, 103, 101, 110, 45, 114, 117, 115, 116, 6, 48, 46, 49, 54, 46, 48]; + +#[inline(never)] +#[doc(hidden)] +#[cfg(target_arch = "wasm32")] +pub fn __link_section() {} diff --git a/component-model/examples/tutorial/command/src/main.rs b/component-model/examples/tutorial/command/src/main.rs index 9a91fd6..566e534 100644 --- a/component-model/examples/tutorial/command/src/main.rs +++ b/component-model/examples/tutorial/command/src/main.rs @@ -1,4 +1,5 @@ -cargo_component_bindings::generate!(); +mod bindings; + use clap::Parser; use std::{fmt}; diff --git a/component-model/src/language-support/rust.md b/component-model/src/language-support/rust.md index 73f7e42..59249d8 100644 --- a/component-model/src/language-support/rust.md +++ b/component-model/src/language-support/rust.md @@ -15,12 +15,12 @@ cargo install cargo-component ## Building a Component with `cargo component` -Create a Rust program that implements the `add` function in the [`example` +Create a Rust library that implements the `add` function in the [`example` world](https://github.com/bytecodealliance/component-docs/tree/main/component-model/examples/example-host/add.wit). Note that it imports the bindings that will be created by `cargo-component`. First scaffold a project: ```sh -$ cargo component new add --reactor && cd add +$ cargo component new add --lib && cd add ``` Update `wit/world.wit` to match `add.wit` and modify the component package reference to change the @@ -34,7 +34,8 @@ package = "component:example" `cargo-component` will generate bindings for the world specified in a package's `Cargo.toml`. In particular, it will create a `Guest` trait that a component should implement. Since our `example` world has no interfaces, the trait lives directly under the bindings module. Implement the `Guest` trait in `add/src/lib.rs` such that it satisfied the `example` world, adding an `add` function. It should look similar to the following: ```rs -cargo_component_bindings::generate!(); +mod bindings; + use bindings::Guest; struct Component; @@ -98,10 +99,9 @@ world adder { you would write the following Rust code: ```rust -cargo_component_bindings::generate!(); - +mod bindings; // Separating out the interface puts it in a sub-module -use bindings::exports::docs::adder::add::Guest; +use crate::bindings::exports::docs::calculator::add::Guest; struct Component; @@ -114,7 +114,7 @@ impl Guest for Component { ## Importing an interface with `cargo component` -The world file (`wit/world.wit`) generated for you by `cargo component new --reactor` doesn't specify any imports. +The world file (`wit/world.wit`) generated for you by `cargo component new --lib` doesn't specify any imports. > `cargo component build`, by default, uses the Rust `wasm32-wasi` target, and therefore automatically imports any required WASI interfaces - no action is needed from you to import these. This section is about importing custom WIT interfaces from library components. @@ -155,12 +155,12 @@ Now the declaration of `add` in the adder's WIT file is visible to the `calculat ```rust // src/lib.rs -cargo_component_bindings::generate!(); +mod bindings; use bindings::exports::docs::calculator::calculate::Guest; // Bring the imported add function into scope -use bindings::docs::adder::add::add; +use bindings::docs::calculator::add::add; struct Component; @@ -203,7 +203,7 @@ To create a command with cargo component, run: cargo component new ``` -Unlike library components, this does _not_ have the `--reactor` flag. You will see that the created project is different too: +Unlike library components, this does _not_ have the `--lib` flag. You will see that the created project is different too: - It doesn't contain a `.wit` file. `cargo component build` will automatically export the `wasm:cli/run` interface for Rust `bin` packages, and hook it up to `main`. - Because there's no `.wit` file, `Cargo.toml` doesn't contain a `package.metadata.component.target` section. @@ -265,7 +265,6 @@ use bindings::docs::calculator::calculate::eval_expression; fn main() { let result = eval_expression("1 + 1"); println!("1 + 1 = {result}"); - std::thread::sleep(Duration::from_millis(10)); } ``` diff --git a/component-model/src/tutorial.md b/component-model/src/tutorial.md index ef796a4..0f8dde5 100644 --- a/component-model/src/tutorial.md +++ b/component-model/src/tutorial.md @@ -118,8 +118,8 @@ its `calculate` imports. The result is a command component that has all its impo exports the `wasi:cli/run` function, which can be executed by `wasmtime`. ```sh -wasm-tools compose calculator.wasm -d adder.wasm -o calculator.wasm -wasm-tools compose command.wasm -d composed.wasm -o command.wasm +wasm-tools compose calculator.wasm -d adder.wasm -o composed.wasm +wasm-tools compose command.wasm -d composed.wasm -o final.wasm ``` > If you'd prefer to take a more visual approach to composing components, see the [documentation on @@ -128,12 +128,12 @@ wasm-tools compose command.wasm -d composed.wasm -o command.wasm ## Running the calculator -Now it all adds up! Run the command component with the `wasmtime` CLI, ensuring you are using a +Now it all adds up! Run the final component with the `wasmtime` CLI, ensuring you are using a [`v14.0.0 or greater release](https://github.com/bytecodealliance/wasmtime/releases), as earlier releases of the `wasmtime` command line do not include component model support. ```sh -wasmtime run --wasm component-model command.wasm 1 2 add +wasmtime run --wasm component-model final.wasm 1 2 add 1 + 2 = 3 ``` From 33c5667a348409dad97e8a2c5fc08f4c14a18248 Mon Sep 17 00:00:00 2001 From: Dan Shields Date: Wed, 28 Feb 2024 13:02:44 -0700 Subject: [PATCH 009/175] MVP of HTML and node transpiled example --- .../examples/tutorial/www/README.md | 22 +++++++++++++++ .../examples/tutorial/www/cli-calc.js | 4 +++ .../examples/tutorial/www/index.html | 27 +++++++++++++++++++ .../examples/tutorial/www/package.json | 3 +++ 4 files changed, 56 insertions(+) create mode 100644 component-model/examples/tutorial/www/README.md create mode 100644 component-model/examples/tutorial/www/cli-calc.js create mode 100644 component-model/examples/tutorial/www/index.html create mode 100644 component-model/examples/tutorial/www/package.json diff --git a/component-model/examples/tutorial/www/README.md b/component-model/examples/tutorial/www/README.md new file mode 100644 index 0000000..047a5d4 --- /dev/null +++ b/component-model/examples/tutorial/www/README.md @@ -0,0 +1,22 @@ +# Browser & Node Demo + +## Calculator with `jco` + +Using [`jco`](https://github.com/bytecodealliance/jco/blob/main/docs/src/example.md) +See the [`jco` example](https://github.com/bytecodealliance/jco/blob/main/docs/src/example.md) that was used to create this minimal demo. + +```sh +(cd calculator && cargo component build --release) +(cd adder && cargo component build --release) +(cd command && cargo component build --release) +wasm-tools compose calculator/target/wasm32-wasi/release/calculator.wasm -d adder/target/wasm32-wasi/release/adder.wasm -o composed.wasm +wasm-tools compose command/target/wasm32-wasi/release/command.wasm -d composed.wasm -o command.wasm + +# We need to transpile to extract/generate bindings for JS +# We do want to *ommit* anything related to syscalls, that wasi wants +# Thus use the composed, not the command output. +jco transpile composed.wasm -o www +# Serve required files (index.html & jco genereated files minimally) +npx live-server www/ +`` +``` diff --git a/component-model/examples/tutorial/www/cli-calc.js b/component-model/examples/tutorial/www/cli-calc.js new file mode 100644 index 0000000..af598c5 --- /dev/null +++ b/component-model/examples/tutorial/www/cli-calc.js @@ -0,0 +1,4 @@ +// See the README for details on *generation* of the required import +import { calculate } from "./composed.js"; + +console.log("Answer (to life) = " + calculate.evalExpression("add", 21, 21)); diff --git a/component-model/examples/tutorial/www/index.html b/component-model/examples/tutorial/www/index.html new file mode 100644 index 0000000..6137858 --- /dev/null +++ b/component-model/examples/tutorial/www/index.html @@ -0,0 +1,27 @@ + + + +