From 3f6d2785f0c6929dd59c7a028d22578f286e007f Mon Sep 17 00:00:00 2001 From: badeend Date: Mon, 16 Jun 2025 15:29:16 +0200 Subject: [PATCH 1/2] Update to WASI 0.2.6. This includes two changes: # https://github.com/WebAssembly/wasi-filesystem/pull/165 Documentation update # https://github.com/WebAssembly/wasi-http/pull/139 Adds a new unstable `send-informational` function to the `response-outparam` resource. I've left this `unimplemented!()`. --- ci/vendor-wit.sh | 32 +++++++++---------- crates/test-programs/src/lib.rs | 26 +++++++-------- crates/wasi-http/src/bindings.rs | 2 +- crates/wasi-http/src/lib.rs | 8 +++-- crates/wasi-http/src/types_impl.rs | 11 ++++++- crates/wasi-http/wit/deps/cli/command.wit | 2 +- crates/wasi-http/wit/deps/cli/imports.wit | 12 +++---- crates/wasi-http/wit/deps/cli/stdio.wit | 6 ++-- .../wit/deps/clocks/monotonic-clock.wit | 4 +-- crates/wasi-http/wit/deps/clocks/timezone.wit | 2 +- .../wasi-http/wit/deps/clocks/wall-clock.wit | 2 +- crates/wasi-http/wit/deps/clocks/world.wit | 2 +- .../wit/deps/filesystem/preopens.wit | 2 +- .../wasi-http/wit/deps/filesystem/types.wit | 10 ++++-- .../wasi-http/wit/deps/filesystem/world.wit | 2 +- crates/wasi-http/wit/deps/http/proxy.wit | 14 ++++---- crates/wasi-http/wit/deps/http/types.wit | 25 ++++++++++++--- crates/wasi-http/wit/deps/io/error.wit | 2 +- crates/wasi-http/wit/deps/io/poll.wit | 26 +++++++-------- crates/wasi-http/wit/deps/io/streams.wit | 2 +- crates/wasi-http/wit/deps/io/world.wit | 2 +- .../wit/deps/random/insecure-seed.wit | 2 +- crates/wasi-http/wit/deps/random/insecure.wit | 2 +- crates/wasi-http/wit/deps/random/random.wit | 2 +- crates/wasi-http/wit/deps/random/world.wit | 2 +- .../wit/deps/sockets/ip-name-lookup.wit | 2 +- crates/wasi-http/wit/deps/sockets/network.wit | 2 +- crates/wasi-http/wit/deps/sockets/tcp.wit | 6 ++-- crates/wasi-http/wit/deps/sockets/udp.wit | 2 +- crates/wasi-http/wit/deps/sockets/world.wit | 2 +- crates/wasi-http/wit/world.wit | 2 +- crates/wasi-io/wit/deps/io/error.wit | 2 +- crates/wasi-io/wit/deps/io/poll.wit | 26 +++++++-------- crates/wasi-io/wit/deps/io/streams.wit | 2 +- crates/wasi-io/wit/deps/io/world.wit | 2 +- crates/wasi-io/wit/world.wit | 2 +- .../src/descriptors.rs | 2 +- .../src/lib.rs | 18 +++++------ crates/wasi-tls/wit/deps/io/error.wit | 2 +- crates/wasi-tls/wit/deps/io/poll.wit | 26 +++++++-------- crates/wasi-tls/wit/deps/io/streams.wit | 2 +- crates/wasi-tls/wit/deps/io/world.wit | 2 +- crates/wasi-tls/wit/deps/tls/types.wit | 6 ++-- crates/wasi/src/p2/bindings.rs | 4 +-- crates/wasi/src/p2/wit/deps/cli/command.wit | 2 +- crates/wasi/src/p2/wit/deps/cli/imports.wit | 12 +++---- crates/wasi/src/p2/wit/deps/cli/stdio.wit | 6 ++-- .../p2/wit/deps/clocks/monotonic-clock.wit | 4 +-- .../wasi/src/p2/wit/deps/clocks/timezone.wit | 2 +- .../src/p2/wit/deps/clocks/wall-clock.wit | 2 +- crates/wasi/src/p2/wit/deps/clocks/world.wit | 2 +- .../src/p2/wit/deps/filesystem/preopens.wit | 2 +- .../wasi/src/p2/wit/deps/filesystem/types.wit | 10 ++++-- .../wasi/src/p2/wit/deps/filesystem/world.wit | 2 +- crates/wasi/src/p2/wit/deps/io/error.wit | 2 +- crates/wasi/src/p2/wit/deps/io/poll.wit | 26 +++++++-------- crates/wasi/src/p2/wit/deps/io/streams.wit | 2 +- crates/wasi/src/p2/wit/deps/io/world.wit | 2 +- .../src/p2/wit/deps/random/insecure-seed.wit | 2 +- .../wasi/src/p2/wit/deps/random/insecure.wit | 2 +- crates/wasi/src/p2/wit/deps/random/random.wit | 2 +- crates/wasi/src/p2/wit/deps/random/world.wit | 2 +- .../p2/wit/deps/sockets/ip-name-lookup.wit | 2 +- .../wasi/src/p2/wit/deps/sockets/network.wit | 2 +- crates/wasi/src/p2/wit/deps/sockets/tcp.wit | 6 ++-- crates/wasi/src/p2/wit/deps/sockets/udp.wit | 2 +- crates/wasi/src/p2/wit/deps/sockets/world.wit | 2 +- crates/wasi/src/p2/wit/test.wit | 6 ++-- crates/wasi/src/p2/wit/world.wit | 2 +- 69 files changed, 228 insertions(+), 192 deletions(-) diff --git a/ci/vendor-wit.sh b/ci/vendor-wit.sh index c46ba257e746..6e00fcb70e09 100755 --- a/ci/vendor-wit.sh +++ b/ci/vendor-wit.sh @@ -37,31 +37,31 @@ make_vendor() { cache_dir=$(mktemp -d) make_vendor "wasi-io" " - io@v0.2.3 + io@v0.2.6 " make_vendor "wasi/src/p2" " - cli@v0.2.3 - clocks@v0.2.3 - filesystem@v0.2.3 - io@v0.2.3 - random@v0.2.3 - sockets@v0.2.3 + cli@v0.2.6 + clocks@v0.2.6 + filesystem@v0.2.6 + io@v0.2.6 + random@v0.2.6 + sockets@v0.2.6 " make_vendor "wasi-http" " - cli@v0.2.3 - clocks@v0.2.3 - filesystem@v0.2.3 - io@v0.2.3 - random@v0.2.3 - sockets@v0.2.3 - http@v0.2.3 + cli@v0.2.6 + clocks@v0.2.6 + filesystem@v0.2.6 + io@v0.2.6 + random@v0.2.6 + sockets@v0.2.6 + http@v0.2.6 " make_vendor "wasi-tls" " - io@v0.2.3 - tls@v0.2.0-draft+d6fbdc7 + io@v0.2.6 + tls@v0.2.0-draft+505fc98 " make_vendor "wasi-config" "config@f4d699b" diff --git a/crates/test-programs/src/lib.rs b/crates/test-programs/src/lib.rs index 562577f0a4db..b4a4a5531fdf 100644 --- a/crates/test-programs/src/lib.rs +++ b/crates/test-programs/src/lib.rs @@ -9,8 +9,8 @@ wit_bindgen::generate!({ package wasmtime:test; world test { - include wasi:cli/imports@0.2.3; - include wasi:http/imports@0.2.3; + include wasi:cli/imports@0.2.6; + include wasi:http/imports@0.2.6; include wasi:config/imports@0.2.0-draft; include wasi:keyvalue/imports@0.2.0-draft; include wasi:tls/imports@0.2.0-draft; @@ -34,17 +34,17 @@ pub mod proxy { default_bindings_module: "test_programs::proxy", pub_export_macro: true, with: { - "wasi:http/types@0.2.3": crate::wasi::http::types, - "wasi:http/outgoing-handler@0.2.3": crate::wasi::http::outgoing_handler, - "wasi:random/random@0.2.3": crate::wasi::random::random, - "wasi:io/error@0.2.3": crate::wasi::io::error, - "wasi:io/poll@0.2.3": crate::wasi::io::poll, - "wasi:io/streams@0.2.3": crate::wasi::io::streams, - "wasi:cli/stdout@0.2.3": crate::wasi::cli::stdout, - "wasi:cli/stderr@0.2.3": crate::wasi::cli::stderr, - "wasi:cli/stdin@0.2.3": crate::wasi::cli::stdin, - "wasi:clocks/monotonic-clock@0.2.3": crate::wasi::clocks::monotonic_clock, - "wasi:clocks/wall-clock@0.2.3": crate::wasi::clocks::wall_clock, + "wasi:http/types@0.2.6": crate::wasi::http::types, + "wasi:http/outgoing-handler@0.2.6": crate::wasi::http::outgoing_handler, + "wasi:random/random@0.2.6": crate::wasi::random::random, + "wasi:io/error@0.2.6": crate::wasi::io::error, + "wasi:io/poll@0.2.6": crate::wasi::io::poll, + "wasi:io/streams@0.2.6": crate::wasi::io::streams, + "wasi:cli/stdout@0.2.6": crate::wasi::cli::stdout, + "wasi:cli/stderr@0.2.6": crate::wasi::cli::stderr, + "wasi:cli/stdin@0.2.6": crate::wasi::cli::stdin, + "wasi:clocks/monotonic-clock@0.2.6": crate::wasi::clocks::monotonic_clock, + "wasi:clocks/wall-clock@0.2.6": crate::wasi::clocks::wall_clock, }, }); } diff --git a/crates/wasi-http/src/bindings.rs b/crates/wasi-http/src/bindings.rs index 45ed6e056f03..cc3d3433e0d5 100644 --- a/crates/wasi-http/src/bindings.rs +++ b/crates/wasi-http/src/bindings.rs @@ -47,7 +47,7 @@ pub use self::generated::wasi::*; pub use self::generated::exports; /// Bindings to the `wasi:http/proxy` world. -pub use self::generated::{Proxy, ProxyIndices, ProxyPre}; +pub use self::generated::{LinkOptions, Proxy, ProxyIndices, ProxyPre}; /// Sync implementation of the `wasi:http/proxy` world. pub mod sync { diff --git a/crates/wasi-http/src/lib.rs b/crates/wasi-http/src/lib.rs index 98aaea747876..4f517147ef86 100644 --- a/crates/wasi-http/src/lib.rs +++ b/crates/wasi-http/src/lib.rs @@ -303,10 +303,13 @@ pub fn add_only_http_to_linker_async( where T: WasiHttpView + 'static, { + let options = crate::bindings::LinkOptions::default(); // FIXME: Thread through to the CLI options. crate::bindings::http::outgoing_handler::add_to_linker::<_, WasiHttp>(l, |x| { WasiHttpImpl(IoImpl(x)) })?; - crate::bindings::http::types::add_to_linker::<_, WasiHttp>(l, |x| WasiHttpImpl(IoImpl(x)))?; + crate::bindings::http::types::add_to_linker::<_, WasiHttp>(l, &options.into(), |x| { + WasiHttpImpl(IoImpl(x)) + })?; Ok(()) } @@ -374,10 +377,11 @@ pub fn add_only_http_to_linker_sync(l: &mut Linker) -> anyhow::Result<()> where T: WasiHttpView + 'static, { + let options = crate::bindings::LinkOptions::default(); // FIXME: Thread through to the CLI options. crate::bindings::sync::http::outgoing_handler::add_to_linker::<_, WasiHttp>(l, |x| { WasiHttpImpl(IoImpl(x)) })?; - crate::bindings::sync::http::types::add_to_linker::<_, WasiHttp>(l, |x| { + crate::bindings::sync::http::types::add_to_linker::<_, WasiHttp>(l, &options.into(), |x| { WasiHttpImpl(IoImpl(x)) })?; diff --git a/crates/wasi-http/src/types_impl.rs b/crates/wasi-http/src/types_impl.rs index 06c772b97ef3..c8cb45146b4b 100644 --- a/crates/wasi-http/src/types_impl.rs +++ b/crates/wasi-http/src/types_impl.rs @@ -1,7 +1,7 @@ //! Implementation for the `wasi:http/types` interface. use crate::{ - WasiHttpImpl, WasiHttpView, + HttpResult, WasiHttpImpl, WasiHttpView, bindings::http::types::{self, Headers, Method, Scheme, StatusCode, Trailers}, body::{HostFutureTrailers, HostIncomingBody, HostOutgoingBody, StreamContext}, types::{ @@ -580,6 +580,15 @@ where let _ = resp.result.send(val); Ok(()) } + + fn send_informational( + &mut self, + _id: Resource, + _status: u16, + _headers: Resource, + ) -> HttpResult<()> { + unimplemented!() + } } impl crate::bindings::http::types::HostIncomingResponse for WasiHttpImpl diff --git a/crates/wasi-http/wit/deps/cli/command.wit b/crates/wasi-http/wit/deps/cli/command.wit index 3a81766d6450..6d3cc83f5ffa 100644 --- a/crates/wasi-http/wit/deps/cli/command.wit +++ b/crates/wasi-http/wit/deps/cli/command.wit @@ -1,4 +1,4 @@ -package wasi:cli@0.2.3; +package wasi:cli@0.2.6; @since(version = 0.2.0) world command { diff --git a/crates/wasi-http/wit/deps/cli/imports.wit b/crates/wasi-http/wit/deps/cli/imports.wit index 8b4e3975ec30..d9fd017109a7 100644 --- a/crates/wasi-http/wit/deps/cli/imports.wit +++ b/crates/wasi-http/wit/deps/cli/imports.wit @@ -1,17 +1,17 @@ -package wasi:cli@0.2.3; +package wasi:cli@0.2.6; @since(version = 0.2.0) world imports { @since(version = 0.2.0) - include wasi:clocks/imports@0.2.3; + include wasi:clocks/imports@0.2.6; @since(version = 0.2.0) - include wasi:filesystem/imports@0.2.3; + include wasi:filesystem/imports@0.2.6; @since(version = 0.2.0) - include wasi:sockets/imports@0.2.3; + include wasi:sockets/imports@0.2.6; @since(version = 0.2.0) - include wasi:random/imports@0.2.3; + include wasi:random/imports@0.2.6; @since(version = 0.2.0) - include wasi:io/imports@0.2.3; + include wasi:io/imports@0.2.6; @since(version = 0.2.0) import environment; diff --git a/crates/wasi-http/wit/deps/cli/stdio.wit b/crates/wasi-http/wit/deps/cli/stdio.wit index 1b54f5318a8b..cb8aea2d90e9 100644 --- a/crates/wasi-http/wit/deps/cli/stdio.wit +++ b/crates/wasi-http/wit/deps/cli/stdio.wit @@ -1,7 +1,7 @@ @since(version = 0.2.0) interface stdin { @since(version = 0.2.0) - use wasi:io/streams@0.2.3.{input-stream}; + use wasi:io/streams@0.2.6.{input-stream}; @since(version = 0.2.0) get-stdin: func() -> input-stream; @@ -10,7 +10,7 @@ interface stdin { @since(version = 0.2.0) interface stdout { @since(version = 0.2.0) - use wasi:io/streams@0.2.3.{output-stream}; + use wasi:io/streams@0.2.6.{output-stream}; @since(version = 0.2.0) get-stdout: func() -> output-stream; @@ -19,7 +19,7 @@ interface stdout { @since(version = 0.2.0) interface stderr { @since(version = 0.2.0) - use wasi:io/streams@0.2.3.{output-stream}; + use wasi:io/streams@0.2.6.{output-stream}; @since(version = 0.2.0) get-stderr: func() -> output-stream; diff --git a/crates/wasi-http/wit/deps/clocks/monotonic-clock.wit b/crates/wasi-http/wit/deps/clocks/monotonic-clock.wit index c676fb84d8b4..f3bc83912754 100644 --- a/crates/wasi-http/wit/deps/clocks/monotonic-clock.wit +++ b/crates/wasi-http/wit/deps/clocks/monotonic-clock.wit @@ -1,4 +1,4 @@ -package wasi:clocks@0.2.3; +package wasi:clocks@0.2.6; /// WASI Monotonic Clock is a clock API intended to let users measure elapsed /// time. /// @@ -10,7 +10,7 @@ package wasi:clocks@0.2.3; @since(version = 0.2.0) interface monotonic-clock { @since(version = 0.2.0) - use wasi:io/poll@0.2.3.{pollable}; + use wasi:io/poll@0.2.6.{pollable}; /// An instant in time, in nanoseconds. An instant is relative to an /// unspecified initial value, and can only be compared to instances from diff --git a/crates/wasi-http/wit/deps/clocks/timezone.wit b/crates/wasi-http/wit/deps/clocks/timezone.wit index b43e93b23346..ca98ad1528cc 100644 --- a/crates/wasi-http/wit/deps/clocks/timezone.wit +++ b/crates/wasi-http/wit/deps/clocks/timezone.wit @@ -1,4 +1,4 @@ -package wasi:clocks@0.2.3; +package wasi:clocks@0.2.6; @unstable(feature = clocks-timezone) interface timezone { diff --git a/crates/wasi-http/wit/deps/clocks/wall-clock.wit b/crates/wasi-http/wit/deps/clocks/wall-clock.wit index e00ce08933b1..76636a0c9b2e 100644 --- a/crates/wasi-http/wit/deps/clocks/wall-clock.wit +++ b/crates/wasi-http/wit/deps/clocks/wall-clock.wit @@ -1,4 +1,4 @@ -package wasi:clocks@0.2.3; +package wasi:clocks@0.2.6; /// WASI Wall Clock is a clock API intended to let users query the current /// time. The name "wall" makes an analogy to a "clock on the wall", which /// is not necessarily monotonic as it may be reset. diff --git a/crates/wasi-http/wit/deps/clocks/world.wit b/crates/wasi-http/wit/deps/clocks/world.wit index 05f04f797dd2..5c53c51a154e 100644 --- a/crates/wasi-http/wit/deps/clocks/world.wit +++ b/crates/wasi-http/wit/deps/clocks/world.wit @@ -1,4 +1,4 @@ -package wasi:clocks@0.2.3; +package wasi:clocks@0.2.6; @since(version = 0.2.0) world imports { diff --git a/crates/wasi-http/wit/deps/filesystem/preopens.wit b/crates/wasi-http/wit/deps/filesystem/preopens.wit index cea97495b50c..f22847940328 100644 --- a/crates/wasi-http/wit/deps/filesystem/preopens.wit +++ b/crates/wasi-http/wit/deps/filesystem/preopens.wit @@ -1,4 +1,4 @@ -package wasi:filesystem@0.2.3; +package wasi:filesystem@0.2.6; @since(version = 0.2.0) interface preopens { diff --git a/crates/wasi-http/wit/deps/filesystem/types.wit b/crates/wasi-http/wit/deps/filesystem/types.wit index d229a21f4853..75c19044c726 100644 --- a/crates/wasi-http/wit/deps/filesystem/types.wit +++ b/crates/wasi-http/wit/deps/filesystem/types.wit @@ -1,4 +1,4 @@ -package wasi:filesystem@0.2.3; +package wasi:filesystem@0.2.6; /// WASI filesystem is a filesystem API primarily intended to let users run WASI /// programs that access their files on their existing filesystems, without /// significant overhead. @@ -26,9 +26,9 @@ package wasi:filesystem@0.2.3; @since(version = 0.2.0) interface types { @since(version = 0.2.0) - use wasi:io/streams@0.2.3.{input-stream, output-stream, error}; + use wasi:io/streams@0.2.6.{input-stream, output-stream, error}; @since(version = 0.2.0) - use wasi:clocks/wall-clock@0.2.3.{datetime}; + use wasi:clocks/wall-clock@0.2.6.{datetime}; /// File size or length of a region within a file. @since(version = 0.2.0) @@ -508,6 +508,10 @@ interface types { /// Create a hard link. /// + /// Fails with `error-code::no-entry` if the old path does not exist, + /// with `error-code::exist` if the new path already exists, and + /// `error-code::not-permitted` if the old path is not a file. + /// /// Note: This is similar to `linkat` in POSIX. @since(version = 0.2.0) link-at: func( diff --git a/crates/wasi-http/wit/deps/filesystem/world.wit b/crates/wasi-http/wit/deps/filesystem/world.wit index 29405bc2cc72..65597f9f29d9 100644 --- a/crates/wasi-http/wit/deps/filesystem/world.wit +++ b/crates/wasi-http/wit/deps/filesystem/world.wit @@ -1,4 +1,4 @@ -package wasi:filesystem@0.2.3; +package wasi:filesystem@0.2.6; @since(version = 0.2.0) world imports { diff --git a/crates/wasi-http/wit/deps/http/proxy.wit b/crates/wasi-http/wit/deps/http/proxy.wit index de3bbe8ae0c1..5bd9f99894fd 100644 --- a/crates/wasi-http/wit/deps/http/proxy.wit +++ b/crates/wasi-http/wit/deps/http/proxy.wit @@ -1,4 +1,4 @@ -package wasi:http@0.2.3; +package wasi:http@0.2.6; /// The `wasi:http/imports` world imports all the APIs for HTTP proxies. /// It is intended to be `include`d in other worlds. @@ -6,25 +6,25 @@ package wasi:http@0.2.3; world imports { /// HTTP proxies have access to time and randomness. @since(version = 0.2.0) - import wasi:clocks/monotonic-clock@0.2.3; + import wasi:clocks/monotonic-clock@0.2.6; @since(version = 0.2.0) - import wasi:clocks/wall-clock@0.2.3; + import wasi:clocks/wall-clock@0.2.6; @since(version = 0.2.0) - import wasi:random/random@0.2.3; + import wasi:random/random@0.2.6; /// Proxies have standard output and error streams which are expected to /// terminate in a developer-facing console provided by the host. @since(version = 0.2.0) - import wasi:cli/stdout@0.2.3; + import wasi:cli/stdout@0.2.6; @since(version = 0.2.0) - import wasi:cli/stderr@0.2.3; + import wasi:cli/stderr@0.2.6; /// TODO: this is a temporary workaround until component tooling is able to /// gracefully handle the absence of stdin. Hosts must return an eof stream /// for this import, which is what wasi-libc + tooling will do automatically /// when this import is properly removed. @since(version = 0.2.0) - import wasi:cli/stdin@0.2.3; + import wasi:cli/stdin@0.2.6; /// This is the default handler to use when user code simply wants to make an /// HTTP request (e.g., via `fetch()`). diff --git a/crates/wasi-http/wit/deps/http/types.wit b/crates/wasi-http/wit/deps/http/types.wit index 2498f180ad6c..c9f3cc4b9ae5 100644 --- a/crates/wasi-http/wit/deps/http/types.wit +++ b/crates/wasi-http/wit/deps/http/types.wit @@ -4,13 +4,13 @@ @since(version = 0.2.0) interface types { @since(version = 0.2.0) - use wasi:clocks/monotonic-clock@0.2.3.{duration}; + use wasi:clocks/monotonic-clock@0.2.6.{duration}; @since(version = 0.2.0) - use wasi:io/streams@0.2.3.{input-stream, output-stream}; + use wasi:io/streams@0.2.6.{input-stream, output-stream}; @since(version = 0.2.0) - use wasi:io/error@0.2.3.{error as io-error}; + use wasi:io/error@0.2.6.{error as io-error}; @since(version = 0.2.0) - use wasi:io/poll@0.2.3.{pollable}; + use wasi:io/poll@0.2.6.{pollable}; /// This type corresponds to HTTP standard Methods. @since(version = 0.2.0) @@ -170,7 +170,7 @@ interface types { /// A `fields` may be mutable or immutable. A `fields` created using the /// constructor, `from-list`, or `clone` will be mutable, but a `fields` /// resource given by other means (including, but not limited to, - /// `incoming-request.headers`, `outgoing-request.headers`) might be be + /// `incoming-request.headers`, `outgoing-request.headers`) might be /// immutable. In an immutable fields, the `set`, `append`, and `delete` /// operations will fail with `header-error.immutable`. @since(version = 0.2.0) @@ -435,6 +435,21 @@ interface types { /// other argument to `incoming-handler.handle`. @since(version = 0.2.0) resource response-outparam { + /// Send an HTTP 1xx response. + /// + /// Unlike `response-outparam.set`, this does not consume the + /// `response-outparam`, allowing the guest to send an arbitrary number of + /// informational responses before sending the final response using + /// `response-outparam.set`. + /// + /// This will return an `HTTP-protocol-error` if `status` is not in the + /// range [100-199], or an `internal-error` if the implementation does not + /// support informational responses. + @unstable(feature = informational-outbound-responses) + send-informational: func( + status: u16, + headers: headers + ) -> result<_, error-code>; /// Set the value of the `response-outparam` to either send a response, /// or indicate an error. diff --git a/crates/wasi-http/wit/deps/io/error.wit b/crates/wasi-http/wit/deps/io/error.wit index 97c6068779ac..784f74a53e06 100644 --- a/crates/wasi-http/wit/deps/io/error.wit +++ b/crates/wasi-http/wit/deps/io/error.wit @@ -1,4 +1,4 @@ -package wasi:io@0.2.3; +package wasi:io@0.2.6; @since(version = 0.2.0) interface error { diff --git a/crates/wasi-http/wit/deps/io/poll.wit b/crates/wasi-http/wit/deps/io/poll.wit index 9bcbe8e03692..7f711836c34e 100644 --- a/crates/wasi-http/wit/deps/io/poll.wit +++ b/crates/wasi-http/wit/deps/io/poll.wit @@ -1,4 +1,4 @@ -package wasi:io@0.2.3; +package wasi:io@0.2.6; /// A poll API intended to let users wait for I/O events on multiple handles /// at once. @@ -8,19 +8,19 @@ interface poll { @since(version = 0.2.0) resource pollable { - /// Return the readiness of a pollable. This function never blocks. - /// - /// Returns `true` when the pollable is ready, and `false` otherwise. - @since(version = 0.2.0) - ready: func() -> bool; + /// Return the readiness of a pollable. This function never blocks. + /// + /// Returns `true` when the pollable is ready, and `false` otherwise. + @since(version = 0.2.0) + ready: func() -> bool; - /// `block` returns immediately if the pollable is ready, and otherwise - /// blocks until ready. - /// - /// This function is equivalent to calling `poll.poll` on a list - /// containing only this pollable. - @since(version = 0.2.0) - block: func(); + /// `block` returns immediately if the pollable is ready, and otherwise + /// blocks until ready. + /// + /// This function is equivalent to calling `poll.poll` on a list + /// containing only this pollable. + @since(version = 0.2.0) + block: func(); } /// Poll for completion on a set of pollables. diff --git a/crates/wasi-http/wit/deps/io/streams.wit b/crates/wasi-http/wit/deps/io/streams.wit index 0de0846293ff..c5da38c862c8 100644 --- a/crates/wasi-http/wit/deps/io/streams.wit +++ b/crates/wasi-http/wit/deps/io/streams.wit @@ -1,4 +1,4 @@ -package wasi:io@0.2.3; +package wasi:io@0.2.6; /// WASI I/O is an I/O abstraction API which is currently focused on providing /// stream types. diff --git a/crates/wasi-http/wit/deps/io/world.wit b/crates/wasi-http/wit/deps/io/world.wit index f1d2102dca1d..84c85c08ed18 100644 --- a/crates/wasi-http/wit/deps/io/world.wit +++ b/crates/wasi-http/wit/deps/io/world.wit @@ -1,4 +1,4 @@ -package wasi:io@0.2.3; +package wasi:io@0.2.6; @since(version = 0.2.0) world imports { diff --git a/crates/wasi-http/wit/deps/random/insecure-seed.wit b/crates/wasi-http/wit/deps/random/insecure-seed.wit index 67d024d5bf73..d3dc03a6c08e 100644 --- a/crates/wasi-http/wit/deps/random/insecure-seed.wit +++ b/crates/wasi-http/wit/deps/random/insecure-seed.wit @@ -1,4 +1,4 @@ -package wasi:random@0.2.3; +package wasi:random@0.2.6; /// The insecure-seed interface for seeding hash-map DoS resistance. /// /// It is intended to be portable at least between Unix-family platforms and diff --git a/crates/wasi-http/wit/deps/random/insecure.wit b/crates/wasi-http/wit/deps/random/insecure.wit index a07dfab32759..d4d0284801d3 100644 --- a/crates/wasi-http/wit/deps/random/insecure.wit +++ b/crates/wasi-http/wit/deps/random/insecure.wit @@ -1,4 +1,4 @@ -package wasi:random@0.2.3; +package wasi:random@0.2.6; /// The insecure interface for insecure pseudo-random numbers. /// /// It is intended to be portable at least between Unix-family platforms and diff --git a/crates/wasi-http/wit/deps/random/random.wit b/crates/wasi-http/wit/deps/random/random.wit index 91957e63308c..a0ff95646a14 100644 --- a/crates/wasi-http/wit/deps/random/random.wit +++ b/crates/wasi-http/wit/deps/random/random.wit @@ -1,4 +1,4 @@ -package wasi:random@0.2.3; +package wasi:random@0.2.6; /// WASI Random is a random data API. /// /// It is intended to be portable at least between Unix-family platforms and diff --git a/crates/wasi-http/wit/deps/random/world.wit b/crates/wasi-http/wit/deps/random/world.wit index 0c1218f36e83..099f47b36e36 100644 --- a/crates/wasi-http/wit/deps/random/world.wit +++ b/crates/wasi-http/wit/deps/random/world.wit @@ -1,4 +1,4 @@ -package wasi:random@0.2.3; +package wasi:random@0.2.6; @since(version = 0.2.0) world imports { diff --git a/crates/wasi-http/wit/deps/sockets/ip-name-lookup.wit b/crates/wasi-http/wit/deps/sockets/ip-name-lookup.wit index c1d8a47c16b0..ee6419e7daff 100644 --- a/crates/wasi-http/wit/deps/sockets/ip-name-lookup.wit +++ b/crates/wasi-http/wit/deps/sockets/ip-name-lookup.wit @@ -1,7 +1,7 @@ @since(version = 0.2.0) interface ip-name-lookup { @since(version = 0.2.0) - use wasi:io/poll@0.2.3.{pollable}; + use wasi:io/poll@0.2.6.{pollable}; @since(version = 0.2.0) use network.{network, error-code, ip-address}; diff --git a/crates/wasi-http/wit/deps/sockets/network.wit b/crates/wasi-http/wit/deps/sockets/network.wit index f3f60a3709cb..6ca98b63bc34 100644 --- a/crates/wasi-http/wit/deps/sockets/network.wit +++ b/crates/wasi-http/wit/deps/sockets/network.wit @@ -1,7 +1,7 @@ @since(version = 0.2.0) interface network { @unstable(feature = network-error-code) - use wasi:io/error@0.2.3.{error}; + use wasi:io/error@0.2.6.{error}; /// An opaque resource that represents access to (a subset of) the network. /// This enables context-based security for networking. diff --git a/crates/wasi-http/wit/deps/sockets/tcp.wit b/crates/wasi-http/wit/deps/sockets/tcp.wit index b4cd87fcefc5..beefd7b465ec 100644 --- a/crates/wasi-http/wit/deps/sockets/tcp.wit +++ b/crates/wasi-http/wit/deps/sockets/tcp.wit @@ -1,11 +1,11 @@ @since(version = 0.2.0) interface tcp { @since(version = 0.2.0) - use wasi:io/streams@0.2.3.{input-stream, output-stream}; + use wasi:io/streams@0.2.6.{input-stream, output-stream}; @since(version = 0.2.0) - use wasi:io/poll@0.2.3.{pollable}; + use wasi:io/poll@0.2.6.{pollable}; @since(version = 0.2.0) - use wasi:clocks/monotonic-clock@0.2.3.{duration}; + use wasi:clocks/monotonic-clock@0.2.6.{duration}; @since(version = 0.2.0) use network.{network, error-code, ip-socket-address, ip-address-family}; diff --git a/crates/wasi-http/wit/deps/sockets/udp.wit b/crates/wasi-http/wit/deps/sockets/udp.wit index 01901ca27ffa..9dbe6932dd14 100644 --- a/crates/wasi-http/wit/deps/sockets/udp.wit +++ b/crates/wasi-http/wit/deps/sockets/udp.wit @@ -1,7 +1,7 @@ @since(version = 0.2.0) interface udp { @since(version = 0.2.0) - use wasi:io/poll@0.2.3.{pollable}; + use wasi:io/poll@0.2.6.{pollable}; @since(version = 0.2.0) use network.{network, error-code, ip-socket-address, ip-address-family}; diff --git a/crates/wasi-http/wit/deps/sockets/world.wit b/crates/wasi-http/wit/deps/sockets/world.wit index 2f0ad0d7c925..e86f02cec6a2 100644 --- a/crates/wasi-http/wit/deps/sockets/world.wit +++ b/crates/wasi-http/wit/deps/sockets/world.wit @@ -1,4 +1,4 @@ -package wasi:sockets@0.2.3; +package wasi:sockets@0.2.6; @since(version = 0.2.0) world imports { diff --git a/crates/wasi-http/wit/world.wit b/crates/wasi-http/wit/world.wit index db3023637487..69793510df9f 100644 --- a/crates/wasi-http/wit/world.wit +++ b/crates/wasi-http/wit/world.wit @@ -2,5 +2,5 @@ package wasmtime:wasi-http; world bindings { - include wasi:http/proxy@0.2.3; + include wasi:http/proxy@0.2.6; } diff --git a/crates/wasi-io/wit/deps/io/error.wit b/crates/wasi-io/wit/deps/io/error.wit index 97c6068779ac..784f74a53e06 100644 --- a/crates/wasi-io/wit/deps/io/error.wit +++ b/crates/wasi-io/wit/deps/io/error.wit @@ -1,4 +1,4 @@ -package wasi:io@0.2.3; +package wasi:io@0.2.6; @since(version = 0.2.0) interface error { diff --git a/crates/wasi-io/wit/deps/io/poll.wit b/crates/wasi-io/wit/deps/io/poll.wit index 9bcbe8e03692..7f711836c34e 100644 --- a/crates/wasi-io/wit/deps/io/poll.wit +++ b/crates/wasi-io/wit/deps/io/poll.wit @@ -1,4 +1,4 @@ -package wasi:io@0.2.3; +package wasi:io@0.2.6; /// A poll API intended to let users wait for I/O events on multiple handles /// at once. @@ -8,19 +8,19 @@ interface poll { @since(version = 0.2.0) resource pollable { - /// Return the readiness of a pollable. This function never blocks. - /// - /// Returns `true` when the pollable is ready, and `false` otherwise. - @since(version = 0.2.0) - ready: func() -> bool; + /// Return the readiness of a pollable. This function never blocks. + /// + /// Returns `true` when the pollable is ready, and `false` otherwise. + @since(version = 0.2.0) + ready: func() -> bool; - /// `block` returns immediately if the pollable is ready, and otherwise - /// blocks until ready. - /// - /// This function is equivalent to calling `poll.poll` on a list - /// containing only this pollable. - @since(version = 0.2.0) - block: func(); + /// `block` returns immediately if the pollable is ready, and otherwise + /// blocks until ready. + /// + /// This function is equivalent to calling `poll.poll` on a list + /// containing only this pollable. + @since(version = 0.2.0) + block: func(); } /// Poll for completion on a set of pollables. diff --git a/crates/wasi-io/wit/deps/io/streams.wit b/crates/wasi-io/wit/deps/io/streams.wit index 0de0846293ff..c5da38c862c8 100644 --- a/crates/wasi-io/wit/deps/io/streams.wit +++ b/crates/wasi-io/wit/deps/io/streams.wit @@ -1,4 +1,4 @@ -package wasi:io@0.2.3; +package wasi:io@0.2.6; /// WASI I/O is an I/O abstraction API which is currently focused on providing /// stream types. diff --git a/crates/wasi-io/wit/deps/io/world.wit b/crates/wasi-io/wit/deps/io/world.wit index f1d2102dca1d..84c85c08ed18 100644 --- a/crates/wasi-io/wit/deps/io/world.wit +++ b/crates/wasi-io/wit/deps/io/world.wit @@ -1,4 +1,4 @@ -package wasi:io@0.2.3; +package wasi:io@0.2.6; @since(version = 0.2.0) world imports { diff --git a/crates/wasi-io/wit/world.wit b/crates/wasi-io/wit/world.wit index 258bac64c4fa..09dcb03b7601 100644 --- a/crates/wasi-io/wit/world.wit +++ b/crates/wasi-io/wit/world.wit @@ -2,5 +2,5 @@ package wasmtime:wasi-io; world bindings { - include wasi:io/imports@0.2.3; + include wasi:io/imports@0.2.6; } diff --git a/crates/wasi-preview1-component-adapter/src/descriptors.rs b/crates/wasi-preview1-component-adapter/src/descriptors.rs index 68208e802518..47d34395604c 100644 --- a/crates/wasi-preview1-component-adapter/src/descriptors.rs +++ b/crates/wasi-preview1-component-adapter/src/descriptors.rs @@ -149,7 +149,7 @@ pub struct Descriptors { } #[cfg(not(feature = "proxy"))] -#[link(wasm_import_module = "wasi:filesystem/preopens@0.2.3")] +#[link(wasm_import_module = "wasi:filesystem/preopens@0.2.6")] unsafe extern "C" { #[link_name = "get-directories"] fn wasi_filesystem_get_directories(rval: *mut PreopenList); diff --git a/crates/wasi-preview1-component-adapter/src/lib.rs b/crates/wasi-preview1-component-adapter/src/lib.rs index 0d02ed2e0986..26908a453531 100644 --- a/crates/wasi-preview1-component-adapter/src/lib.rs +++ b/crates/wasi-preview1-component-adapter/src/lib.rs @@ -99,12 +99,12 @@ pub mod bindings { package wasmtime:adapter; world adapter { - import wasi:clocks/wall-clock@0.2.3; - import wasi:clocks/monotonic-clock@0.2.3; - import wasi:random/random@0.2.3; - import wasi:cli/stdout@0.2.3; - import wasi:cli/stderr@0.2.3; - import wasi:cli/stdin@0.2.3; + import wasi:clocks/wall-clock@0.2.6; + import wasi:clocks/monotonic-clock@0.2.6; + import wasi:random/random@0.2.6; + import wasi:cli/stdout@0.2.6; + import wasi:cli/stderr@0.2.6; + import wasi:cli/stdin@0.2.6; } "#, world: "wasmtime:adapter/adapter", @@ -122,7 +122,7 @@ pub mod bindings { } } -#[unsafe(export_name = "wasi:cli/run@0.2.3#run")] +#[unsafe(export_name = "wasi:cli/run@0.2.6#run")] #[cfg(feature = "command")] pub extern "C" fn run() -> u32 { #[link(wasm_import_module = "__main_module__")] @@ -469,7 +469,7 @@ impl BumpAlloc { } #[cfg(not(feature = "proxy"))] -#[link(wasm_import_module = "wasi:cli/environment@0.2.3")] +#[link(wasm_import_module = "wasi:cli/environment@0.2.6")] unsafe extern "C" { #[link_name = "get-arguments"] fn wasi_cli_get_arguments(rval: *mut WasmStrList); @@ -2204,7 +2204,7 @@ pub unsafe extern "C" fn poll_oneoff( } } - #[link(wasm_import_module = "wasi:io/poll@0.2.3")] + #[link(wasm_import_module = "wasi:io/poll@0.2.6")] unsafe extern "C" { #[link_name = "poll"] fn poll_import(pollables: *const Pollable, len: usize, rval: *mut ReadyList); diff --git a/crates/wasi-tls/wit/deps/io/error.wit b/crates/wasi-tls/wit/deps/io/error.wit index 97c6068779ac..784f74a53e06 100644 --- a/crates/wasi-tls/wit/deps/io/error.wit +++ b/crates/wasi-tls/wit/deps/io/error.wit @@ -1,4 +1,4 @@ -package wasi:io@0.2.3; +package wasi:io@0.2.6; @since(version = 0.2.0) interface error { diff --git a/crates/wasi-tls/wit/deps/io/poll.wit b/crates/wasi-tls/wit/deps/io/poll.wit index 9bcbe8e03692..7f711836c34e 100644 --- a/crates/wasi-tls/wit/deps/io/poll.wit +++ b/crates/wasi-tls/wit/deps/io/poll.wit @@ -1,4 +1,4 @@ -package wasi:io@0.2.3; +package wasi:io@0.2.6; /// A poll API intended to let users wait for I/O events on multiple handles /// at once. @@ -8,19 +8,19 @@ interface poll { @since(version = 0.2.0) resource pollable { - /// Return the readiness of a pollable. This function never blocks. - /// - /// Returns `true` when the pollable is ready, and `false` otherwise. - @since(version = 0.2.0) - ready: func() -> bool; + /// Return the readiness of a pollable. This function never blocks. + /// + /// Returns `true` when the pollable is ready, and `false` otherwise. + @since(version = 0.2.0) + ready: func() -> bool; - /// `block` returns immediately if the pollable is ready, and otherwise - /// blocks until ready. - /// - /// This function is equivalent to calling `poll.poll` on a list - /// containing only this pollable. - @since(version = 0.2.0) - block: func(); + /// `block` returns immediately if the pollable is ready, and otherwise + /// blocks until ready. + /// + /// This function is equivalent to calling `poll.poll` on a list + /// containing only this pollable. + @since(version = 0.2.0) + block: func(); } /// Poll for completion on a set of pollables. diff --git a/crates/wasi-tls/wit/deps/io/streams.wit b/crates/wasi-tls/wit/deps/io/streams.wit index 0de0846293ff..c5da38c862c8 100644 --- a/crates/wasi-tls/wit/deps/io/streams.wit +++ b/crates/wasi-tls/wit/deps/io/streams.wit @@ -1,4 +1,4 @@ -package wasi:io@0.2.3; +package wasi:io@0.2.6; /// WASI I/O is an I/O abstraction API which is currently focused on providing /// stream types. diff --git a/crates/wasi-tls/wit/deps/io/world.wit b/crates/wasi-tls/wit/deps/io/world.wit index f1d2102dca1d..84c85c08ed18 100644 --- a/crates/wasi-tls/wit/deps/io/world.wit +++ b/crates/wasi-tls/wit/deps/io/world.wit @@ -1,4 +1,4 @@ -package wasi:io@0.2.3; +package wasi:io@0.2.6; @since(version = 0.2.0) world imports { diff --git a/crates/wasi-tls/wit/deps/tls/types.wit b/crates/wasi-tls/wit/deps/tls/types.wit index 6c8a48734767..f6b69b3f04bd 100644 --- a/crates/wasi-tls/wit/deps/tls/types.wit +++ b/crates/wasi-tls/wit/deps/tls/types.wit @@ -1,11 +1,11 @@ @unstable(feature = tls) interface types { @unstable(feature = tls) - use wasi:io/streams@0.2.3.{input-stream, output-stream}; + use wasi:io/streams@0.2.6.{input-stream, output-stream}; @unstable(feature = tls) - use wasi:io/poll@0.2.3.{pollable}; + use wasi:io/poll@0.2.6.{pollable}; @unstable(feature = tls) - use wasi:io/error@0.2.3.{error as io-error}; + use wasi:io/error@0.2.6.{error as io-error}; @unstable(feature = tls) resource client-handshake { diff --git a/crates/wasi/src/p2/bindings.rs b/crates/wasi/src/p2/bindings.rs index ac4f971bc511..0f9dc331124b 100644 --- a/crates/wasi/src/p2/bindings.rs +++ b/crates/wasi/src/p2/bindings.rs @@ -26,7 +26,7 @@ //! // An example of extending the `wasi:cli/command` world with a //! // custom host interface. //! world my-world { -//! include wasi:cli/command@0.2.3; +//! include wasi:cli/command@0.2.6; //! //! import custom-host; //! } @@ -97,7 +97,7 @@ /// // An example of extending the `wasi:cli/command` world with a /// // custom host interface. /// world my-world { -/// include wasi:cli/command@0.2.3; +/// include wasi:cli/command@0.2.6; /// /// import custom-host; /// } diff --git a/crates/wasi/src/p2/wit/deps/cli/command.wit b/crates/wasi/src/p2/wit/deps/cli/command.wit index 3a81766d6450..6d3cc83f5ffa 100644 --- a/crates/wasi/src/p2/wit/deps/cli/command.wit +++ b/crates/wasi/src/p2/wit/deps/cli/command.wit @@ -1,4 +1,4 @@ -package wasi:cli@0.2.3; +package wasi:cli@0.2.6; @since(version = 0.2.0) world command { diff --git a/crates/wasi/src/p2/wit/deps/cli/imports.wit b/crates/wasi/src/p2/wit/deps/cli/imports.wit index 8b4e3975ec30..d9fd017109a7 100644 --- a/crates/wasi/src/p2/wit/deps/cli/imports.wit +++ b/crates/wasi/src/p2/wit/deps/cli/imports.wit @@ -1,17 +1,17 @@ -package wasi:cli@0.2.3; +package wasi:cli@0.2.6; @since(version = 0.2.0) world imports { @since(version = 0.2.0) - include wasi:clocks/imports@0.2.3; + include wasi:clocks/imports@0.2.6; @since(version = 0.2.0) - include wasi:filesystem/imports@0.2.3; + include wasi:filesystem/imports@0.2.6; @since(version = 0.2.0) - include wasi:sockets/imports@0.2.3; + include wasi:sockets/imports@0.2.6; @since(version = 0.2.0) - include wasi:random/imports@0.2.3; + include wasi:random/imports@0.2.6; @since(version = 0.2.0) - include wasi:io/imports@0.2.3; + include wasi:io/imports@0.2.6; @since(version = 0.2.0) import environment; diff --git a/crates/wasi/src/p2/wit/deps/cli/stdio.wit b/crates/wasi/src/p2/wit/deps/cli/stdio.wit index 1b54f5318a8b..cb8aea2d90e9 100644 --- a/crates/wasi/src/p2/wit/deps/cli/stdio.wit +++ b/crates/wasi/src/p2/wit/deps/cli/stdio.wit @@ -1,7 +1,7 @@ @since(version = 0.2.0) interface stdin { @since(version = 0.2.0) - use wasi:io/streams@0.2.3.{input-stream}; + use wasi:io/streams@0.2.6.{input-stream}; @since(version = 0.2.0) get-stdin: func() -> input-stream; @@ -10,7 +10,7 @@ interface stdin { @since(version = 0.2.0) interface stdout { @since(version = 0.2.0) - use wasi:io/streams@0.2.3.{output-stream}; + use wasi:io/streams@0.2.6.{output-stream}; @since(version = 0.2.0) get-stdout: func() -> output-stream; @@ -19,7 +19,7 @@ interface stdout { @since(version = 0.2.0) interface stderr { @since(version = 0.2.0) - use wasi:io/streams@0.2.3.{output-stream}; + use wasi:io/streams@0.2.6.{output-stream}; @since(version = 0.2.0) get-stderr: func() -> output-stream; diff --git a/crates/wasi/src/p2/wit/deps/clocks/monotonic-clock.wit b/crates/wasi/src/p2/wit/deps/clocks/monotonic-clock.wit index c676fb84d8b4..f3bc83912754 100644 --- a/crates/wasi/src/p2/wit/deps/clocks/monotonic-clock.wit +++ b/crates/wasi/src/p2/wit/deps/clocks/monotonic-clock.wit @@ -1,4 +1,4 @@ -package wasi:clocks@0.2.3; +package wasi:clocks@0.2.6; /// WASI Monotonic Clock is a clock API intended to let users measure elapsed /// time. /// @@ -10,7 +10,7 @@ package wasi:clocks@0.2.3; @since(version = 0.2.0) interface monotonic-clock { @since(version = 0.2.0) - use wasi:io/poll@0.2.3.{pollable}; + use wasi:io/poll@0.2.6.{pollable}; /// An instant in time, in nanoseconds. An instant is relative to an /// unspecified initial value, and can only be compared to instances from diff --git a/crates/wasi/src/p2/wit/deps/clocks/timezone.wit b/crates/wasi/src/p2/wit/deps/clocks/timezone.wit index b43e93b23346..ca98ad1528cc 100644 --- a/crates/wasi/src/p2/wit/deps/clocks/timezone.wit +++ b/crates/wasi/src/p2/wit/deps/clocks/timezone.wit @@ -1,4 +1,4 @@ -package wasi:clocks@0.2.3; +package wasi:clocks@0.2.6; @unstable(feature = clocks-timezone) interface timezone { diff --git a/crates/wasi/src/p2/wit/deps/clocks/wall-clock.wit b/crates/wasi/src/p2/wit/deps/clocks/wall-clock.wit index e00ce08933b1..76636a0c9b2e 100644 --- a/crates/wasi/src/p2/wit/deps/clocks/wall-clock.wit +++ b/crates/wasi/src/p2/wit/deps/clocks/wall-clock.wit @@ -1,4 +1,4 @@ -package wasi:clocks@0.2.3; +package wasi:clocks@0.2.6; /// WASI Wall Clock is a clock API intended to let users query the current /// time. The name "wall" makes an analogy to a "clock on the wall", which /// is not necessarily monotonic as it may be reset. diff --git a/crates/wasi/src/p2/wit/deps/clocks/world.wit b/crates/wasi/src/p2/wit/deps/clocks/world.wit index 05f04f797dd2..5c53c51a154e 100644 --- a/crates/wasi/src/p2/wit/deps/clocks/world.wit +++ b/crates/wasi/src/p2/wit/deps/clocks/world.wit @@ -1,4 +1,4 @@ -package wasi:clocks@0.2.3; +package wasi:clocks@0.2.6; @since(version = 0.2.0) world imports { diff --git a/crates/wasi/src/p2/wit/deps/filesystem/preopens.wit b/crates/wasi/src/p2/wit/deps/filesystem/preopens.wit index cea97495b50c..f22847940328 100644 --- a/crates/wasi/src/p2/wit/deps/filesystem/preopens.wit +++ b/crates/wasi/src/p2/wit/deps/filesystem/preopens.wit @@ -1,4 +1,4 @@ -package wasi:filesystem@0.2.3; +package wasi:filesystem@0.2.6; @since(version = 0.2.0) interface preopens { diff --git a/crates/wasi/src/p2/wit/deps/filesystem/types.wit b/crates/wasi/src/p2/wit/deps/filesystem/types.wit index d229a21f4853..75c19044c726 100644 --- a/crates/wasi/src/p2/wit/deps/filesystem/types.wit +++ b/crates/wasi/src/p2/wit/deps/filesystem/types.wit @@ -1,4 +1,4 @@ -package wasi:filesystem@0.2.3; +package wasi:filesystem@0.2.6; /// WASI filesystem is a filesystem API primarily intended to let users run WASI /// programs that access their files on their existing filesystems, without /// significant overhead. @@ -26,9 +26,9 @@ package wasi:filesystem@0.2.3; @since(version = 0.2.0) interface types { @since(version = 0.2.0) - use wasi:io/streams@0.2.3.{input-stream, output-stream, error}; + use wasi:io/streams@0.2.6.{input-stream, output-stream, error}; @since(version = 0.2.0) - use wasi:clocks/wall-clock@0.2.3.{datetime}; + use wasi:clocks/wall-clock@0.2.6.{datetime}; /// File size or length of a region within a file. @since(version = 0.2.0) @@ -508,6 +508,10 @@ interface types { /// Create a hard link. /// + /// Fails with `error-code::no-entry` if the old path does not exist, + /// with `error-code::exist` if the new path already exists, and + /// `error-code::not-permitted` if the old path is not a file. + /// /// Note: This is similar to `linkat` in POSIX. @since(version = 0.2.0) link-at: func( diff --git a/crates/wasi/src/p2/wit/deps/filesystem/world.wit b/crates/wasi/src/p2/wit/deps/filesystem/world.wit index 29405bc2cc72..65597f9f29d9 100644 --- a/crates/wasi/src/p2/wit/deps/filesystem/world.wit +++ b/crates/wasi/src/p2/wit/deps/filesystem/world.wit @@ -1,4 +1,4 @@ -package wasi:filesystem@0.2.3; +package wasi:filesystem@0.2.6; @since(version = 0.2.0) world imports { diff --git a/crates/wasi/src/p2/wit/deps/io/error.wit b/crates/wasi/src/p2/wit/deps/io/error.wit index 97c6068779ac..784f74a53e06 100644 --- a/crates/wasi/src/p2/wit/deps/io/error.wit +++ b/crates/wasi/src/p2/wit/deps/io/error.wit @@ -1,4 +1,4 @@ -package wasi:io@0.2.3; +package wasi:io@0.2.6; @since(version = 0.2.0) interface error { diff --git a/crates/wasi/src/p2/wit/deps/io/poll.wit b/crates/wasi/src/p2/wit/deps/io/poll.wit index 9bcbe8e03692..7f711836c34e 100644 --- a/crates/wasi/src/p2/wit/deps/io/poll.wit +++ b/crates/wasi/src/p2/wit/deps/io/poll.wit @@ -1,4 +1,4 @@ -package wasi:io@0.2.3; +package wasi:io@0.2.6; /// A poll API intended to let users wait for I/O events on multiple handles /// at once. @@ -8,19 +8,19 @@ interface poll { @since(version = 0.2.0) resource pollable { - /// Return the readiness of a pollable. This function never blocks. - /// - /// Returns `true` when the pollable is ready, and `false` otherwise. - @since(version = 0.2.0) - ready: func() -> bool; + /// Return the readiness of a pollable. This function never blocks. + /// + /// Returns `true` when the pollable is ready, and `false` otherwise. + @since(version = 0.2.0) + ready: func() -> bool; - /// `block` returns immediately if the pollable is ready, and otherwise - /// blocks until ready. - /// - /// This function is equivalent to calling `poll.poll` on a list - /// containing only this pollable. - @since(version = 0.2.0) - block: func(); + /// `block` returns immediately if the pollable is ready, and otherwise + /// blocks until ready. + /// + /// This function is equivalent to calling `poll.poll` on a list + /// containing only this pollable. + @since(version = 0.2.0) + block: func(); } /// Poll for completion on a set of pollables. diff --git a/crates/wasi/src/p2/wit/deps/io/streams.wit b/crates/wasi/src/p2/wit/deps/io/streams.wit index 0de0846293ff..c5da38c862c8 100644 --- a/crates/wasi/src/p2/wit/deps/io/streams.wit +++ b/crates/wasi/src/p2/wit/deps/io/streams.wit @@ -1,4 +1,4 @@ -package wasi:io@0.2.3; +package wasi:io@0.2.6; /// WASI I/O is an I/O abstraction API which is currently focused on providing /// stream types. diff --git a/crates/wasi/src/p2/wit/deps/io/world.wit b/crates/wasi/src/p2/wit/deps/io/world.wit index f1d2102dca1d..84c85c08ed18 100644 --- a/crates/wasi/src/p2/wit/deps/io/world.wit +++ b/crates/wasi/src/p2/wit/deps/io/world.wit @@ -1,4 +1,4 @@ -package wasi:io@0.2.3; +package wasi:io@0.2.6; @since(version = 0.2.0) world imports { diff --git a/crates/wasi/src/p2/wit/deps/random/insecure-seed.wit b/crates/wasi/src/p2/wit/deps/random/insecure-seed.wit index 67d024d5bf73..d3dc03a6c08e 100644 --- a/crates/wasi/src/p2/wit/deps/random/insecure-seed.wit +++ b/crates/wasi/src/p2/wit/deps/random/insecure-seed.wit @@ -1,4 +1,4 @@ -package wasi:random@0.2.3; +package wasi:random@0.2.6; /// The insecure-seed interface for seeding hash-map DoS resistance. /// /// It is intended to be portable at least between Unix-family platforms and diff --git a/crates/wasi/src/p2/wit/deps/random/insecure.wit b/crates/wasi/src/p2/wit/deps/random/insecure.wit index a07dfab32759..d4d0284801d3 100644 --- a/crates/wasi/src/p2/wit/deps/random/insecure.wit +++ b/crates/wasi/src/p2/wit/deps/random/insecure.wit @@ -1,4 +1,4 @@ -package wasi:random@0.2.3; +package wasi:random@0.2.6; /// The insecure interface for insecure pseudo-random numbers. /// /// It is intended to be portable at least between Unix-family platforms and diff --git a/crates/wasi/src/p2/wit/deps/random/random.wit b/crates/wasi/src/p2/wit/deps/random/random.wit index 91957e63308c..a0ff95646a14 100644 --- a/crates/wasi/src/p2/wit/deps/random/random.wit +++ b/crates/wasi/src/p2/wit/deps/random/random.wit @@ -1,4 +1,4 @@ -package wasi:random@0.2.3; +package wasi:random@0.2.6; /// WASI Random is a random data API. /// /// It is intended to be portable at least between Unix-family platforms and diff --git a/crates/wasi/src/p2/wit/deps/random/world.wit b/crates/wasi/src/p2/wit/deps/random/world.wit index 0c1218f36e83..099f47b36e36 100644 --- a/crates/wasi/src/p2/wit/deps/random/world.wit +++ b/crates/wasi/src/p2/wit/deps/random/world.wit @@ -1,4 +1,4 @@ -package wasi:random@0.2.3; +package wasi:random@0.2.6; @since(version = 0.2.0) world imports { diff --git a/crates/wasi/src/p2/wit/deps/sockets/ip-name-lookup.wit b/crates/wasi/src/p2/wit/deps/sockets/ip-name-lookup.wit index c1d8a47c16b0..ee6419e7daff 100644 --- a/crates/wasi/src/p2/wit/deps/sockets/ip-name-lookup.wit +++ b/crates/wasi/src/p2/wit/deps/sockets/ip-name-lookup.wit @@ -1,7 +1,7 @@ @since(version = 0.2.0) interface ip-name-lookup { @since(version = 0.2.0) - use wasi:io/poll@0.2.3.{pollable}; + use wasi:io/poll@0.2.6.{pollable}; @since(version = 0.2.0) use network.{network, error-code, ip-address}; diff --git a/crates/wasi/src/p2/wit/deps/sockets/network.wit b/crates/wasi/src/p2/wit/deps/sockets/network.wit index f3f60a3709cb..6ca98b63bc34 100644 --- a/crates/wasi/src/p2/wit/deps/sockets/network.wit +++ b/crates/wasi/src/p2/wit/deps/sockets/network.wit @@ -1,7 +1,7 @@ @since(version = 0.2.0) interface network { @unstable(feature = network-error-code) - use wasi:io/error@0.2.3.{error}; + use wasi:io/error@0.2.6.{error}; /// An opaque resource that represents access to (a subset of) the network. /// This enables context-based security for networking. diff --git a/crates/wasi/src/p2/wit/deps/sockets/tcp.wit b/crates/wasi/src/p2/wit/deps/sockets/tcp.wit index b4cd87fcefc5..beefd7b465ec 100644 --- a/crates/wasi/src/p2/wit/deps/sockets/tcp.wit +++ b/crates/wasi/src/p2/wit/deps/sockets/tcp.wit @@ -1,11 +1,11 @@ @since(version = 0.2.0) interface tcp { @since(version = 0.2.0) - use wasi:io/streams@0.2.3.{input-stream, output-stream}; + use wasi:io/streams@0.2.6.{input-stream, output-stream}; @since(version = 0.2.0) - use wasi:io/poll@0.2.3.{pollable}; + use wasi:io/poll@0.2.6.{pollable}; @since(version = 0.2.0) - use wasi:clocks/monotonic-clock@0.2.3.{duration}; + use wasi:clocks/monotonic-clock@0.2.6.{duration}; @since(version = 0.2.0) use network.{network, error-code, ip-socket-address, ip-address-family}; diff --git a/crates/wasi/src/p2/wit/deps/sockets/udp.wit b/crates/wasi/src/p2/wit/deps/sockets/udp.wit index 01901ca27ffa..9dbe6932dd14 100644 --- a/crates/wasi/src/p2/wit/deps/sockets/udp.wit +++ b/crates/wasi/src/p2/wit/deps/sockets/udp.wit @@ -1,7 +1,7 @@ @since(version = 0.2.0) interface udp { @since(version = 0.2.0) - use wasi:io/poll@0.2.3.{pollable}; + use wasi:io/poll@0.2.6.{pollable}; @since(version = 0.2.0) use network.{network, error-code, ip-socket-address, ip-address-family}; diff --git a/crates/wasi/src/p2/wit/deps/sockets/world.wit b/crates/wasi/src/p2/wit/deps/sockets/world.wit index 2f0ad0d7c925..e86f02cec6a2 100644 --- a/crates/wasi/src/p2/wit/deps/sockets/world.wit +++ b/crates/wasi/src/p2/wit/deps/sockets/world.wit @@ -1,4 +1,4 @@ -package wasi:sockets@0.2.3; +package wasi:sockets@0.2.6; @since(version = 0.2.0) world imports { diff --git a/crates/wasi/src/p2/wit/test.wit b/crates/wasi/src/p2/wit/test.wit index 904deae96888..d0d29618b8d1 100644 --- a/crates/wasi/src/p2/wit/test.wit +++ b/crates/wasi/src/p2/wit/test.wit @@ -1,13 +1,13 @@ world test-reactor { - include wasi:cli/imports@0.2.3; + include wasi:cli/imports@0.2.6; export add-strings: func(s: list) -> u32; export get-strings: func() -> list; - use wasi:io/streams@0.2.3.{output-stream}; + use wasi:io/streams@0.2.6.{output-stream}; export write-strings-to: func(o: output-stream) -> result; - use wasi:filesystem/types@0.2.3.{descriptor-stat}; + use wasi:filesystem/types@0.2.6.{descriptor-stat}; export pass-an-imported-record: func(d: descriptor-stat) -> string; } diff --git a/crates/wasi/src/p2/wit/world.wit b/crates/wasi/src/p2/wit/world.wit index 689c9c268060..c322caeecbed 100644 --- a/crates/wasi/src/p2/wit/world.wit +++ b/crates/wasi/src/p2/wit/world.wit @@ -2,5 +2,5 @@ package wasmtime:wasi; world bindings { - include wasi:cli/imports@0.2.3; + include wasi:cli/imports@0.2.6; } From 5724068ba288f6461c3428103ecbbd83056b7e42 Mon Sep 17 00:00:00 2001 From: badeend Date: Mon, 16 Jun 2025 16:36:49 +0200 Subject: [PATCH 2/2] Trap instead of panic --- crates/wasi-http/src/types_impl.rs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/crates/wasi-http/src/types_impl.rs b/crates/wasi-http/src/types_impl.rs index c8cb45146b4b..16dc2a6f3d09 100644 --- a/crates/wasi-http/src/types_impl.rs +++ b/crates/wasi-http/src/types_impl.rs @@ -1,7 +1,7 @@ //! Implementation for the `wasi:http/types` interface. use crate::{ - HttpResult, WasiHttpImpl, WasiHttpView, + HttpError, HttpResult, WasiHttpImpl, WasiHttpView, bindings::http::types::{self, Headers, Method, Scheme, StatusCode, Trailers}, body::{HostFutureTrailers, HostIncomingBody, HostOutgoingBody, StreamContext}, types::{ @@ -10,7 +10,7 @@ use crate::{ is_forbidden_header, remove_forbidden_headers, }, }; -use anyhow::Context; +use anyhow::{Context, anyhow}; use std::any::Any; use std::str::FromStr; use wasmtime::component::{Resource, ResourceTable, ResourceTableError}; @@ -587,7 +587,7 @@ where _status: u16, _headers: Resource, ) -> HttpResult<()> { - unimplemented!() + Err(HttpError::trap(anyhow!("not implemented"))) } }