|
Revision tags: dev, v36.0.9, v44.0.1, v43.0.2, v36.0.8, v24.0.8, v44.0.0, v43.0.1, v42.0.2, v36.0.7, v24.0.7, v43.0.0 |
|
| #
133a0ef4 |
| 13-Mar-2026 |
Chris Fallin <[email protected]> |
Debugging: add the debug-main world. (#12756)
* Debugging: add the debug-main world.
This PR "draws the rest of the owl" for the debug-main world (bytecodealliance/rfcs#45). This includes a WIT wor
Debugging: add the debug-main world. (#12756)
* Debugging: add the debug-main world.
This PR "draws the rest of the owl" for the debug-main world (bytecodealliance/rfcs#45). This includes a WIT world that hosts debug components that have access to "host debug powers" via a debugging API, and the ability to load such a debug-component and give it control of the main program as a debuggee when using `wasmtime run`.
The WIT is namespaced to `bytecodealliance:wasmtime` and is slightly aspirational in places: for example, the host does not yet implement injection of early return values or exception-throws. I intend to fill out a series of TODO issues once this all lands to track followup ("post-MVP") work.
This PR does not include any debug components. I separately have a gdbstub component, with which I tested and co-developed this host-side implementation. My plan is to land it in a followup PR as a component that will be embedded in/shipped with the Wasmtime CLI and available under an easy-to-use CLI option. Once we have that gdbstub component, we can also implement end-to-end integration tests that boot up LLDB and run through an expected interaction. (Separately, those integration tests will require a release of wasi-sdk to ship an LLDB binary that we can use.) As such, there are no real tests in this PR: interesting behaviors only really occur with a full end-to-end flow.
The integration with the CLI is a little awkward (we internally build another `wasmtime run` command that invokes the debug component, and tie it together with the debuggee via a special `invoke_debugger` API; this seemed less bad than reworking all of the WASI setup to be more reusable). Happy to take more ideas here.
* Review feedback.
* Review feedback.
* Review feedback: update vendor-wit.sh.
* Review feedback: -Ddebugger-arg= -> -Darg=.
* Review feedback.
* Review feedback.
* Review feedback: factor host.rs into several submodules.
* Review feedback: rename Debugger to Debuggee on host side.
* Review feedback: split inherit_stdin_stdout, and add corresponding options for the debug component.
* Review feedback.
* Review feedback.
* Add simple debug-component tests.
* Add wasm32-wasip2 target in a few places in CI
* Cargo vets for wstd dependency.
* Add wasm32-wasip2 in more places
* fix debug-component test dependence on componentization byte offsets
* Review feedback.
* Fix cancel-safety of EventFuture.
* Fix: Interrupted events should only occur after interrupt(), not on every epoch yield.
* Review feedback.
* Review feedback: strip down WASI imports in debugger world.
* fold debugger test component back into wasip1 + adapter test artifact compilation flow
show more ...
|
|
Revision tags: v42.0.1, v41.0.4, v42.0.0, v40.0.4, v36.0.6, v24.0.6 |
|
| #
b298f375 |
| 13-Feb-2026 |
Arjun Ramesh <[email protected]> |
RR #2: Sha256 checksum for components (#12576)
* Add sha256 checksum for component for record/replay consistency
* Move sha2 crate as workspace dependency
* Run checksum digest only on recording c
RR #2: Sha256 checksum for components (#12576)
* Add sha256 checksum for component for record/replay consistency
* Move sha2 crate as workspace dependency
* Run checksum digest only on recording configs
* Fix CI error and restructure from_binary
show more ...
|
|
Revision tags: v41.0.3, v41.0.2, v41.0.1, v36.0.5, v40.0.3, v41.0.0, v36.0.4, v39.0.2, v40.0.2, v40.0.1, v40.0.0 |
|
| #
fee9be21 |
| 09-Dec-2025 |
Alex Crichton <[email protected]> |
Add a new fuzzer focused on component-model-async events (#12119)
* Add a new fuzzer focused on component-model-async events
This commit adds a new fuzzer mode to the `misc` fuzzer of Wasmtime whic
Add a new fuzzer focused on component-model-async events (#12119)
* Add a new fuzzer focused on component-model-async events
This commit adds a new fuzzer mode to the `misc` fuzzer of Wasmtime which is focused on async events and interleavings of components using the component-model-async proposal. This fuzzer works by having a precompiled guest program which serves as the component to run. This precompiled component has a custom `fuzz.wit` which is used to interface with the fuzzer itself. The fuzzer is then a fuzz-generated sequence of commands to send to the component which verifies that everything executes correctly, has no panics, etc.
This fuzzer intends to stress async communication and task infrastructure with component-model-async. Notably this does not stress lifting/lowering or arbitrary type signatures. This does, however, permute all of the following:
* Guest/host interactions (also guest/guest, host/host, etc). * Async functions, both ready and pending. * Future operations: reads, writes, cancellation, transfers, etc. * Stream operations: reads, writes, cancellation, transfers, etc.
This is all throwing into a large "soup" and then asserted to work correctly. There's a few gotchas here and there for how this fuzzer is designed, such as some events requiring "yield N times to await this event happening". This is required because Wasmtime is allowed to non-deterministically select between a number of "ready events" and what to dispatch.
This is not intended to be a one-size-fits-all fuzzer for component-model-async. The recent enhancements to the `component_api` fuzzer are intended to complement this fuzzer in terms of what's stressed where internally.
* Review comments
show more ...
|
| #
69ef9afc |
| 05-Dec-2025 |
Alex Crichton <[email protected]> |
Update to using `wasip1`-the-crate (#12131)
Switch away from `wasi`, which while it isn't changing might as well be explicit.
|
|
Revision tags: v39.0.1, v39.0.0 |
|
| #
020727d0 |
| 14-Nov-2025 |
Alex Crichton <[email protected]> |
Update wasm-tools dependencies (#12031)
* Change separator style
* Update wasm-tools dependencies
* Also update wit-bindgen * Drop `[async]` name prefixes * Plumb `async` as part of a function ty
Update wasm-tools dependencies (#12031)
* Change separator style
* Update wasm-tools dependencies
* Also update wit-bindgen * Drop `[async]` name prefixes * Plumb `async` as part of a function type
Runtime handling of async functions and new traps are to be implemented in subsequent commits. This is just getting everything running again.
* Run clang-format, also add test
* Fix some more wast tests
---------
Co-authored-by: Sy Brand <[email protected]>
show more ...
|
|
Revision tags: v38.0.4, v37.0.3, v36.0.3, v24.0.5, v38.0.3, v38.0.2, v38.0.1, v37.0.2, v37.0.1, v37.0.0 |
|
| #
bbea2c46 |
| 10-Sep-2025 |
Alex Crichton <[email protected]> |
Use `wasip{1,2}` crates, not `wasi` (#11673)
These are the new structure for how the `wasi-rs` repository is managed.
|
| #
1047b511 |
| 04-Sep-2025 |
Alex Crichton <[email protected]> |
Update wit-bindgen to 0.45.0 (#11609)
* Update wit-bindgen to 0.45.0
Pulling in recent changes
* Add vets
* Remove dead imports
|
|
Revision tags: v36.0.2, v36.0.1, v36.0.0, v35.0.0, v24.0.4, v33.0.2, v34.0.2 |
|
| #
804060c8 |
| 11-Jul-2025 |
Joel Dice <[email protected]> |
add Component Model async ABI tests (#11136)
* add Component Model async ABI tests
This pulls in the tests from the `wasip3-prototyping` repo, minus the ones requiring WASIp3 support in `wasmtime-w
add Component Model async ABI tests (#11136)
* add Component Model async ABI tests
This pulls in the tests from the `wasip3-prototyping` repo, minus the ones requiring WASIp3 support in `wasmtime-wasi[-http]`, which will be PR'd separately.
* add audits and exemptions for new `component-async-tests` deps
In order to convince `cargo vet` that we only needed these deps to be `safe-to-run` (not necessarily `safe-to-deploy`, since it's test code), I've moved the `wasm-compose` dep to the `dev-dependencies` section of the `Cargo.toml` file, which required rearranging some code.
I've exempted `wasm-compose` since it's a BA project, and also exempted all but one of the remaining new deps since they each get well over 10,000 downloads per day from crates.io. I've audited and certified the remaining dep, `im-rc`, which came in a bit shy of the 10,000-per-day mark.
Signed-off-by: Joel Dice <[email protected]>
* simplify `component_async_tests::util::sleep`
Signed-off-by: Joel Dice <[email protected]>
---------
Signed-off-by: Joel Dice <[email protected]>
show more ...
|
|
Revision tags: v34.0.1, v33.0.1, v24.0.3, v32.0.1, v34.0.0, v33.0.0, v32.0.0, v31.0.0 |
|
| #
8e883429 |
| 20-Mar-2025 |
Alex Crichton <[email protected]> |
Update some dependencies on their major version tracks (#10425)
* Update rustix to 1.0.x
* Bump itertools to its latest version
* Update base64 to its latest version
* Update wit-bindgen to its l
Update some dependencies on their major version tracks (#10425)
* Update rustix to 1.0.x
* Bump itertools to its latest version
* Update base64 to its latest version
* Update wit-bindgen to its latest version
* Update v8 to its latest version on crates.io
Just keeping up-to-date
* Update capstone dependency to its latest version
* Update libtest-mimic to its latest version
* Update cargo-metadata dependency
* Update thiserror dependency to latest
* Update bytesize dependency
* Drop getrandom dependency from test-programs
Favor using `wasi::random_get` instead for now.
* Fix deny.toml syntax
* Fix merge conflict
* Downgrade v8 to respect MSRV
* Fix compile on windows
show more ...
|
| #
953adeed |
| 19-Mar-2025 |
Alex Crichton <[email protected]> |
Rename `wasi` crate to `wasip1` in test-programs (#10426)
This better reflects how the test programs currently have access to both versions, so make sure they're both named to disambiguate against t
Rename `wasi` crate to `wasip1` in test-programs (#10426)
This better reflects how the test programs currently have access to both versions, so make sure they're both named to disambiguate against the other.
show more ...
|
|
Revision tags: v30.0.2, v30.0.1, v30.0.0, v29.0.1 |
|
| #
7ba03476 |
| 21-Jan-2025 |
Alex Crichton <[email protected]> |
Fix a missing increment in p1-to-p2 adapter (#10064)
This commit fixes a bug in the WASIp1-to-WASIp2 adapter during `fd_prestat_dir_name` where an iterator variable was forgotten to be incremented.
Fix a missing increment in p1-to-p2 adapter (#10064)
This commit fixes a bug in the WASIp1-to-WASIp2 adapter during `fd_prestat_dir_name` where an iterator variable was forgotten to be incremented. That means that getting the path for anything other than the first preopen didn't work correctly.
Closes #10058
show more ...
|
|
Revision tags: v29.0.0, v28.0.1, v28.0.0, v27.0.0, v26.0.1, v25.0.3, v24.0.2, v26.0.0, v21.0.2, v22.0.1, v23.0.3, v25.0.2, v24.0.1, v25.0.1, v25.0.0, v24.0.0, v23.0.2 |
|
| #
83029e3f |
| 12-Aug-2024 |
Alex Crichton <[email protected]> |
Add `rust-version.workspace = true` to all crates (#9112)
Right now this is only on some crates such as `wasmtime` itself and `wasmtime-cli`, but by applying it to all crates it helps with version s
Add `rust-version.workspace = true` to all crates (#9112)
Right now this is only on some crates such as `wasmtime` itself and `wasmtime-cli`, but by applying it to all crates it helps with version selection of those using just Cranelift for example.
show more ...
|
|
Revision tags: v23.0.1, v23.0.0, v22.0.0, v21.0.1, v21.0.0, v20.0.2, v20.0.1 |
|
| #
d8f7c77f |
| 25-Apr-2024 |
Alex Crichton <[email protected]> |
Start migrating some Wasmtime crates to no_std (#8463)
* Start migrating some Wasmtime crates to no_std
This commit is the first in what will be multiple PRs to migrate Wasmtime to being compatible
Start migrating some Wasmtime crates to no_std (#8463)
* Start migrating some Wasmtime crates to no_std
This commit is the first in what will be multiple PRs to migrate Wasmtime to being compatible with `#![no_std]`. This work is outlined in #8341 and the rough plan I have in mind is to go on a crate-by-crate basis and use CI as a "ratchet" to ensure that `no_std` compat is preserved. In that sense this PR is a bit of a template for future PRs.
This PR migrates a few small crates to `no_std`, basically those that need no changes beyond simply adding the attribute. The nontrivial parts introduced in this PR are:
* CI is introduced to verify that a subset of crates can indeed be built on a `no_std` target. The target selected is `x86_64-unknown-none` which is known to not have `std` and will result in a build error if it's attempted to be used.
* The `anyhow` crate, which `wasmtime-jit-icache-coherence` now depends on, has its `std` feature disabled by default in Wasmtime's workspace. This means that some crates which require `std` now need to explicitly enable the feature, but it means that by-default its usage is appropriate for `no_std`.
The first point should provide CI checks that compatibility with `no_std` indeed works, at least from an "it compiles" perspective. Note that it's not sufficient to test with a target like `x86_64-unknown-linux-gnu` because `extern crate std` will work on that target, even when `#![no_std]` is active.
The second point however is likely to increase maintenance burden in Wasmtime unfortunately. Namely we'll inevitably, either here or in the future, forget to turn on some feature for some crate that's not covered in CI checks. While I've tried to do my best here in covering it there's no guarantee that everything will work and the combinatorial explosion of what could be checked in CI can't all be added to CI. Instead we'll have to rely on bug fixes, users, and perhaps point releases to add more use cases to CI over time as we see fit.
* Add another std feature
* Another std feature
* Enable anyhow/std for another crate
* Activate `std` in more crates
* Fix miri build
* Fix compile on riscv64
prtest:full
* Fix min-platform example build
* Fix icache-coherence again
show more ...
|
|
Revision tags: v20.0.0, v17.0.3, v19.0.2, v18.0.4, v19.0.1, v19.0.0, v18.0.3, v18.0.2, v17.0.2, v18.0.1, v18.0.0, v17.0.1, v17.0.0, v16.0.0 |
|
| #
54d3727a |
| 15-Dec-2023 |
Andrew Brown <[email protected]> |
wasi-nn: adapt to new test infrastructure (#7679)
* wasi-nn: add test programs
This change adds new test programs for wasi-nn in a way fits in with the existing WASI test infrastructure. The code i
wasi-nn: adapt to new test infrastructure (#7679)
* wasi-nn: add test programs
This change adds new test programs for wasi-nn in a way fits in with the existing WASI test infrastructure. The code is not new, though: this reuses the wasi-nn `examples`, which are currently used by the `run-wasi-nn-example.sh` CI script. Eventually the examples will be removed in favor of these tests.
Because wasi-nn's component model support is still in flight, this change also skips the generation of components for `nn_`-prefixed tests.
* wasi-nn: add `testing` module
This testing-only module has code (i.e., `check_test!`) to check whether OpenVINO and some test artifacts are available. The test artifacts are downloaded and cached if not present, expecting `curl` to be present on the command line (as discussed in the previous version of this, #6895).
* wasi-nn: run `nn_*` test programs as integration tests
Following the pattern of other WASI crates, this change adds the necessary infrastructure to run the `nn_*` files in `crates/test-programs` (built by `test-program-artifacts`). These tests are only run when two sets of conditions are true: - statically: we only run these tests where we expect OpenVINO to be easy to install and run (e.g., the `cfg_attr` parts) - dynamically: we also only run these tests when the OpenVINO libraries can be located and the model artifacts can be downloaded
* ci: install OpenVINO for running wasi-nn tests
prtest:full
* vet: certify the `wasi-nn` crate
* ci: remove wasi-nn test script
show more ...
|
|
Revision tags: v15.0.1 |
|
| #
5856590f |
| 20-Nov-2023 |
Alex Crichton <[email protected]> |
Configure workspace lints, enable running some Clippy lints on CI (#7561)
* Configure Rust lints at the workspace level
This commit adds necessary configuration knobs to have lints configured at th
Configure workspace lints, enable running some Clippy lints on CI (#7561)
* Configure Rust lints at the workspace level
This commit adds necessary configuration knobs to have lints configured at the workspace level in Wasmtime rather than the crate level. This uses a feature of Cargo first released with 1.74.0 (last week) of the `[workspace.lints]` table. This should help create a more consistent set of lints applied across all crates in our workspace in addition to possibly running select clippy lints on CI as well.
* Move `unused_extern_crates` to the workspace level
This commit configures a `deny` lint level for the `unused_extern_crates` lint to the workspace level rather than the previous configuration at the individual crate level.
* Move `trivial_numeric_casts` to workspace level
* Change workspace lint levels to `warn`
CI will ensure that these don't get checked into the codebase and otherwise provide fewer speed bumps for in-process development.
* Move `unstable_features` lint to workspace level
* Move `unused_import_braces` lint to workspace level
* Start running Clippy on CI
This commit configures our CI to run `cargo clippy --workspace` for all merged PRs. Historically this hasn't been all the feasible due to the amount of configuration required to control the number of warnings on CI, but with Cargo's new `[lint]` table it's possible to have a one-liner to silence all lints from Clippy by default. This commit by default sets the `all` lint in Clippy to `allow` to by-default disable warnings from Clippy. The goal of this PR is to enable selective access to Clippy lints for Wasmtime on CI.
* Selectively enable `clippy::cast_sign_loss`
This would have fixed #7558 so try to head off future issues with that by warning against this situation in a few crates. This lint is still quite noisy though for Cranelift for example so it's not worthwhile at this time to enable it for the whole workspace.
* Fix CI error
prtest:full
show more ...
|
|
Revision tags: v15.0.0, v14.0.4, v14.0.3, v14.0.2, v13.0.1, v14.0.1, v14.0.0 |
|
| #
cc3bf3c0 |
| 18-Oct-2023 |
Joel Dice <[email protected]> |
wasi-http: Allow embedder to manage outgoing connections (#7288)
This adds a new `send_request` method to `WasiHttpView`, allowing embedders to override the default implementation with their own if
wasi-http: Allow embedder to manage outgoing connections (#7288)
This adds a new `send_request` method to `WasiHttpView`, allowing embedders to override the default implementation with their own if the desire. The default implementation behaves exactly as before.
I've also added a few new `wasi-http` tests: one to test the above, and two others to test streaming and concurrency. These tests are ports of the `test_wasi_http_echo` and `test_wasi_http_hash_all` tests in the [Spin](https://github.com/fermyon/spin) integration test suite. The component they instantiate is likewise ported from the Spin `wasi-http-rust-streaming-outgoing-body` component.
Fixes #7259
Signed-off-by: Joel Dice <[email protected]>
show more ...
|
| #
f4be3606 |
| 09-Oct-2023 |
Alex Crichton <[email protected]> |
Refactor the test-programs test suite (#7182)
* Refactor the test-programs test suite
This commit is a large refactoring that reorganizes `test-programs` and how we tests wasms in Wasmtime. Often w
Refactor the test-programs test suite (#7182)
* Refactor the test-programs test suite
This commit is a large refactoring that reorganizes `test-programs` and how we tests wasms in Wasmtime. Often writing tests requires complicated interactions with the guest which can't be done via hand-written `*.wat` syntax and requires a compiler to get engaged. For this purpose Wasmtime currently has the `crates/test-programs/*` test suite which builds files from source and then runs the tests. This has been somewhat cumbersome in the past though and it's not been easy to extend this over time, so this commit attempts to address this.
The scheme implemented in this PR looks like:
* All wasm test programs live in `crates/test-programs/src/bin/*.rs`. All of them, no exceptions.
* Wasm tests have shared support located at `crates/test-programs/src/lib.rs` and its submodules, such as bindings generation for WASI.
* Wasm tests are built by a new `crates/test-programs/artifacts` crate. This crate compiles modules and additionally creates components for all test programs. The crate itself only records the path to these outputs and a small amount of testing support, but otherwise doesn't interact with `wasmtime`-the-crate itself.
* All tests in `crates/test-programs/tests/*.rs` have moved. For example wasi-http tests now live at `crates/wasi-http/tests/*.rs`. Legacy tests of wasi-common now live at `crates/wasi-common/tests/*.rs`. Modern tests for preview2 live at `crates/wasi/tests/*.rs`.
* Wasm tests are bucketed based on their filename prefix. For example `preview1_*` is tested in wasi-common and wasmtime-wasi. The `preview2_*` prefix is only tested with wasmtime-wasi, however.
* A new `cli_*` prefix is used to execute tests as part of `tests/all/main.rs`. This is a new submodule in `tests/all/cli_tests.rs` which executes these components on the command line. Many old "command" tests were migrated here.
* Helper macros are generated to assert that a test suite is run in its entirety. This way if a `preview1_*` test is added it's asserted to get added to both wasi-common and wasmtime-wasi in the various modes they run tests.
Overall this moved a number of tests around and refactored some edges of the tests, but this should not lose any tests (except one that wasn't actually testing anything). Additionally the hope is that it's much easier to add tests in the future. The process is to add a new file in `crates/test-programs/src/bin/*.rs` named appropriately. For example a preview2 executable is `preview2_*` and a CLI tests is `cli_*`. When building the test suite an error is generated in the appropriate module then of "please write a test here", and then a test is written in the same manner as the other tests in the module.
* Remove no-longer-needed fetches
prtest:full
* I'm worried wasi is running low on semicolons
* Add the WASI target in all CI actions
* Add unknown-unknown target on all CI builders too
* Fix building test artifacts under miri
Need to avoid wrappers for these cross-compiled targets
* Break circular dependency for packaging
Don't use the workspace dep for `wasmtime-wasi` since it injects a version, instead use a `path = '..'` dependency to fool Cargo into dropping the dependency during the package phase.
* Fix some merge conflicts with tests
* Fix rebase for new tests
* Remove stray comment
* Fix some flaky tests
* Fix network tests in synchronous mode
This commit is an attempt to fix some networking tests in synchronous mode in our test suite. Currently networking tests don't actually run in synchronous mode on CI which is why no failures have been surfaced yet, but the refactoring in #7182 is going to start doing this.
Currently the `udp_sample_application.rs` test blocks infinitely in synchronous mode for me locally, most of the time. This appears to be an interaction between how Tokio handles readiness and how we're entering the event loop. We're effectively entering the Tokio event loop with a future that's always ready which ends up starving Tokio of otherwise performing its background work such as updating flags for readiness of reading/writing.
The fix here is to add a yield at the start of an `in_tokio` block which is used in synchronous mode. This is a kludge fix but the intention is to enable Tokio to have a chance to update readiness flags and process events from epoll/kqueue/etc.
An additional fix to this issue is WebAssembly/wasi-sockets#64 where the test is waiting on `READABLE` or `WRITABLE`, but in this specific case it should only wait on `READABLE`. If it waited on just this then that would also fix this issue. Nevertheless having a `yield_now` is expected to have little-to-no overhead and otherwise fix this edge case of an always-ready future.
* Fix passing empty arguments on the CLI
* Add another blocking accept
* Update crates/test-programs/src/bin/api_proxy.rs
Co-authored-by: Trevor Elliott <[email protected]>
---------
Co-authored-by: Trevor Elliott <[email protected]>
show more ...
|
| #
11a66086 |
| 29-Sep-2023 |
Alex Crichton <[email protected]> |
Remove usage of `is-terminal` and `atty` crates (#7104)
* Remove usage of `is-terminal` and `atty` crates
This functionality is now folded into the standard library itself.
* Fix syntax
* Fix a u
Remove usage of `is-terminal` and `atty` crates (#7104)
* Remove usage of `is-terminal` and `atty` crates
This functionality is now folded into the standard library itself.
* Fix syntax
* Fix a unix/windows cfg
show more ...
|
| #
8a88ff6e |
| 28-Sep-2023 |
Pat Hickey <[email protected]> |
Wasi-http: support inbound requests (proxy world) (#7091)
* Move the incoming_handler impl into http_impl
* Remove the incoming handler -- we need to use it as a guest export
* Start adding a test
Wasi-http: support inbound requests (proxy world) (#7091)
* Move the incoming_handler impl into http_impl
* Remove the incoming handler -- we need to use it as a guest export
* Start adding a test-programs test for the server side of wasi-http
* Progress towards running a server test
* Implement incoming-request-method
* Validate outparam value
* Initial incoming handler test
* Implement more of the incoming api
* Finish the incoming api implementations
* Initial cut at `wasmtime serve`
* fix warning
* wasmtime-cli: invoke ServeCommand, and add enough stuff to the linker to run trivial test
* fix warnings
* fix warnings
* argument parsing: allow --addr to specify sockaddr
* rustfmt
* sync wit definitions between wasmtime-wasi and wasmtime-wasi-http
* cargo vet: add an import config and wildcard audit for wasmtime-wmemcheck
* cargo vet: audit signal-hook-registry
* Remove duplicate add_to_linker calls for preview2 interfaces
prtest:full
* Add a method to finish outgoing responses
Co-authored-by: Adam Foltzer <[email protected]> Co-authored-by: Pat Hickey <[email protected]>
* Mark the result of the incoming_{request,response}_consume methods as own
* Explicit versions for http-body and http-body-util
* Explicit `serve` feature for the `wasmtime serve` command
* Move the spawn outside of the future returned by `ProxyHandler::call`
* Review feedback
---------
Co-authored-by: Trevor Elliott <[email protected]> Co-authored-by: Adam Foltzer <[email protected]>
show more ...
|
|
Revision tags: minimum-viable-wasi-proxy-serve, v13.0.0, v12.0.2, v11.0.2, v10.0.2 |
|
| #
a0469b11 |
| 12-Sep-2023 |
Pat Hickey <[email protected]> |
WASI preview 2 output-streams: new backpressure and flushing design (#6877)
* Stream backpressure v2
Co-authored-by: Pat Hickey <[email protected]> Co-authored-by: Trevor Elliott <telliott@fastly.
WASI preview 2 output-streams: new backpressure and flushing design (#6877)
* Stream backpressure v2
Co-authored-by: Pat Hickey <[email protected]> Co-authored-by: Trevor Elliott <[email protected]> Co-authored-by: Dan Gohman <[email protected]>
Stop testing pseudocode
Restructure when notifications are sent, and make sure to flush the writer
Fix the wasi-http module versions of flush and blocking_flush
Use blocking_write_and_flush for blocking writes in the adapters
Fix a warning in wasi-http
Remove an unused DropPollable
add comment explaining try_write for tcpstream
refactor: separate struct for representing TcpReadStream
by factoring into HostTcpSocket a little bit
tcp read stream: handle stream closing
tcp tests: use blocking_read where its expecting to wait for input
move common test body into wasi-sockets-tests/src/lib.rs
ensure parent socket outlives pollable
input and output streams can be children now
tcp's streams are the sockets children
tcp.wit: document child relationships
tcp tests: fix to drop socket after its child streams
review feedback: propogate worker task panic
style
error source fix
tcp: use preview2::spawn, and propogate worker panics
join handle await always propogates panic
background task handles ewouldblock as well
document choice of constant
* sync wit notes into wasi-http
* improve wit docs for output-stream
* doc: document `HostOutputStream` (#6980)
* doc: document `HostOutputStream`
Signed-off-by: Roman Volosatovs <[email protected]>
Co-authored-by: Pat Hickey <[email protected]>
* fix(wasi): fail when `MemoryOutputStream` buffer is full
Signed-off-by: Roman Volosatovs <[email protected]>
---------
Signed-off-by: Roman Volosatovs <[email protected]>
Co-authored-by: Pat Hickey <[email protected]>
* rustfmt
prtest:full
* windows and doc fixes
* cli test wasi-http: use blocking-write-and-flush
* Disable some tests, and adjust timeouts when running under qemu
* Try to reproduce the riscv64 failures
* Update riscv to LLVM 17 with beta rust
* Revert "Try to reproduce the riscv64 failures"
This reverts commit 8ac678171ff3524fd1a6b8b4570c7fc2d42d3d1b.
* Pin the beta version for riscv64
* Fix a warning on nightly
---------
Signed-off-by: Roman Volosatovs <[email protected]> Co-authored-by: Roman Volosatovs <[email protected]> Co-authored-by: Trevor Elliott <[email protected]> Co-authored-by: Alex Crichton <[email protected]>
show more ...
|
| #
8eefa7c3 |
| 05-Sep-2023 |
Eduardo de Moura Rodrigues <[email protected]> |
feat(wasmtime-cli): restore support for wasi http module (#6878)
* feat(wasmtime-cli): add async support flag
Within the wasmtime CLI, the current default behavior is to only inject the synchronous
feat(wasmtime-cli): restore support for wasi http module (#6878)
* feat(wasmtime-cli): add async support flag
Within the wasmtime CLI, the current default behavior is to only inject the synchronous functions to linkers. This will add a flag called `--async` that will inject the asynchronous one instead.
* chore: refactor wasi http crate
* feat(wasmtime-wasi): make in_tokio function public
* feat(wasi-http): define default feature called sync
* Revert "feat(wasmtime-cli): add async support flag"
This reverts commit b743ff2003a2e391972330aa8e8437c6356e580a.
* chore: improve flaky tests for wasi http
* feat(wasi-http): expose sync api for components
* chore: add tests for sync api of wasi http components
* feat(wasmtime-cli): restore support for wasi http module
* chore: revert change to outbound http request invalid test
* chore: have extra tracing to help debugging
* feat(wasi-http): allow modules with sync functions in linker
* fix(wasi-http): missing response body in sync api
* feat: include blocking for io streams
* chore: add tests for wasi http module in cli
* chore: disable preview2 flag in wasi http test
* chore: use preview2 flag in wasi http test
* fix(wasi-http): missing stream output in sync api
* chore: fix tests for wasi http
* chore: add tracing for poll oneoff call
* chore: send exit signal on wasi http test
* chore: swap println to tracing debug
* chore: set http server timeout to 50 secs by default
* chore: add test posting large file
* chore: revert formatting in cargo toml
* chore: fix wasi-http feature and skip failing tests
prtest:full
---------
Co-authored-by: Eduardo Rodrigues <[email protected]>
show more ...
|
|
Revision tags: v12.0.1, v12.0.0 |
|
| #
e250334b |
| 18-Aug-2023 |
Eduardo de Moura Rodrigues <[email protected]> |
feat: align wasi-http with component linker (#6195)
* feat: align wasi-http with component linker
* feat(wasi-http): allow bidirectional stream
* feat(wasi-http): clean up children when dropping r
feat: align wasi-http with component linker (#6195)
* feat: align wasi-http with component linker
* feat(wasi-http): allow bidirectional stream
* feat(wasi-http): clean up children when dropping resource
* chore: update based on feedback
* chore: replace wasi http context references
* chore: fix logical issue with outgoing body stream
* chore: use thread-safe reference-counting pointer
* chore: cleanup resources using table
* fix(wasi-preview1-component-adapter): sync command extended wit
* fix(wasi-preview1-component-adapter): sync command extended wit
* fix(wasmtime-wasi): sync wit for http types
* chore: refactor using wasmtime-wasi crate
fix(wasi-http): misconfiguration in wasmtime linkers
chore: keep streams details
chore: fix wasi http tests
* chore: use pollable from wasmtime-wasi
* chore: update wasi http linker for module
* chore: update test programs for wasi http
* fix(wasi-http): ensure proper errors are surfaced
* chore: split wasi http tests into individual files
* chore: ensure protocol error is mapped correctly
* chore: disable temporarily wasi http in wasmtime cli
* chore: comment out wasi http in wasmtime cli
* chore(ci): ensure wit definitions in sync
* feat(wasi-http): generate async host binding
* chore: make wasi http tests async
* chore: update ci workflow based on suggestion
Co-authored-by: Pat Hickey <[email protected]>
* feat(wasmtime-wasi): update logging world to latest
* feat(wasmtime): update proxy world to latest
* feat(wasmtime-wasi): add back command extended world
* fix(wasi-http): sync wit definitions
* chore: update tests with latest wit definitions
* Update src/commands/run.rs
* Update src/commands/run.rs
* Update src/commands/run.rs
* Update src/commands/run.rs
* Update src/commands/run.rs
* Update src/commands/run.rs
* Update src/commands/run.rs
* Update src/commands/run.rs
* Update src/commands/run.rs
* chore: fix formatting
* Ignore flaky test
* chore: fix compilation error for riscv64 arch
* Avoid `cp -T` on macos
Adding prtest:full to ensure that we've seen a successful build before queuing.
* Don't build the wasi-http test programs for the native target
* Debug the wit consistency check
* Update streams.wit in wasi-http
* Mark the component outbound_request_post test flaky
* Disable flaky wasi-http-tests on windows only
* Use diff instead of rm/cp/git diff
* Disable more tests on windows
---------
Co-authored-by: Eduardo Rodrigues <[email protected]> Co-authored-by: Pat Hickey <[email protected]> Co-authored-by: Trevor Elliott <[email protected]>
show more ...
|
| #
e3b49546 |
| 15-Aug-2023 |
Pat Hickey <[email protected]> |
Sync wasi-cli with wit definitions in standards repo (#6806)
* rename wasi-cli-base to wasi-cli, delete `preview` package, import wasi-cli
wasi-cli import is sum of https://github.com/WebAssembly/
Sync wasi-cli with wit definitions in standards repo (#6806)
* rename wasi-cli-base to wasi-cli, delete `preview` package, import wasi-cli
wasi-cli import is sum of https://github.com/WebAssembly/wasi-cli/pull/19 and https://github.com/WebAssembly/wasi-cli/pull/20
* wasi impl: change bindgen arguments and mod paths from cli_base to cli
* correct name of wasi-cli deps dir to just `deps/cli/`
it turns out this isnt semantically meaningful, since the package name is in the document itself now, but lets be consistient
* track whether stdio isatty in ctx, and impl the cli/terminal-* interfaces
* rebase fixup
* wasi wits: define the reactor adapter's world
* component adapter: fixes
* test-programs/command-tests: fix renaming cli_base to cli
* component adapter: fix manually-defined export and import names
* test harness fixes
* preview1 component adapter: fill in isatty detection
* implement isatty in preview2-to-preview1 host adapter
* test-programs: cover both when stdio isatty and not
prtest:full
* split isatty test for regular file and stdio, detect host stdio is_terminal
CI environments vary - let the test runner make sure the host process's stdio is in fact a terminal before asserting that the guest sees it is a terminal.
* provide an is-terminal impl for all preview2's stdio types
which means making a newtype around Stdout and Stderr instead of using a type alias there.
and then use the is-terminal impl to fill in the isatty field in the builder when inheriting. if you need to override it you can always builder.stdin(stdio::stdin(), your_own_idea_of_isatty)
* finally, rename IsATTY variants to Yes and No
* Fix the reference to IsATTY::No
* more forgotten renamings
---------
Co-authored-by: Trevor Elliott <[email protected]>
show more ...
|
|
Revision tags: v11.0.1, v11.0.0, v10.0.1, v10.0.0, v9.0.4, v9.0.3, v9.0.2 |
|
| #
41417d9e |
| 26-May-2023 |
Alex Crichton <[email protected]> |
Update Wasmtime for upcoming WIT changes (#6390)
* Update Wasmtime for upcoming WIT changes
This PR integrates bytecodealliance/wasm-tools#1027 into Wasmtime. The main changes here are:
* WIT synt
Update Wasmtime for upcoming WIT changes (#6390)
* Update Wasmtime for upcoming WIT changes
This PR integrates bytecodealliance/wasm-tools#1027 into Wasmtime. The main changes here are:
* WIT syntax is updated with WebAssembly/component-model#193 * Generated bindings in the `bindgen!` macro have been updated to reflect the new structure of WIT. * The accepted component model binary format has been updated to account for changes.
This PR disables wasi-http tests and the on-by-default feature because the WIT syntax has been updated but the submodule containing the WITs has not been updated yet so there's no way to get that building temporarily. Once that's updated then this can be reenabled.
* Update wasmtime-wasi crate with new WIT
* Add wit-bindgen override for the updated version
* Officially disable wasi-http tests/building
* Move test-reactor WIT into the main WIT files
Don't store duplicates with the rest of the WASI WIT files we have.
* Remove adapter's copy of WIT files
* Disable default features for wit-bindgen
* Plumb disabling wasi-http tests a bit more
* Fix reactor tests and adapter build
* Remove no-longer-needed feature
* Update adapter verification script
* Back out some wasi-http hacks
* Update vet and some dependency sources
* Move where wit-bindgen comes from
Make it a more "official" location which is also less likely to be accidentally deleted in the future.
* Don't document wasi-http-tests
show more ...
|
|
Revision tags: v9.0.1, v9.0.0 |
|
| #
403f32dc |
| 17-May-2023 |
Pat Hickey <[email protected]> |
add command and reactor tests
|