5 Commits

Author SHA1 Message Date
Alex Crichton
a2935a4fa4 Update wit-bindgen for upcoming WIT changes (#580)
* Update Rust codegen for new WIT changes

* Update the markdown generation for new WIT

* more-rust

* Update the C generator for new WIT

* Get Rust guest tests compiling

* Get rust host tests working

* Get all C tests passing

* Turn off teavm-java and Go tests for now

* Fixup lockfile after rebase

* Bump crate versions

* Update dependency sources

* Update to wasmtime dep
2023-05-26 12:30:24 -05:00
Alex Crichton
d7b870268e Update the wit-{component,parser} crates (#457)
* Update the Rust guest generator

This commit updates the `wit-parser` and `wit-component` dependencies to
the latest 0.4.0 versions on crates.io, namely pulling in support for
`use`. This updates the `*.wit` codegen tests and gets all the codegen
tests working for the `gen-guest-rust` crate. This does not get the
entire repository's tests running.

The major changes here are:

* The `WorldGenerator` trait has been adapted for worlds and the new
  APIs of `wit-parser`.
* The Rust guest generator now supports bare function imports as well as
  bare function exports.
* The syntax in the Rust macro now mirrors the syntax in the Wasmtime
  `bindgen!` macro where `generate!("foo")` will look for the document
  `foo.wit` in `$CARGO_MANIFEST_DIR/wit/foo.wit` and look for a `default
  world` inside there.
* The codegen and runtime macros have been refactored to get separated
  and additionally have conditional compilation working so one generator
  can be tested in isolation without requiring all others working.
* The `rust-macro-shared` crate is now removed since Wasmtime no longer
  resides here and it's merged directly into the `guest-rust-macro`
  crate. Note that many changes happened here since the macro syntax and
  integration with `wit-parser` has changed.

Note that no new tests were added in this commit, and that'll be a
follow-up.

* Add support for using types across interfaces to Rust

* Support renaming interfaces in imports

* Get all codegen tests for JS passing again

* Fix build of wasi_snapshot_preview1 for this repo

* Get unions tests building again

* Get the flavorful test compiling again

* Get the records test compiling again

* Get the many arguments test compiling again

* Get the smoke test compiling again

* Get numbers test compiling again

* Get list test compiling again

* Get variants test compiling again

* Get results test compiling again

* Get invalid test compiling again

* Get all runtime JS tests passing

Change a few bits and pieces of the JS host generator as necessary and
temporarily disable other guest generators.

* Use git repo for wit-{component,parser} patch

* Update C generator for new WIT

* Get the bare bones of teavm-java working

Runtime tests will need some more work to get passing.

* Get CLI and markdown crate building again

* Update build of demo

* Use updated crates.io dep for wit-component

* fix Java runtime test regressions (#1)

Signed-off-by: Joel Dice <joel.dice@fermyon.com>

Signed-off-by: Joel Dice <joel.dice@fermyon.com>

* Update wasm-tools on CI

* Review comments

Signed-off-by: Joel Dice <joel.dice@fermyon.com>
Co-authored-by: Joel Dice <joel.dice@fermyon.com>
2023-01-20 15:41:38 -06:00
Alex Crichton
0220c9593c Migrate all tests to using world-file-syntax (#432)
* Update all codegen tests to world syntax

This enables simplifying codegen tests as well by having each test
exercise imports/exports instead of having all code generators have one
case for imports and one for exports.

* Update codegen tests for the C guest generator

* Update teavm codegen tests for worlds

* Remove the `--name` argument from the CLI

No longer needed as the name is inferred from the `*.wit` world.

* Get all js host generator tests working

Update all `runtime/*` tests with new naming conventions, world files,
etc. Minor updates were made to names as I ended up using different
conventions for the `*.wit` world files than were previously exercised.

This also fixes a few minor issues with the output for the JS generator
in the default ESM mode.

* Get all host-wasmtime tests working with worlds

Various small updates here and there to namings and such.

* Get all Python tests working with worlds

Fix support for exported instances by using correct import paths for
various types/intrinsics/etc. Additionally update the codegen tests to
specify a mypy cache dir to avoid racing between tests.

* Update demo build for worlds

Also fix an issue with the Rust host generator where it used an
interface's name instead of the name of the import for import module names.

* Update demo with world files
2022-11-15 17:16:09 -06:00
Kyle Brown
7f66bd7af6 Replace function with func (#232)
* Implement #163

* Update component to wit printing to use func instead of function

* Run rustfmt

Co-authored-by: Kyle Brown <kyleb@liquidrocketry.com>
2022-06-09 14:22:00 -05:00
Alex Crichton
093608ffcb Rename *.wai to *.wit
This commit applies the renaming from the last WASI meeting to rename
the `*.wai` format (previously `*.witx`) to `*.wit`.
2021-12-01 12:52:09 -08:00