Skip to content

Rebuild example-host/add.wasm from tutorial/adder project#333

Merged
vados-cosmonic merged 1 commit into
bytecodealliance:mainfrom
ohAitch:rebuild-wasm
Mar 5, 2026
Merged

Rebuild example-host/add.wasm from tutorial/adder project#333
vados-cosmonic merged 1 commit into
bytecodealliance:mainfrom
ohAitch:rebuild-wasm

Conversation

@ohAitch
Copy link
Copy Markdown
Contributor

@ohAitch ohAitch commented Mar 5, 2026

$ cargo run --release -- 1 2 add.wasm
    Finished `release` profile [optimized] target(s) in 0.14s
     Running `target/release/example-host 1 2 add.wasm`
Error: Failed to instantiate the example world

Caused by:
    no exported instance named `docs:adder/add@0.1.0`
$ cp ../tutorial/adder/target/wasm32-wasip2/release/adder.wasm add.wasm
$ cargo run --release -- 1 2 add.wasm
    Finished `release` profile [optimized] target(s) in 0.10s
     Running `target/release/example-host 1 2 add.wasm`
1 + 2 = 3

context

//wasm-tools component wit example-host/add.wasm
package root:component;

world root {
  export add: func(x: s32, y: s32) -> s32;
}

//cat tutorial/wit/adder/world.wit
package docs:adder@0.1.0;

interface add {
    add: func(x: u32, y: u32) -> u32;
}

world adder {
    export add;
}

```sh
$ cargo run --release -- 1 2 add.wasm
    Finished `release` profile [optimized] target(s) in 0.14s
     Running `target/release/example-host 1 2 add.wasm`
Error: Failed to instantiate the example world

Caused by:
    no exported instance named `docs:adder/add@0.1.0`
$ cp ../tutorial/adder/target/wasm32-wasip2/release/adder.wasm add.wasm
$ cargo run --release -- 1 2 add.wasm
    Finished `release` profile [optimized] target(s) in 0.10s
     Running `target/release/example-host 1 2 add.wasm`
1 + 2 = 3
```

context

```wit
//wasm-tools component wit example-host/add.wasm
package root:component;

world root {
  export add: func(x: s32, y: s32) -> s32;
}

//cat tutorial/wit/adder/world.wit
package docs:adder@0.1.0;

interface add {
    add: func(x: u32, y: u32) -> u32;
}

world adder {
    export add;
}
```
@ohAitch ohAitch requested a review from vados-cosmonic as a code owner March 5, 2026 10:38
@vados-cosmonic
Copy link
Copy Markdown
Collaborator

Hey @ohAitch thanks for getting on this so fast! Did this not require any changes to the adder code? I think I'm a little confused about why there's only the new binary rather than some code changes along with

ohAitch added a commit to ohAitch/component-docs that referenced this pull request Mar 5, 2026
TODO deduplicate with add.wasm see bytecodealliance#333

```sh
cd component-model/examples/example-c-host
gcc -o host host.c -lwasmtime && ./host 6 7 adder.wasm
```

Co-authored-by: Shelley <shelley@exe.dev>
@ohAitch ohAitch mentioned this pull request Mar 5, 2026
@ohAitch
Copy link
Copy Markdown
Contributor Author

ohAitch commented Mar 5, 2026

I think what happened is the wit changes made it into the rust client source and made it into the rust host source but the artefact was not checked in.
This was literally just me hitting rebuild in the client and copying it over, if it works it works…

Copy link
Copy Markdown
Collaborator

@vados-cosmonic vados-cosmonic left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM 🚀

Thanks for this @ohAitch !

@vados-cosmonic vados-cosmonic merged commit f69a5bf into bytecodealliance:main Mar 5, 2026
8 checks passed
ohAitch added a commit to ohAitch/component-docs that referenced this pull request Mar 5, 2026
TODO deduplicate with add.wasm see bytecodealliance#333

```sh
cd component-model/examples/example-c-host
gcc -o host host.c -lwasmtime && ./host 6 7 adder.wasm
```

Co-authored-by: Shelley <shelley@exe.dev>
ohAitch added a commit to ohAitch/component-docs that referenced this pull request Apr 15, 2026
TODO deduplicate with add.wasm see bytecodealliance#333

```sh
cd component-model/examples/example-c-host
gcc -o host host.c -lwasmtime && ./host 6 7 adder.wasm
```

Co-authored-by: Shelley <shelley@exe.dev>
kate-goldenring added a commit that referenced this pull request Apr 22, 2026
* Proof of concept C host

TODO deduplicate with add.wasm see #333

```sh
cd component-model/examples/example-c-host
gcc -o host host.c -lwasmtime && ./host 6 7 adder.wasm
```

Co-authored-by: Shelley <shelley@exe.dev>

* (reproducibility) add Dockerfile

I had some difficulty setting up the C toolchains, here's everything pinned down as a sanity check

```sh
docker build -t example-c-host .
docker run example-c-host
```

Co-authored-by: Shelley <shelley@exe.dev>

* Revise instructions for running components in C/C++

Documentation is not my forté but the current "running things from C is impossible due to #issue (closed)" is _definitely_ out of date.

Needs revision into a more helpful pointer to the code introduced in this PR, whatever its project name and contents shall end up being. Possibly broken out into a separate .md fragments like the rust one, possibly that was only necessary to share instructions with rust.md and the existence of the c/c++ host can stay local to this file.

* Suggested updates to proof of concept C host documentation

- Fills in documentation on how to use the C host
- Updates Dockerfile to be cross architecture
- Adds a new Dockerfile that is just the host

Signed-off-by: Kate Goldenring <kgoldenr@akamai.com>

* Add wasmtime invoke to the C docs

Signed-off-by: Kate Goldenring <kgoldenr@akamai.com>

* Simplify Dockerfiles: drop guest_and_host, rename to Dockerfile, use volume mount

- Delete Dockerfile.guest_and_host (broken wasi-sdk arch mapping; unnecessary
  now that upstream add.wasm is available via rebase)
- Rename Dockerfile.host → Dockerfile
- Fix missing trailing newline
- Update c.md: remove guest_and_host references, fix Docker instructions
  to use volume mount with $(pwd)-relative path

Co-authored-by: Shelley <shelley@exe.dev>

* Add CI workflow for C host example

Tests both the native build (gcc + wasmtime C API) and the Docker
workflow against the checked-in add.wasm.

Co-authored-by: Shelley <shelley@exe.dev>

---------

Signed-off-by: Kate Goldenring <kgoldenr@akamai.com>
Co-authored-by: Shelley <shelley@exe.dev>
Co-authored-by: Kate Goldenring <kgoldenr@akamai.com>
Co-authored-by: exe.dev user <exedev@wasm-component-test.exe.xyz>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants