History log of /wasmtime-44.0.1/crates/wasi/src/cli.rs (Results 1 – 8 of 8)
Revision (<<< Hide revision tags) (Show revision tags >>>) Date Author Comments
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, v42.0.1, v41.0.4, v42.0.0, v40.0.4, v36.0.6, v24.0.6, v41.0.3, v41.0.2
# bc4582c3 27-Jan-2026 Alex Crichton <[email protected]>

Forbid rustdoc warnings in CI (#12420)

* Forbid rustdoc warnings in CI

This commit corrects our handling of rustdoc flags in CI to ensure that
warnings indeed fire. Additionally this changes our fl

Forbid rustdoc warnings in CI (#12420)

* Forbid rustdoc warnings in CI

This commit corrects our handling of rustdoc flags in CI to ensure that
warnings indeed fire. Additionally this changes our flags to pass
`-Dwarnings` to ensure that we have warning-free doc builds when all
features are enabled at least.

There were quite a lot of preexisting issues to fix, so this
additionally goes through and fixes all the warnings that cropped up.

* Update nightly toolchain again

prtest:full

* Update another nightly

* Fix a warning in generated code

show more ...


Revision tags: v41.0.1, v36.0.5, v40.0.3
# cc8d04f4 23-Jan-2026 Alex Crichton <[email protected]>

Remove need for explicit `Config::async_support` knob (#12371)

* Refactor component model host function definitions

Push the `async`-ness down one layer.

* Remove need for explicit `Config::async

Remove need for explicit `Config::async_support` knob (#12371)

* Refactor component model host function definitions

Push the `async`-ness down one layer.

* Remove need for explicit `Config::async_support` knob

This commit is an attempt to step towards reconciling "old async" and
"new async" in Wasmtime. The old async style is the original async
support in Wasmtime with `call_async`, `func_wrap_async`, etc, where the
main property is that the store is "locked" during an async operation.
Put another way, a store can only execute at most one async operation at
a time. This is in contrast to "new async" support in Wasmtime with the
component-model-async (WASIp3) support, where stores can have more than
one async operation in flight at once.

This commit does not fully reconcile these differences, but it does
remove one hurdle along the way: `Config::async_support`. Since the
beginning of Wasmtime this configuration knob has existed to explicitly
demarcate a config/engine/store as "this thing requires `async` stuff
internally." This has started to make less and less sense over time
where the line between sync and async has become more murky with WASIp3
where the two worlds comingle. The goal of this commit is to deprecate
`Config::async_support` and make the function not actually do anything.

In isolation this can't simply be done, however, because there are many
load-bearing aspects of Wasmtime that rely on this `async_support` knob.
For example once epochs + yielding are enabled it's required that all
Wasm is executed on a fiber lest it hit an epoch and not know how to
yield. That means that this commit is not a simple removal of
`async_support` but instead a refactoring/rearchitecting of how async is
used internally within Wasmtime. The high-level ideas within Wasmtime
now are:

* A `Store` has a "requires async" boolean stored within it.
* All configuration options which end up requiring async, such as
yielding with epochs, turn this boolean on.
* Creation of host functions which use async
(e.g. `func_wrap_{async,concurrent}`) will also turn this option on.
* Synchronous API entrypoints into Wasmtime ensure that this boolean is
disabled.
* Asynchronous APIs are usable at any time.

This means that the concept of an async store vs a sync store is now
gone. All stores are equally capable of executing sync/async, and the
change now is that dynamically some stores will require that async is
used with certain configuration. Additionally all panicking conditions
around `async_support` have been converted to errors instead. All
relevant APIs already returned an error and things are murky enough now
that it's not necessarily trivial to get this right at the embedder
level. In the interest of avoiding panics all detected async mismatches
are now first-class `wasmtime::Error` values.

The end result of this commit is that `Config::async_support` is a
deprecated `#[doc(hidden)]` function that does nothing. While many
internal changes happened as well as having new tests for all this sort
of behavior this is not expected to have a great impact on external
consumers. In general a deletion of `async_support(true)` is in theory
all that's required. This is intended to make it easier to think about
async/sync/etc in the future with WASIp3 and eventually reconcile
`func_wrap_async` and `func_wrap_concurrent` for example. That's left
for future refactorings however.

prtest:full

* Review comments

* Fix CI failures

show more ...


Revision tags: v41.0.0, v36.0.4, v39.0.2, v40.0.2
# d73bd632 09-Jan-2026 Nick Fitzgerald <[email protected]>

Migrate `wasmtime-wasi` to `wasmtime::error` (#12294)

* Migrate wiggle and wiggle generate to `wasmtime::error`

* Fix testing `wiggle` and `wiggle-test` in isolation

When doing plain old `cargo te

Migrate `wasmtime-wasi` to `wasmtime::error` (#12294)

* Migrate wiggle and wiggle generate to `wasmtime::error`

* Fix testing `wiggle` and `wiggle-test` in isolation

When doing plain old `cargo test -p wiggle` (or `wiggle-test`) the test would
fail due to linking errors because Wasmtime's `std` cargo feature (and maybe
others) wasn't being enabled. The crate's tests would pass when run as part of
the whole workspace, however, because of cargo feature resolution and other
crates that enabled the necessary features, which is why CI is green.

* Remove direct anyhow dependency in wiggle-test

* Migrate wasi-nn to `wasmtime::error`

* Migrate wasi-keyvalue to `wasmtime::error`

* Migrate wasi-io to `wasmtime::error`

* Migrate wasi-http to `wasmtime::error`

* Migrate wasi-config to `wasmtime::error`

* Migrate wasi-common to `wastime::error`

This is another interesting one because wasi-common is used internally to
Wasmtime but also by other projects. Therefore, rather than using
`wastime::error::*` and making `wasmtime` a hard dependency, we use just
`wasmtime_environ::error`.

* cargo fmt

* Migrate wasmtime-wasi to `wasmtime::error`

show more ...


Revision tags: v40.0.1, v40.0.0, v39.0.1, v39.0.0, 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
# e017b7f6 03-Sep-2025 Alex Crichton <[email protected]>

Expand some docs on wasmtime-wasi (#11598)

Add public docs for APIs added in #11593 and additionally internalize
some crate fields to avoid exposing too many internal implementation
details.


# cf688861 02-Sep-2025 Tim Hutt <[email protected]>

Make some WASI types public (#11593)

If these are private it's impossible to implement a version of `add_to_linker()` that only pulls in some of this WASI implementation (e.g if you want to provide

Make some WASI types public (#11593)

If these are private it's impossible to implement a version of `add_to_linker()` that only pulls in some of this WASI implementation (e.g if you want to provide a custom implementation of some parts of it).

show more ...


Revision tags: v36.0.2, v36.0.1, v36.0.0
# 7315a822 05-Aug-2025 Alex Crichton <[email protected]>

Mirror WASIp{2,3} cli implementations (#11378)

* Mirror WASIp{2,3} cli implementations

This is an implementation of #11362 but for the `wasi:cli`
implementation of WASIp2.

* Fix unused field witho

Mirror WASIp{2,3} cli implementations (#11378)

* Mirror WASIp{2,3} cli implementations

This is an implementation of #11362 but for the `wasi:cli`
implementation of WASIp2.

* Fix unused field without p3

show more ...


# e6a662b3 01-Aug-2025 Alex Crichton <[email protected]>

Share stdio implementations in WASIp{2,3} (#11368)

* Share stdio implementations in WASIp{2,3}

This commit is a refactoring of the
`wasmtime_wasi::{cli,p2::stdio,p3::cli}` modules to share more co

Share stdio implementations in WASIp{2,3} (#11368)

* Share stdio implementations in WASIp{2,3}

This commit is a refactoring of the
`wasmtime_wasi::{cli,p2::stdio,p3::cli}` modules to share more code. The
generic trait object that represents stdio now has the ability to
acquire either a p2 stream or an async-based stream. The acquisition of
p2 has a default implementation so in the future this can be primarily
`Async{Read,Write}`-based.

Many trait implementations and types and such were all consolidated
together into the `wasmtime_wasi::cli` module. One-off implementations
in p2/p3 are now shared in one location and `WasiCtxBuilder` no longer
needs any generics for different stdio streams.

Functionally this necessitated the addition of `Async{Read,Write}`
implementations for some "base" implementations of stdio primitives.
Implementations were mostly trivial except for a few adapters which were
significantly more complicated, namely the `Async{Read,Write}Stream`
adapter which converts a single `Async{Read,Write}` into the stdio of a
component.

Finally the stdin implementation for p3 was refactored to avoid use of
`tokio::io::stdin()` which generally isn't safe to use. It's replaced
with a custom `AsyncRead` using the worker thread implementation we have
in the crate already.

Eventually I hope to remove the distinction between `p{2,3}::WasiCtx`
and have these be the same type. This will make it nicer to only have a
single `WasiView` trait and additionally make it easier to
simultaneously implement all of WASIp{1,2,3}.

* Fix build of C API

* Fix build of `wasmtime serve`

show more ...


Revision tags: v35.0.0, v24.0.4, v33.0.2, v34.0.2
# a5ed9fb4 18-Jul-2025 Roman Volosatovs <[email protected]>

feat(wasip3): implement `wasi:cli` (#11257)

* feat(wasi): introduce common CLI context

Signed-off-by: Roman Volosatovs <[email protected]>

* chore(wasi): implement traits for boxed values

Si

feat(wasip3): implement `wasi:cli` (#11257)

* feat(wasi): introduce common CLI context

Signed-off-by: Roman Volosatovs <[email protected]>

* chore(wasi): implement traits for boxed values

Signed-off-by: Roman Volosatovs <[email protected]>

* chore(wasi): implement `Default` for common WASI builder

Signed-off-by: Roman Volosatovs <[email protected]>

* feat(wasip3): implement `wasi:cli`

Signed-off-by: Roman Volosatovs <[email protected]>

* refactor: require streams to be `Send`

Signed-off-by: Roman Volosatovs <[email protected]>

* refactor: avoid typing `WasiCli` in task

Signed-off-by: Roman Volosatovs <[email protected]>

* refactor: remove `Unpin` bound from stream I/O

Signed-off-by: Roman Volosatovs <[email protected]>

* refactor: remove `ResourceView`

Signed-off-by: Roman Volosatovs <[email protected]>

* chore: update `serve` to new WASI `isatty` API

Signed-off-by: Roman Volosatovs <[email protected]>

* chore: adapt to stream API changes

Signed-off-by: Roman Volosatovs <[email protected]>

* refactor: avoid `**` syntax

Signed-off-by: Roman Volosatovs <[email protected]>

* refactor(wasip3): remove `Impl` wrappers

Signed-off-by: Roman Volosatovs <[email protected]>

* refactor(wasip3): use shorthand closure syntax

Signed-off-by: Roman Volosatovs <[email protected]>

* chore: account for different env on different targets

prtest:full

Signed-off-by: Roman Volosatovs <[email protected]>

---------

Signed-off-by: Roman Volosatovs <[email protected]>

show more ...