From 299932c2b784915cdde9684a2c72f6c334aaebeb Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Thu, 11 Jun 2026 15:13:22 -0700 Subject: [PATCH 1/6] Update WASIp3 WITs to 0.3.0 This commit is intended to couple the WASI subgroup's decision today to stamp 0.3.0 and ship it. This updates the vendored WITs here to their 0.3.0 versions which means that the WASIp3 version of libc will now be built against this version. I've tested this against a build of bytecodealliance/wasmtime#13612 to verify these changes. This has a few minor changes as well such as: * The implementation of `exit` in libc now uses `exit_with_code` instead of `exit` where possible. This is only done if the `status` being exited with fits within the `u8` that the WASI interface allows. * Before cancelling/deleting the timeout task in `poll` it's removed from the `waitable-set` to accommodate upstream changes in Wasmtime and avoid a trap. --- CMakeLists.txt | 2 +- .../cloudlibc/src/libc/poll/poll.c | 1 + .../cloudlibc/src/libc/stdlib/_Exit.c | 7 +- libc-bottom-half/crt/crt1-command.c | 2 +- .../headers/public/wasi/__generated_wasip3.h | 43 +- libc-bottom-half/sources/wasip3.c | 367 +++++++++--------- .../sources/wasip3_component_type.o | Bin 8278 -> 8007 bytes .../package.wit | 156 ++++---- .../package.wit | 34 +- .../package.wit | 104 ++--- .../package.wit | 92 ++--- .../package.wit | 26 +- .../package.wit | 128 +++--- wasi/p3/wit/wasi-libc.wit | 12 +- wasi/p3/wkg.lock | 36 +- 15 files changed, 516 insertions(+), 494 deletions(-) rename wasi/p3/wit/deps/{wasi-cli-0.3.0-rc-2026-03-15 => wasi-cli-0.3.0}/package.wit (62%) rename wasi/p3/wit/deps/{wasi-clocks-0.3.0-rc-2026-03-15 => wasi-clocks-0.3.0}/package.wit (89%) rename wasi/p3/wit/deps/{wasi-filesystem-0.3.0-rc-2026-03-15 => wasi-filesystem-0.3.0}/package.wit (91%) rename wasi/p3/wit/deps/{wasi-http-0.3.0-rc-2026-03-15 => wasi-http-0.3.0}/package.wit (91%) rename wasi/p3/wit/deps/{wasi-random-0.3.0-rc-2026-03-15 => wasi-random-0.3.0}/package.wit (88%) rename wasi/p3/wit/deps/{wasi-sockets-0.3.0-rc-2026-03-15 => wasi-sockets-0.3.0}/package.wit (93%) diff --git a/CMakeLists.txt b/CMakeLists.txt index 7eaf3de83..12d59c4fc 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -145,7 +145,7 @@ else() endif() set(wasip2-version 0.2.0) -set(wasip3-version 0.3.0-rc-2026-03-15) +set(wasip3-version 0.3.0) include(bindings) include(builtins) diff --git a/libc-bottom-half/cloudlibc/src/libc/poll/poll.c b/libc-bottom-half/cloudlibc/src/libc/poll/poll.c index 6d77f3381..791d881cb 100644 --- a/libc-bottom-half/cloudlibc/src/libc/poll/poll.c +++ b/libc-bottom-half/cloudlibc/src/libc/poll/poll.c @@ -493,6 +493,7 @@ static int poll_impl(struct pollfd *fds, size_t nfds, int timeout) { out: if (timeout_subtask != 0) { + wasip3_waitable_join(timeout_subtask, 0); wasip3_subtask_cancel(timeout_subtask); wasip3_subtask_drop(timeout_subtask); } diff --git a/libc-bottom-half/cloudlibc/src/libc/stdlib/_Exit.c b/libc-bottom-half/cloudlibc/src/libc/stdlib/_Exit.c index ace4bcd9c..596326139 100644 --- a/libc-bottom-half/cloudlibc/src/libc/stdlib/_Exit.c +++ b/libc-bottom-half/cloudlibc/src/libc/stdlib/_Exit.c @@ -10,7 +10,12 @@ noreturn void _Exit(int status) { #if defined(__wasip1__) __wasi_proc_exit(status); -#elif defined(__wasip2__) || defined(__wasip3__) +#elif defined(__wasip2__) + exit_result_void_void_t exit_status = { .is_err = status != 0 }; + exit_exit(&exit_status); +#elif defined(__wasip3__) + if (status >= 0 && status <= 255) + exit_exit_with_code(status); exit_result_void_void_t exit_status = { .is_err = status != 0 }; exit_exit(&exit_status); #else diff --git a/libc-bottom-half/crt/crt1-command.c b/libc-bottom-half/crt/crt1-command.c index 27153db72..d2ab841af 100644 --- a/libc-bottom-half/crt/crt1-command.c +++ b/libc-bottom-half/crt/crt1-command.c @@ -18,7 +18,7 @@ __attribute__((export_name("_start"))) void _start(void) // that this shouldn't be too problematic (in theory). __attribute__((export_name("wasi:cli/run@0.2.0#run"))) int _start(void) #elif defined(__wasip3__) -__attribute__((export_name("wasi:cli/run@0.3.0-rc-2026-03-15#run"))) int +__attribute__((export_name("wasi:cli/run@0.3.0#run"))) int _start(void) #else #error "Unsupported WASI version" diff --git a/libc-bottom-half/headers/public/wasi/__generated_wasip3.h b/libc-bottom-half/headers/public/wasi/__generated_wasip3.h index 9a24f7a07..88245830a 100644 --- a/libc-bottom-half/headers/public/wasi/__generated_wasip3.h +++ b/libc-bottom-half/headers/public/wasi/__generated_wasip3.h @@ -942,7 +942,7 @@ typedef struct { uint64_t f1; } wasip3_tuple2_u64_u64_t; -// Imported Functions from `wasi:cli/environment@0.3.0-rc-2026-03-15` +// Imported Functions from `wasi:cli/environment@0.3.0` // Get the POSIX-style environment variables. // // Each environment variable is provided as a pair of string variable names @@ -958,11 +958,20 @@ extern void environment_get_arguments(wasip3_list_string_t *ret); // directory, interpreting `.` as shorthand for this. extern bool environment_get_initial_cwd(wasip3_string_t *ret); -// Imported Functions from `wasi:cli/exit@0.3.0-rc-2026-03-15` +// Imported Functions from `wasi:cli/exit@0.3.0` // Exit the current instance and any linked instances. _Noreturn extern void exit_exit(exit_result_void_void_t *status); +// Exit the current instance and any linked instances, reporting the +// specified status code to the host. +// +// The meaning of the code depends on the context, with 0 usually meaning +// "success", and other values indicating various types of failure. +// +// This function does not return; the effect is analogous to a trap, but +// without the connotation that something bad has happened. +_Noreturn extern void exit_exit_with_code(uint8_t status_code); -// Imported Functions from `wasi:cli/stdin@0.3.0-rc-2026-03-15` +// Imported Functions from `wasi:cli/stdin@0.3.0` // Return a stream for reading from stdin. // // This function returns a stream which provides data read from stdin, @@ -978,7 +987,7 @@ _Noreturn extern void exit_exit(exit_result_void_void_t *status); // reads is implementation-specific. extern void stdin_read_via_stream(stdin_tuple2_stream_u8_future_result_void_error_code_t *ret); -// Imported Functions from `wasi:cli/stdout@0.3.0-rc-2026-03-15` +// Imported Functions from `wasi:cli/stdout@0.3.0` // Write the given stream to stdout. // // If the stream's writable end is dropped this function will either return @@ -989,7 +998,7 @@ extern void stdin_read_via_stream(stdin_tuple2_stream_u8_future_result_void_erro // dropped and this function will return an error-code. extern stdout_future_result_void_error_code_t stdout_write_via_stream(stdin_stream_u8_t data); -// Imported Functions from `wasi:cli/stderr@0.3.0-rc-2026-03-15` +// Imported Functions from `wasi:cli/stderr@0.3.0` // Write the given stream to stderr. // // If the stream's writable end is dropped this function will either return @@ -1000,22 +1009,22 @@ extern stdout_future_result_void_error_code_t stdout_write_via_stream(stdin_stre // dropped and this function will return an error-code. extern stderr_future_result_void_error_code_t stderr_write_via_stream(stdin_stream_u8_t data); -// Imported Functions from `wasi:cli/terminal-stdin@0.3.0-rc-2026-03-15` +// Imported Functions from `wasi:cli/terminal-stdin@0.3.0` // If stdin is connected to a terminal, return a `terminal-input` handle // allowing further interaction with it. extern bool terminal_stdin_get_terminal_stdin(terminal_stdin_own_terminal_input_t *ret); -// Imported Functions from `wasi:cli/terminal-stdout@0.3.0-rc-2026-03-15` +// Imported Functions from `wasi:cli/terminal-stdout@0.3.0` // If stdout is connected to a terminal, return a `terminal-output` handle // allowing further interaction with it. extern bool terminal_stdout_get_terminal_stdout(terminal_stdout_own_terminal_output_t *ret); -// Imported Functions from `wasi:cli/terminal-stderr@0.3.0-rc-2026-03-15` +// Imported Functions from `wasi:cli/terminal-stderr@0.3.0` // If stderr is connected to a terminal, return a `terminal-output` handle // allowing further interaction with it. extern bool terminal_stderr_get_terminal_stderr(terminal_stderr_own_terminal_output_t *ret); -// Imported Functions from `wasi:clocks/monotonic-clock@0.3.0-rc-2026-03-15` +// Imported Functions from `wasi:clocks/monotonic-clock@0.3.0` // Read the current value of the clock. // // The clock is monotonic, therefore calling this function repeatedly will @@ -1034,7 +1043,7 @@ extern void monotonic_clock_wait_until(monotonic_clock_mark_t when); // Wait for the specified duration to elapse. extern wasip3_subtask_status_t monotonic_clock_wait_for(monotonic_clock_duration_t how_long); -// Imported Functions from `wasi:clocks/system-clock@0.3.0-rc-2026-03-15` +// Imported Functions from `wasi:clocks/system-clock@0.3.0` // Read the current value of the clock. // // This clock is not monotonic, therefore calling this function repeatedly @@ -1046,7 +1055,7 @@ extern void system_clock_now(system_clock_instant_t *ret); // that the implementation permits distinguishing. extern system_clock_duration_t system_clock_get_resolution(void); -// Imported Functions from `wasi:filesystem/types@0.3.0-rc-2026-03-15` +// Imported Functions from `wasi:filesystem/types@0.3.0` // Return a stream for reading from a file. // // Multiple read, write, and append streams may be active on the same open @@ -1263,11 +1272,11 @@ extern bool filesystem_method_descriptor_metadata_hash(filesystem_borrow_descrip // This performs the same hash computation as `metadata-hash`. extern bool filesystem_method_descriptor_metadata_hash_at(filesystem_borrow_descriptor_t self, filesystem_path_flags_t path_flags, wasip3_string_t *path, filesystem_metadata_hash_value_t *ret, filesystem_error_code_t *err); -// Imported Functions from `wasi:filesystem/preopens@0.3.0-rc-2026-03-15` +// Imported Functions from `wasi:filesystem/preopens@0.3.0` // Return the set of preopened directories, and their paths. extern void filesystem_preopens_get_directories(filesystem_preopens_list_tuple2_own_descriptor_string_t *ret); -// Imported Functions from `wasi:sockets/types@0.3.0-rc-2026-03-15` +// Imported Functions from `wasi:sockets/types@0.3.0` // Create a new TCP socket. // // Similar to `socket(AF_INET or AF_INET6, SOCK_STREAM, IPPROTO_TCP)` @@ -1832,7 +1841,7 @@ extern bool sockets_method_udp_socket_set_receive_buffer_size(sockets_borrow_udp extern bool sockets_method_udp_socket_get_send_buffer_size(sockets_borrow_udp_socket_t self, uint64_t *ret, sockets_error_code_t *err); extern bool sockets_method_udp_socket_set_send_buffer_size(sockets_borrow_udp_socket_t self, uint64_t value, sockets_error_code_t *err); -// Imported Functions from `wasi:sockets/ip-name-lookup@0.3.0-rc-2026-03-15` +// Imported Functions from `wasi:sockets/ip-name-lookup@0.3.0` // Resolve an internet host name to a list of IP addresses. // // Unicode domain names are automatically converted to ASCII using IDNA @@ -1854,7 +1863,7 @@ extern bool sockets_method_udp_socket_set_send_buffer_size(sockets_borrow_udp_so // - extern bool ip_name_lookup_resolve_addresses(wasip3_string_t *name, ip_name_lookup_list_ip_address_t *ret, ip_name_lookup_error_code_t *err); -// Imported Functions from `wasi:random/random@0.3.0-rc-2026-03-15` +// Imported Functions from `wasi:random/random@0.3.0` // Return up to `max-len` cryptographically-secure random or pseudo-random // bytes. // @@ -1882,7 +1891,7 @@ extern void random_get_random_bytes(uint64_t max_len, wasip3_list_u8_t *ret); // represented as a `u64`. extern uint64_t random_get_random_u64(void); -// Imported Functions from `wasi:random/insecure@0.3.0-rc-2026-03-15` +// Imported Functions from `wasi:random/insecure@0.3.0` // Return up to `max-len` insecure pseudo-random bytes. // // This function is not cryptographically secure. Do not use it for @@ -1905,7 +1914,7 @@ extern void random_insecure_get_insecure_random_bytes(uint64_t max_len, wasip3_l // `get-insecure-random-bytes`, represented as a `u64`. extern uint64_t random_insecure_get_insecure_random_u64(void); -// Imported Functions from `wasi:random/insecure-seed@0.3.0-rc-2026-03-15` +// Imported Functions from `wasi:random/insecure-seed@0.3.0` // Return a 128-bit value that may contain a pseudo-random value. // // The returned value is not required to be computed from a CSPRNG, and may diff --git a/libc-bottom-half/sources/wasip3.c b/libc-bottom-half/sources/wasip3.c index d1f5c4e74..90c3e2950 100644 --- a/libc-bottom-half/sources/wasip3.c +++ b/libc-bottom-half/sources/wasip3.c @@ -3,302 +3,305 @@ #include #include -// Imported Functions from `wasi:cli/environment@0.3.0-rc-2026-03-15` +// Imported Functions from `wasi:cli/environment@0.3.0` -__attribute__((__import_module__("wasi:cli/environment@0.3.0-rc-2026-03-15"), __import_name__("get-environment"))) +__attribute__((__import_module__("wasi:cli/environment@0.3.0"), __import_name__("get-environment"))) extern void __wasm_import_environment_get_environment(uint8_t *); -__attribute__((__import_module__("wasi:cli/environment@0.3.0-rc-2026-03-15"), __import_name__("get-arguments"))) +__attribute__((__import_module__("wasi:cli/environment@0.3.0"), __import_name__("get-arguments"))) extern void __wasm_import_environment_get_arguments(uint8_t *); -__attribute__((__import_module__("wasi:cli/environment@0.3.0-rc-2026-03-15"), __import_name__("get-initial-cwd"))) +__attribute__((__import_module__("wasi:cli/environment@0.3.0"), __import_name__("get-initial-cwd"))) extern void __wasm_import_environment_get_initial_cwd(uint8_t *); -// Imported Functions from `wasi:cli/exit@0.3.0-rc-2026-03-15` +// Imported Functions from `wasi:cli/exit@0.3.0` -__attribute__((__import_module__("wasi:cli/exit@0.3.0-rc-2026-03-15"), __import_name__("exit"))) +__attribute__((__import_module__("wasi:cli/exit@0.3.0"), __import_name__("exit"))) _Noreturn extern void __wasm_import_exit_exit(int32_t); -// Imported Functions from `wasi:cli/stdin@0.3.0-rc-2026-03-15` +__attribute__((__import_module__("wasi:cli/exit@0.3.0"), __import_name__("exit-with-code"))) +_Noreturn extern void __wasm_import_exit_exit_with_code(int32_t); -__attribute__((__import_module__("wasi:cli/stdin@0.3.0-rc-2026-03-15"), __import_name__("read-via-stream"))) +// Imported Functions from `wasi:cli/stdin@0.3.0` + +__attribute__((__import_module__("wasi:cli/stdin@0.3.0"), __import_name__("read-via-stream"))) extern void __wasm_import_stdin_read_via_stream(uint8_t *); -// Imported Functions from `wasi:cli/stdout@0.3.0-rc-2026-03-15` +// Imported Functions from `wasi:cli/stdout@0.3.0` -__attribute__((__import_module__("wasi:cli/stdout@0.3.0-rc-2026-03-15"), __import_name__("write-via-stream"))) +__attribute__((__import_module__("wasi:cli/stdout@0.3.0"), __import_name__("write-via-stream"))) extern int32_t __wasm_import_stdout_write_via_stream(int32_t); -// Imported Functions from `wasi:cli/stderr@0.3.0-rc-2026-03-15` +// Imported Functions from `wasi:cli/stderr@0.3.0` -__attribute__((__import_module__("wasi:cli/stderr@0.3.0-rc-2026-03-15"), __import_name__("write-via-stream"))) +__attribute__((__import_module__("wasi:cli/stderr@0.3.0"), __import_name__("write-via-stream"))) extern int32_t __wasm_import_stderr_write_via_stream(int32_t); -// Imported Functions from `wasi:cli/terminal-stdin@0.3.0-rc-2026-03-15` +// Imported Functions from `wasi:cli/terminal-stdin@0.3.0` -__attribute__((__import_module__("wasi:cli/terminal-stdin@0.3.0-rc-2026-03-15"), __import_name__("get-terminal-stdin"))) +__attribute__((__import_module__("wasi:cli/terminal-stdin@0.3.0"), __import_name__("get-terminal-stdin"))) extern void __wasm_import_terminal_stdin_get_terminal_stdin(uint8_t *); -// Imported Functions from `wasi:cli/terminal-stdout@0.3.0-rc-2026-03-15` +// Imported Functions from `wasi:cli/terminal-stdout@0.3.0` -__attribute__((__import_module__("wasi:cli/terminal-stdout@0.3.0-rc-2026-03-15"), __import_name__("get-terminal-stdout"))) +__attribute__((__import_module__("wasi:cli/terminal-stdout@0.3.0"), __import_name__("get-terminal-stdout"))) extern void __wasm_import_terminal_stdout_get_terminal_stdout(uint8_t *); -// Imported Functions from `wasi:cli/terminal-stderr@0.3.0-rc-2026-03-15` +// Imported Functions from `wasi:cli/terminal-stderr@0.3.0` -__attribute__((__import_module__("wasi:cli/terminal-stderr@0.3.0-rc-2026-03-15"), __import_name__("get-terminal-stderr"))) +__attribute__((__import_module__("wasi:cli/terminal-stderr@0.3.0"), __import_name__("get-terminal-stderr"))) extern void __wasm_import_terminal_stderr_get_terminal_stderr(uint8_t *); -// Imported Functions from `wasi:clocks/monotonic-clock@0.3.0-rc-2026-03-15` +// Imported Functions from `wasi:clocks/monotonic-clock@0.3.0` -__attribute__((__import_module__("wasi:clocks/monotonic-clock@0.3.0-rc-2026-03-15"), __import_name__("now"))) +__attribute__((__import_module__("wasi:clocks/monotonic-clock@0.3.0"), __import_name__("now"))) extern int64_t __wasm_import_monotonic_clock_now(void); -__attribute__((__import_module__("wasi:clocks/monotonic-clock@0.3.0-rc-2026-03-15"), __import_name__("get-resolution"))) +__attribute__((__import_module__("wasi:clocks/monotonic-clock@0.3.0"), __import_name__("get-resolution"))) extern int64_t __wasm_import_monotonic_clock_get_resolution(void); -__attribute__((__import_module__("wasi:clocks/monotonic-clock@0.3.0-rc-2026-03-15"), __import_name__("wait-until"))) +__attribute__((__import_module__("wasi:clocks/monotonic-clock@0.3.0"), __import_name__("wait-until"))) extern void __wasm_import_monotonic_clock_wait_until(int64_t); -__attribute__((__import_module__("wasi:clocks/monotonic-clock@0.3.0-rc-2026-03-15"), __import_name__("[async-lower]wait-for"))) +__attribute__((__import_module__("wasi:clocks/monotonic-clock@0.3.0"), __import_name__("[async-lower]wait-for"))) extern int32_t __wasm_import_monotonic_clock_wait_for(int64_t); -// Imported Functions from `wasi:clocks/system-clock@0.3.0-rc-2026-03-15` +// Imported Functions from `wasi:clocks/system-clock@0.3.0` -__attribute__((__import_module__("wasi:clocks/system-clock@0.3.0-rc-2026-03-15"), __import_name__("now"))) +__attribute__((__import_module__("wasi:clocks/system-clock@0.3.0"), __import_name__("now"))) extern void __wasm_import_system_clock_now(uint8_t *); -__attribute__((__import_module__("wasi:clocks/system-clock@0.3.0-rc-2026-03-15"), __import_name__("get-resolution"))) +__attribute__((__import_module__("wasi:clocks/system-clock@0.3.0"), __import_name__("get-resolution"))) extern int64_t __wasm_import_system_clock_get_resolution(void); -// Imported Functions from `wasi:filesystem/types@0.3.0-rc-2026-03-15` +// Imported Functions from `wasi:filesystem/types@0.3.0` -__attribute__((__import_module__("wasi:filesystem/types@0.3.0-rc-2026-03-15"), __import_name__("[method]descriptor.read-via-stream"))) +__attribute__((__import_module__("wasi:filesystem/types@0.3.0"), __import_name__("[method]descriptor.read-via-stream"))) extern void __wasm_import_filesystem_method_descriptor_read_via_stream(int32_t, int64_t, uint8_t *); -__attribute__((__import_module__("wasi:filesystem/types@0.3.0-rc-2026-03-15"), __import_name__("[method]descriptor.write-via-stream"))) +__attribute__((__import_module__("wasi:filesystem/types@0.3.0"), __import_name__("[method]descriptor.write-via-stream"))) extern int32_t __wasm_import_filesystem_method_descriptor_write_via_stream(int32_t, int32_t, int64_t); -__attribute__((__import_module__("wasi:filesystem/types@0.3.0-rc-2026-03-15"), __import_name__("[method]descriptor.append-via-stream"))) +__attribute__((__import_module__("wasi:filesystem/types@0.3.0"), __import_name__("[method]descriptor.append-via-stream"))) extern int32_t __wasm_import_filesystem_method_descriptor_append_via_stream(int32_t, int32_t); -__attribute__((__import_module__("wasi:filesystem/types@0.3.0-rc-2026-03-15"), __import_name__("[method]descriptor.advise"))) +__attribute__((__import_module__("wasi:filesystem/types@0.3.0"), __import_name__("[method]descriptor.advise"))) extern void __wasm_import_filesystem_method_descriptor_advise(int32_t, int64_t, int64_t, int32_t, uint8_t *); -__attribute__((__import_module__("wasi:filesystem/types@0.3.0-rc-2026-03-15"), __import_name__("[method]descriptor.sync-data"))) +__attribute__((__import_module__("wasi:filesystem/types@0.3.0"), __import_name__("[method]descriptor.sync-data"))) extern void __wasm_import_filesystem_method_descriptor_sync_data(int32_t, uint8_t *); -__attribute__((__import_module__("wasi:filesystem/types@0.3.0-rc-2026-03-15"), __import_name__("[method]descriptor.get-flags"))) +__attribute__((__import_module__("wasi:filesystem/types@0.3.0"), __import_name__("[method]descriptor.get-flags"))) extern void __wasm_import_filesystem_method_descriptor_get_flags(int32_t, uint8_t *); -__attribute__((__import_module__("wasi:filesystem/types@0.3.0-rc-2026-03-15"), __import_name__("[async-lower][method]descriptor.get-type"))) +__attribute__((__import_module__("wasi:filesystem/types@0.3.0"), __import_name__("[async-lower][method]descriptor.get-type"))) extern int32_t __wasm_import_filesystem_method_descriptor_get_type(int32_t, uint8_t *); -__attribute__((__import_module__("wasi:filesystem/types@0.3.0-rc-2026-03-15"), __import_name__("[method]descriptor.set-size"))) +__attribute__((__import_module__("wasi:filesystem/types@0.3.0"), __import_name__("[method]descriptor.set-size"))) extern void __wasm_import_filesystem_method_descriptor_set_size(int32_t, int64_t, uint8_t *); -__attribute__((__import_module__("wasi:filesystem/types@0.3.0-rc-2026-03-15"), __import_name__("[method]descriptor.set-times"))) +__attribute__((__import_module__("wasi:filesystem/types@0.3.0"), __import_name__("[method]descriptor.set-times"))) extern void __wasm_import_filesystem_method_descriptor_set_times(int32_t, int32_t, int64_t, int32_t, int32_t, int64_t, int32_t, uint8_t *); -__attribute__((__import_module__("wasi:filesystem/types@0.3.0-rc-2026-03-15"), __import_name__("[method]descriptor.read-directory"))) +__attribute__((__import_module__("wasi:filesystem/types@0.3.0"), __import_name__("[method]descriptor.read-directory"))) extern void __wasm_import_filesystem_method_descriptor_read_directory(int32_t, uint8_t *); -__attribute__((__import_module__("wasi:filesystem/types@0.3.0-rc-2026-03-15"), __import_name__("[method]descriptor.sync"))) +__attribute__((__import_module__("wasi:filesystem/types@0.3.0"), __import_name__("[method]descriptor.sync"))) extern void __wasm_import_filesystem_method_descriptor_sync(int32_t, uint8_t *); -__attribute__((__import_module__("wasi:filesystem/types@0.3.0-rc-2026-03-15"), __import_name__("[method]descriptor.create-directory-at"))) +__attribute__((__import_module__("wasi:filesystem/types@0.3.0"), __import_name__("[method]descriptor.create-directory-at"))) extern void __wasm_import_filesystem_method_descriptor_create_directory_at(int32_t, uint8_t *, size_t, uint8_t *); -__attribute__((__import_module__("wasi:filesystem/types@0.3.0-rc-2026-03-15"), __import_name__("[method]descriptor.stat"))) +__attribute__((__import_module__("wasi:filesystem/types@0.3.0"), __import_name__("[method]descriptor.stat"))) extern void __wasm_import_filesystem_method_descriptor_stat(int32_t, uint8_t *); -__attribute__((__import_module__("wasi:filesystem/types@0.3.0-rc-2026-03-15"), __import_name__("[method]descriptor.stat-at"))) +__attribute__((__import_module__("wasi:filesystem/types@0.3.0"), __import_name__("[method]descriptor.stat-at"))) extern void __wasm_import_filesystem_method_descriptor_stat_at(int32_t, int32_t, uint8_t *, size_t, uint8_t *); -__attribute__((__import_module__("wasi:filesystem/types@0.3.0-rc-2026-03-15"), __import_name__("[method]descriptor.set-times-at"))) +__attribute__((__import_module__("wasi:filesystem/types@0.3.0"), __import_name__("[method]descriptor.set-times-at"))) extern void __wasm_import_filesystem_method_descriptor_set_times_at(int32_t, int32_t, uint8_t *, size_t, int32_t, int64_t, int32_t, int32_t, int64_t, int32_t, uint8_t *); -__attribute__((__import_module__("wasi:filesystem/types@0.3.0-rc-2026-03-15"), __import_name__("[method]descriptor.link-at"))) +__attribute__((__import_module__("wasi:filesystem/types@0.3.0"), __import_name__("[method]descriptor.link-at"))) extern void __wasm_import_filesystem_method_descriptor_link_at(int32_t, int32_t, uint8_t *, size_t, int32_t, uint8_t *, size_t, uint8_t *); -__attribute__((__import_module__("wasi:filesystem/types@0.3.0-rc-2026-03-15"), __import_name__("[method]descriptor.open-at"))) +__attribute__((__import_module__("wasi:filesystem/types@0.3.0"), __import_name__("[method]descriptor.open-at"))) extern void __wasm_import_filesystem_method_descriptor_open_at(int32_t, int32_t, uint8_t *, size_t, int32_t, int32_t, uint8_t *); -__attribute__((__import_module__("wasi:filesystem/types@0.3.0-rc-2026-03-15"), __import_name__("[method]descriptor.readlink-at"))) +__attribute__((__import_module__("wasi:filesystem/types@0.3.0"), __import_name__("[method]descriptor.readlink-at"))) extern void __wasm_import_filesystem_method_descriptor_readlink_at(int32_t, uint8_t *, size_t, uint8_t *); -__attribute__((__import_module__("wasi:filesystem/types@0.3.0-rc-2026-03-15"), __import_name__("[method]descriptor.remove-directory-at"))) +__attribute__((__import_module__("wasi:filesystem/types@0.3.0"), __import_name__("[method]descriptor.remove-directory-at"))) extern void __wasm_import_filesystem_method_descriptor_remove_directory_at(int32_t, uint8_t *, size_t, uint8_t *); -__attribute__((__import_module__("wasi:filesystem/types@0.3.0-rc-2026-03-15"), __import_name__("[method]descriptor.rename-at"))) +__attribute__((__import_module__("wasi:filesystem/types@0.3.0"), __import_name__("[method]descriptor.rename-at"))) extern void __wasm_import_filesystem_method_descriptor_rename_at(int32_t, uint8_t *, size_t, int32_t, uint8_t *, size_t, uint8_t *); -__attribute__((__import_module__("wasi:filesystem/types@0.3.0-rc-2026-03-15"), __import_name__("[method]descriptor.symlink-at"))) +__attribute__((__import_module__("wasi:filesystem/types@0.3.0"), __import_name__("[method]descriptor.symlink-at"))) extern void __wasm_import_filesystem_method_descriptor_symlink_at(int32_t, uint8_t *, size_t, uint8_t *, size_t, uint8_t *); -__attribute__((__import_module__("wasi:filesystem/types@0.3.0-rc-2026-03-15"), __import_name__("[method]descriptor.unlink-file-at"))) +__attribute__((__import_module__("wasi:filesystem/types@0.3.0"), __import_name__("[method]descriptor.unlink-file-at"))) extern void __wasm_import_filesystem_method_descriptor_unlink_file_at(int32_t, uint8_t *, size_t, uint8_t *); -__attribute__((__import_module__("wasi:filesystem/types@0.3.0-rc-2026-03-15"), __import_name__("[async-lower][method]descriptor.is-same-object"))) +__attribute__((__import_module__("wasi:filesystem/types@0.3.0"), __import_name__("[async-lower][method]descriptor.is-same-object"))) extern int32_t __wasm_import_filesystem_method_descriptor_is_same_object(int32_t, int32_t, uint8_t *); -__attribute__((__import_module__("wasi:filesystem/types@0.3.0-rc-2026-03-15"), __import_name__("[method]descriptor.metadata-hash"))) +__attribute__((__import_module__("wasi:filesystem/types@0.3.0"), __import_name__("[method]descriptor.metadata-hash"))) extern void __wasm_import_filesystem_method_descriptor_metadata_hash(int32_t, uint8_t *); -__attribute__((__import_module__("wasi:filesystem/types@0.3.0-rc-2026-03-15"), __import_name__("[method]descriptor.metadata-hash-at"))) +__attribute__((__import_module__("wasi:filesystem/types@0.3.0"), __import_name__("[method]descriptor.metadata-hash-at"))) extern void __wasm_import_filesystem_method_descriptor_metadata_hash_at(int32_t, int32_t, uint8_t *, size_t, uint8_t *); -// Imported Functions from `wasi:filesystem/preopens@0.3.0-rc-2026-03-15` +// Imported Functions from `wasi:filesystem/preopens@0.3.0` -__attribute__((__import_module__("wasi:filesystem/preopens@0.3.0-rc-2026-03-15"), __import_name__("get-directories"))) +__attribute__((__import_module__("wasi:filesystem/preopens@0.3.0"), __import_name__("get-directories"))) extern void __wasm_import_filesystem_preopens_get_directories(uint8_t *); -// Imported Functions from `wasi:sockets/types@0.3.0-rc-2026-03-15` +// Imported Functions from `wasi:sockets/types@0.3.0` -__attribute__((__import_module__("wasi:sockets/types@0.3.0-rc-2026-03-15"), __import_name__("[static]tcp-socket.create"))) +__attribute__((__import_module__("wasi:sockets/types@0.3.0"), __import_name__("[static]tcp-socket.create"))) extern void __wasm_import_sockets_static_tcp_socket_create(int32_t, uint8_t *); -__attribute__((__import_module__("wasi:sockets/types@0.3.0-rc-2026-03-15"), __import_name__("[method]tcp-socket.bind"))) +__attribute__((__import_module__("wasi:sockets/types@0.3.0"), __import_name__("[method]tcp-socket.bind"))) extern void __wasm_import_sockets_method_tcp_socket_bind(int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, uint8_t *); -__attribute__((__import_module__("wasi:sockets/types@0.3.0-rc-2026-03-15"), __import_name__("[async-lower][method]tcp-socket.connect"))) +__attribute__((__import_module__("wasi:sockets/types@0.3.0"), __import_name__("[async-lower][method]tcp-socket.connect"))) extern int32_t __wasm_import_sockets_method_tcp_socket_connect(uint8_t *, uint8_t *); -__attribute__((__import_module__("wasi:sockets/types@0.3.0-rc-2026-03-15"), __import_name__("[method]tcp-socket.listen"))) +__attribute__((__import_module__("wasi:sockets/types@0.3.0"), __import_name__("[method]tcp-socket.listen"))) extern void __wasm_import_sockets_method_tcp_socket_listen(int32_t, uint8_t *); -__attribute__((__import_module__("wasi:sockets/types@0.3.0-rc-2026-03-15"), __import_name__("[method]tcp-socket.send"))) +__attribute__((__import_module__("wasi:sockets/types@0.3.0"), __import_name__("[method]tcp-socket.send"))) extern int32_t __wasm_import_sockets_method_tcp_socket_send(int32_t, int32_t); -__attribute__((__import_module__("wasi:sockets/types@0.3.0-rc-2026-03-15"), __import_name__("[method]tcp-socket.receive"))) +__attribute__((__import_module__("wasi:sockets/types@0.3.0"), __import_name__("[method]tcp-socket.receive"))) extern void __wasm_import_sockets_method_tcp_socket_receive(int32_t, uint8_t *); -__attribute__((__import_module__("wasi:sockets/types@0.3.0-rc-2026-03-15"), __import_name__("[method]tcp-socket.get-local-address"))) +__attribute__((__import_module__("wasi:sockets/types@0.3.0"), __import_name__("[method]tcp-socket.get-local-address"))) extern void __wasm_import_sockets_method_tcp_socket_get_local_address(int32_t, uint8_t *); -__attribute__((__import_module__("wasi:sockets/types@0.3.0-rc-2026-03-15"), __import_name__("[method]tcp-socket.get-remote-address"))) +__attribute__((__import_module__("wasi:sockets/types@0.3.0"), __import_name__("[method]tcp-socket.get-remote-address"))) extern void __wasm_import_sockets_method_tcp_socket_get_remote_address(int32_t, uint8_t *); -__attribute__((__import_module__("wasi:sockets/types@0.3.0-rc-2026-03-15"), __import_name__("[method]tcp-socket.get-is-listening"))) +__attribute__((__import_module__("wasi:sockets/types@0.3.0"), __import_name__("[method]tcp-socket.get-is-listening"))) extern int32_t __wasm_import_sockets_method_tcp_socket_get_is_listening(int32_t); -__attribute__((__import_module__("wasi:sockets/types@0.3.0-rc-2026-03-15"), __import_name__("[method]tcp-socket.get-address-family"))) +__attribute__((__import_module__("wasi:sockets/types@0.3.0"), __import_name__("[method]tcp-socket.get-address-family"))) extern int32_t __wasm_import_sockets_method_tcp_socket_get_address_family(int32_t); -__attribute__((__import_module__("wasi:sockets/types@0.3.0-rc-2026-03-15"), __import_name__("[method]tcp-socket.set-listen-backlog-size"))) +__attribute__((__import_module__("wasi:sockets/types@0.3.0"), __import_name__("[method]tcp-socket.set-listen-backlog-size"))) extern void __wasm_import_sockets_method_tcp_socket_set_listen_backlog_size(int32_t, int64_t, uint8_t *); -__attribute__((__import_module__("wasi:sockets/types@0.3.0-rc-2026-03-15"), __import_name__("[method]tcp-socket.get-keep-alive-enabled"))) +__attribute__((__import_module__("wasi:sockets/types@0.3.0"), __import_name__("[method]tcp-socket.get-keep-alive-enabled"))) extern void __wasm_import_sockets_method_tcp_socket_get_keep_alive_enabled(int32_t, uint8_t *); -__attribute__((__import_module__("wasi:sockets/types@0.3.0-rc-2026-03-15"), __import_name__("[method]tcp-socket.set-keep-alive-enabled"))) +__attribute__((__import_module__("wasi:sockets/types@0.3.0"), __import_name__("[method]tcp-socket.set-keep-alive-enabled"))) extern void __wasm_import_sockets_method_tcp_socket_set_keep_alive_enabled(int32_t, int32_t, uint8_t *); -__attribute__((__import_module__("wasi:sockets/types@0.3.0-rc-2026-03-15"), __import_name__("[method]tcp-socket.get-keep-alive-idle-time"))) +__attribute__((__import_module__("wasi:sockets/types@0.3.0"), __import_name__("[method]tcp-socket.get-keep-alive-idle-time"))) extern void __wasm_import_sockets_method_tcp_socket_get_keep_alive_idle_time(int32_t, uint8_t *); -__attribute__((__import_module__("wasi:sockets/types@0.3.0-rc-2026-03-15"), __import_name__("[method]tcp-socket.set-keep-alive-idle-time"))) +__attribute__((__import_module__("wasi:sockets/types@0.3.0"), __import_name__("[method]tcp-socket.set-keep-alive-idle-time"))) extern void __wasm_import_sockets_method_tcp_socket_set_keep_alive_idle_time(int32_t, int64_t, uint8_t *); -__attribute__((__import_module__("wasi:sockets/types@0.3.0-rc-2026-03-15"), __import_name__("[method]tcp-socket.get-keep-alive-interval"))) +__attribute__((__import_module__("wasi:sockets/types@0.3.0"), __import_name__("[method]tcp-socket.get-keep-alive-interval"))) extern void __wasm_import_sockets_method_tcp_socket_get_keep_alive_interval(int32_t, uint8_t *); -__attribute__((__import_module__("wasi:sockets/types@0.3.0-rc-2026-03-15"), __import_name__("[method]tcp-socket.set-keep-alive-interval"))) +__attribute__((__import_module__("wasi:sockets/types@0.3.0"), __import_name__("[method]tcp-socket.set-keep-alive-interval"))) extern void __wasm_import_sockets_method_tcp_socket_set_keep_alive_interval(int32_t, int64_t, uint8_t *); -__attribute__((__import_module__("wasi:sockets/types@0.3.0-rc-2026-03-15"), __import_name__("[method]tcp-socket.get-keep-alive-count"))) +__attribute__((__import_module__("wasi:sockets/types@0.3.0"), __import_name__("[method]tcp-socket.get-keep-alive-count"))) extern void __wasm_import_sockets_method_tcp_socket_get_keep_alive_count(int32_t, uint8_t *); -__attribute__((__import_module__("wasi:sockets/types@0.3.0-rc-2026-03-15"), __import_name__("[method]tcp-socket.set-keep-alive-count"))) +__attribute__((__import_module__("wasi:sockets/types@0.3.0"), __import_name__("[method]tcp-socket.set-keep-alive-count"))) extern void __wasm_import_sockets_method_tcp_socket_set_keep_alive_count(int32_t, int32_t, uint8_t *); -__attribute__((__import_module__("wasi:sockets/types@0.3.0-rc-2026-03-15"), __import_name__("[method]tcp-socket.get-hop-limit"))) +__attribute__((__import_module__("wasi:sockets/types@0.3.0"), __import_name__("[method]tcp-socket.get-hop-limit"))) extern void __wasm_import_sockets_method_tcp_socket_get_hop_limit(int32_t, uint8_t *); -__attribute__((__import_module__("wasi:sockets/types@0.3.0-rc-2026-03-15"), __import_name__("[method]tcp-socket.set-hop-limit"))) +__attribute__((__import_module__("wasi:sockets/types@0.3.0"), __import_name__("[method]tcp-socket.set-hop-limit"))) extern void __wasm_import_sockets_method_tcp_socket_set_hop_limit(int32_t, int32_t, uint8_t *); -__attribute__((__import_module__("wasi:sockets/types@0.3.0-rc-2026-03-15"), __import_name__("[method]tcp-socket.get-receive-buffer-size"))) +__attribute__((__import_module__("wasi:sockets/types@0.3.0"), __import_name__("[method]tcp-socket.get-receive-buffer-size"))) extern void __wasm_import_sockets_method_tcp_socket_get_receive_buffer_size(int32_t, uint8_t *); -__attribute__((__import_module__("wasi:sockets/types@0.3.0-rc-2026-03-15"), __import_name__("[method]tcp-socket.set-receive-buffer-size"))) +__attribute__((__import_module__("wasi:sockets/types@0.3.0"), __import_name__("[method]tcp-socket.set-receive-buffer-size"))) extern void __wasm_import_sockets_method_tcp_socket_set_receive_buffer_size(int32_t, int64_t, uint8_t *); -__attribute__((__import_module__("wasi:sockets/types@0.3.0-rc-2026-03-15"), __import_name__("[method]tcp-socket.get-send-buffer-size"))) +__attribute__((__import_module__("wasi:sockets/types@0.3.0"), __import_name__("[method]tcp-socket.get-send-buffer-size"))) extern void __wasm_import_sockets_method_tcp_socket_get_send_buffer_size(int32_t, uint8_t *); -__attribute__((__import_module__("wasi:sockets/types@0.3.0-rc-2026-03-15"), __import_name__("[method]tcp-socket.set-send-buffer-size"))) +__attribute__((__import_module__("wasi:sockets/types@0.3.0"), __import_name__("[method]tcp-socket.set-send-buffer-size"))) extern void __wasm_import_sockets_method_tcp_socket_set_send_buffer_size(int32_t, int64_t, uint8_t *); -__attribute__((__import_module__("wasi:sockets/types@0.3.0-rc-2026-03-15"), __import_name__("[static]udp-socket.create"))) +__attribute__((__import_module__("wasi:sockets/types@0.3.0"), __import_name__("[static]udp-socket.create"))) extern void __wasm_import_sockets_static_udp_socket_create(int32_t, uint8_t *); -__attribute__((__import_module__("wasi:sockets/types@0.3.0-rc-2026-03-15"), __import_name__("[method]udp-socket.bind"))) +__attribute__((__import_module__("wasi:sockets/types@0.3.0"), __import_name__("[method]udp-socket.bind"))) extern void __wasm_import_sockets_method_udp_socket_bind(int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, uint8_t *); -__attribute__((__import_module__("wasi:sockets/types@0.3.0-rc-2026-03-15"), __import_name__("[method]udp-socket.connect"))) +__attribute__((__import_module__("wasi:sockets/types@0.3.0"), __import_name__("[method]udp-socket.connect"))) extern void __wasm_import_sockets_method_udp_socket_connect(int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, int32_t, uint8_t *); -__attribute__((__import_module__("wasi:sockets/types@0.3.0-rc-2026-03-15"), __import_name__("[method]udp-socket.disconnect"))) +__attribute__((__import_module__("wasi:sockets/types@0.3.0"), __import_name__("[method]udp-socket.disconnect"))) extern void __wasm_import_sockets_method_udp_socket_disconnect(int32_t, uint8_t *); -__attribute__((__import_module__("wasi:sockets/types@0.3.0-rc-2026-03-15"), __import_name__("[async-lower][method]udp-socket.send"))) +__attribute__((__import_module__("wasi:sockets/types@0.3.0"), __import_name__("[async-lower][method]udp-socket.send"))) extern int32_t __wasm_import_sockets_method_udp_socket_send(uint8_t *, uint8_t *); -__attribute__((__import_module__("wasi:sockets/types@0.3.0-rc-2026-03-15"), __import_name__("[async-lower][method]udp-socket.receive"))) +__attribute__((__import_module__("wasi:sockets/types@0.3.0"), __import_name__("[async-lower][method]udp-socket.receive"))) extern int32_t __wasm_import_sockets_method_udp_socket_receive(int32_t, uint8_t *); -__attribute__((__import_module__("wasi:sockets/types@0.3.0-rc-2026-03-15"), __import_name__("[method]udp-socket.get-local-address"))) +__attribute__((__import_module__("wasi:sockets/types@0.3.0"), __import_name__("[method]udp-socket.get-local-address"))) extern void __wasm_import_sockets_method_udp_socket_get_local_address(int32_t, uint8_t *); -__attribute__((__import_module__("wasi:sockets/types@0.3.0-rc-2026-03-15"), __import_name__("[method]udp-socket.get-remote-address"))) +__attribute__((__import_module__("wasi:sockets/types@0.3.0"), __import_name__("[method]udp-socket.get-remote-address"))) extern void __wasm_import_sockets_method_udp_socket_get_remote_address(int32_t, uint8_t *); -__attribute__((__import_module__("wasi:sockets/types@0.3.0-rc-2026-03-15"), __import_name__("[method]udp-socket.get-address-family"))) +__attribute__((__import_module__("wasi:sockets/types@0.3.0"), __import_name__("[method]udp-socket.get-address-family"))) extern int32_t __wasm_import_sockets_method_udp_socket_get_address_family(int32_t); -__attribute__((__import_module__("wasi:sockets/types@0.3.0-rc-2026-03-15"), __import_name__("[method]udp-socket.get-unicast-hop-limit"))) +__attribute__((__import_module__("wasi:sockets/types@0.3.0"), __import_name__("[method]udp-socket.get-unicast-hop-limit"))) extern void __wasm_import_sockets_method_udp_socket_get_unicast_hop_limit(int32_t, uint8_t *); -__attribute__((__import_module__("wasi:sockets/types@0.3.0-rc-2026-03-15"), __import_name__("[method]udp-socket.set-unicast-hop-limit"))) +__attribute__((__import_module__("wasi:sockets/types@0.3.0"), __import_name__("[method]udp-socket.set-unicast-hop-limit"))) extern void __wasm_import_sockets_method_udp_socket_set_unicast_hop_limit(int32_t, int32_t, uint8_t *); -__attribute__((__import_module__("wasi:sockets/types@0.3.0-rc-2026-03-15"), __import_name__("[method]udp-socket.get-receive-buffer-size"))) +__attribute__((__import_module__("wasi:sockets/types@0.3.0"), __import_name__("[method]udp-socket.get-receive-buffer-size"))) extern void __wasm_import_sockets_method_udp_socket_get_receive_buffer_size(int32_t, uint8_t *); -__attribute__((__import_module__("wasi:sockets/types@0.3.0-rc-2026-03-15"), __import_name__("[method]udp-socket.set-receive-buffer-size"))) +__attribute__((__import_module__("wasi:sockets/types@0.3.0"), __import_name__("[method]udp-socket.set-receive-buffer-size"))) extern void __wasm_import_sockets_method_udp_socket_set_receive_buffer_size(int32_t, int64_t, uint8_t *); -__attribute__((__import_module__("wasi:sockets/types@0.3.0-rc-2026-03-15"), __import_name__("[method]udp-socket.get-send-buffer-size"))) +__attribute__((__import_module__("wasi:sockets/types@0.3.0"), __import_name__("[method]udp-socket.get-send-buffer-size"))) extern void __wasm_import_sockets_method_udp_socket_get_send_buffer_size(int32_t, uint8_t *); -__attribute__((__import_module__("wasi:sockets/types@0.3.0-rc-2026-03-15"), __import_name__("[method]udp-socket.set-send-buffer-size"))) +__attribute__((__import_module__("wasi:sockets/types@0.3.0"), __import_name__("[method]udp-socket.set-send-buffer-size"))) extern void __wasm_import_sockets_method_udp_socket_set_send_buffer_size(int32_t, int64_t, uint8_t *); -// Imported Functions from `wasi:sockets/ip-name-lookup@0.3.0-rc-2026-03-15` +// Imported Functions from `wasi:sockets/ip-name-lookup@0.3.0` -__attribute__((__import_module__("wasi:sockets/ip-name-lookup@0.3.0-rc-2026-03-15"), __import_name__("resolve-addresses"))) +__attribute__((__import_module__("wasi:sockets/ip-name-lookup@0.3.0"), __import_name__("resolve-addresses"))) extern void __wasm_import_ip_name_lookup_resolve_addresses(uint8_t *, size_t, uint8_t *); -// Imported Functions from `wasi:random/random@0.3.0-rc-2026-03-15` +// Imported Functions from `wasi:random/random@0.3.0` -__attribute__((__import_module__("wasi:random/random@0.3.0-rc-2026-03-15"), __import_name__("get-random-bytes"))) +__attribute__((__import_module__("wasi:random/random@0.3.0"), __import_name__("get-random-bytes"))) extern void __wasm_import_random_get_random_bytes(int64_t, uint8_t *); -__attribute__((__import_module__("wasi:random/random@0.3.0-rc-2026-03-15"), __import_name__("get-random-u64"))) +__attribute__((__import_module__("wasi:random/random@0.3.0"), __import_name__("get-random-u64"))) extern int64_t __wasm_import_random_get_random_u64(void); -// Imported Functions from `wasi:random/insecure@0.3.0-rc-2026-03-15` +// Imported Functions from `wasi:random/insecure@0.3.0` -__attribute__((__import_module__("wasi:random/insecure@0.3.0-rc-2026-03-15"), __import_name__("get-insecure-random-bytes"))) +__attribute__((__import_module__("wasi:random/insecure@0.3.0"), __import_name__("get-insecure-random-bytes"))) extern void __wasm_import_random_insecure_get_insecure_random_bytes(int64_t, uint8_t *); -__attribute__((__import_module__("wasi:random/insecure@0.3.0-rc-2026-03-15"), __import_name__("get-insecure-random-u64"))) +__attribute__((__import_module__("wasi:random/insecure@0.3.0"), __import_name__("get-insecure-random-u64"))) extern int64_t __wasm_import_random_insecure_get_insecure_random_u64(void); -// Imported Functions from `wasi:random/insecure-seed@0.3.0-rc-2026-03-15` +// Imported Functions from `wasi:random/insecure-seed@0.3.0` -__attribute__((__import_module__("wasi:random/insecure-seed@0.3.0-rc-2026-03-15"), __import_name__("get-insecure-seed"))) +__attribute__((__import_module__("wasi:random/insecure-seed@0.3.0"), __import_name__("get-insecure-seed"))) extern void __wasm_import_random_insecure_seed_get_insecure_seed(uint8_t *); // Canonical ABI intrinsics @@ -358,19 +361,19 @@ void stdin_result_void_error_code_free(stdin_result_void_error_code_t *ptr) { } } -__attribute__((__import_module__("wasi:cli/stdin@0.3.0-rc-2026-03-15"), __import_name__("[stream-new-0]read-via-stream"))) +__attribute__((__import_module__("wasi:cli/stdin@0.3.0"), __import_name__("[stream-new-0]read-via-stream"))) extern uint64_t stdin_stream_u8__new(void); -__attribute__((__import_module__("wasi:cli/stdin@0.3.0-rc-2026-03-15"), __import_name__("[async-lower][stream-read-0]read-via-stream"))) +__attribute__((__import_module__("wasi:cli/stdin@0.3.0"), __import_name__("[async-lower][stream-read-0]read-via-stream"))) extern uint32_t stdin_stream_u8__read(uint32_t, uint8_t*, size_t); -__attribute__((__import_module__("wasi:cli/stdin@0.3.0-rc-2026-03-15"), __import_name__("[async-lower][stream-write-0]read-via-stream"))) +__attribute__((__import_module__("wasi:cli/stdin@0.3.0"), __import_name__("[async-lower][stream-write-0]read-via-stream"))) extern uint32_t stdin_stream_u8__write(uint32_t, const uint8_t*, size_t); -__attribute__((__import_module__("wasi:cli/stdin@0.3.0-rc-2026-03-15"), __import_name__("[stream-cancel-read-0]read-via-stream"))) +__attribute__((__import_module__("wasi:cli/stdin@0.3.0"), __import_name__("[stream-cancel-read-0]read-via-stream"))) extern uint32_t stdin_stream_u8__cancel_read(uint32_t); -__attribute__((__import_module__("wasi:cli/stdin@0.3.0-rc-2026-03-15"), __import_name__("[stream-cancel-write-0]read-via-stream"))) +__attribute__((__import_module__("wasi:cli/stdin@0.3.0"), __import_name__("[stream-cancel-write-0]read-via-stream"))) extern uint32_t stdin_stream_u8__cancel_write(uint32_t); -__attribute__((__import_module__("wasi:cli/stdin@0.3.0-rc-2026-03-15"), __import_name__("[stream-drop-readable-0]read-via-stream"))) +__attribute__((__import_module__("wasi:cli/stdin@0.3.0"), __import_name__("[stream-drop-readable-0]read-via-stream"))) extern void stdin_stream_u8__drop_readable(uint32_t); -__attribute__((__import_module__("wasi:cli/stdin@0.3.0-rc-2026-03-15"), __import_name__("[stream-drop-writable-0]read-via-stream"))) +__attribute__((__import_module__("wasi:cli/stdin@0.3.0"), __import_name__("[stream-drop-writable-0]read-via-stream"))) extern void stdin_stream_u8__drop_writable(uint32_t); stdin_stream_u8_t stdin_stream_u8_new(stdin_stream_u8_writer_t *writer) { @@ -404,19 +407,19 @@ void stdin_stream_u8_drop_writable(stdin_stream_u8_writer_t writer) { } -__attribute__((__import_module__("wasi:cli/stdin@0.3.0-rc-2026-03-15"), __import_name__("[future-new-1]read-via-stream"))) +__attribute__((__import_module__("wasi:cli/stdin@0.3.0"), __import_name__("[future-new-1]read-via-stream"))) extern uint64_t stdin_future_result_void_error_code__new(void); -__attribute__((__import_module__("wasi:cli/stdin@0.3.0-rc-2026-03-15"), __import_name__("[async-lower][future-read-1]read-via-stream"))) +__attribute__((__import_module__("wasi:cli/stdin@0.3.0"), __import_name__("[async-lower][future-read-1]read-via-stream"))) extern uint32_t stdin_future_result_void_error_code__read(uint32_t, uint8_t*); -__attribute__((__import_module__("wasi:cli/stdin@0.3.0-rc-2026-03-15"), __import_name__("[async-lower][future-write-1]read-via-stream"))) +__attribute__((__import_module__("wasi:cli/stdin@0.3.0"), __import_name__("[async-lower][future-write-1]read-via-stream"))) extern uint32_t stdin_future_result_void_error_code__write(uint32_t, const uint8_t*); -__attribute__((__import_module__("wasi:cli/stdin@0.3.0-rc-2026-03-15"), __import_name__("[future-cancel-read-1]read-via-stream"))) +__attribute__((__import_module__("wasi:cli/stdin@0.3.0"), __import_name__("[future-cancel-read-1]read-via-stream"))) extern uint32_t stdin_future_result_void_error_code__cancel_read(uint32_t); -__attribute__((__import_module__("wasi:cli/stdin@0.3.0-rc-2026-03-15"), __import_name__("[future-cancel-write-1]read-via-stream"))) +__attribute__((__import_module__("wasi:cli/stdin@0.3.0"), __import_name__("[future-cancel-write-1]read-via-stream"))) extern uint32_t stdin_future_result_void_error_code__cancel_write(uint32_t); -__attribute__((__import_module__("wasi:cli/stdin@0.3.0-rc-2026-03-15"), __import_name__("[future-drop-readable-1]read-via-stream"))) +__attribute__((__import_module__("wasi:cli/stdin@0.3.0"), __import_name__("[future-drop-readable-1]read-via-stream"))) extern void stdin_future_result_void_error_code__drop_readable(uint32_t); -__attribute__((__import_module__("wasi:cli/stdin@0.3.0-rc-2026-03-15"), __import_name__("[future-drop-writable-1]read-via-stream"))) +__attribute__((__import_module__("wasi:cli/stdin@0.3.0"), __import_name__("[future-drop-writable-1]read-via-stream"))) extern void stdin_future_result_void_error_code__drop_writable(uint32_t); stdin_future_result_void_error_code_t stdin_future_result_void_error_code_new(stdin_future_result_void_error_code_writer_t *writer) { @@ -456,19 +459,19 @@ void stdout_result_void_error_code_free(stdout_result_void_error_code_t *ptr) { } } -__attribute__((__import_module__("wasi:cli/stdout@0.3.0-rc-2026-03-15"), __import_name__("[future-new-1]write-via-stream"))) +__attribute__((__import_module__("wasi:cli/stdout@0.3.0"), __import_name__("[future-new-1]write-via-stream"))) extern uint64_t stdout_future_result_void_error_code__new(void); -__attribute__((__import_module__("wasi:cli/stdout@0.3.0-rc-2026-03-15"), __import_name__("[async-lower][future-read-1]write-via-stream"))) +__attribute__((__import_module__("wasi:cli/stdout@0.3.0"), __import_name__("[async-lower][future-read-1]write-via-stream"))) extern uint32_t stdout_future_result_void_error_code__read(uint32_t, uint8_t*); -__attribute__((__import_module__("wasi:cli/stdout@0.3.0-rc-2026-03-15"), __import_name__("[async-lower][future-write-1]write-via-stream"))) +__attribute__((__import_module__("wasi:cli/stdout@0.3.0"), __import_name__("[async-lower][future-write-1]write-via-stream"))) extern uint32_t stdout_future_result_void_error_code__write(uint32_t, const uint8_t*); -__attribute__((__import_module__("wasi:cli/stdout@0.3.0-rc-2026-03-15"), __import_name__("[future-cancel-read-1]write-via-stream"))) +__attribute__((__import_module__("wasi:cli/stdout@0.3.0"), __import_name__("[future-cancel-read-1]write-via-stream"))) extern uint32_t stdout_future_result_void_error_code__cancel_read(uint32_t); -__attribute__((__import_module__("wasi:cli/stdout@0.3.0-rc-2026-03-15"), __import_name__("[future-cancel-write-1]write-via-stream"))) +__attribute__((__import_module__("wasi:cli/stdout@0.3.0"), __import_name__("[future-cancel-write-1]write-via-stream"))) extern uint32_t stdout_future_result_void_error_code__cancel_write(uint32_t); -__attribute__((__import_module__("wasi:cli/stdout@0.3.0-rc-2026-03-15"), __import_name__("[future-drop-readable-1]write-via-stream"))) +__attribute__((__import_module__("wasi:cli/stdout@0.3.0"), __import_name__("[future-drop-readable-1]write-via-stream"))) extern void stdout_future_result_void_error_code__drop_readable(uint32_t); -__attribute__((__import_module__("wasi:cli/stdout@0.3.0-rc-2026-03-15"), __import_name__("[future-drop-writable-1]write-via-stream"))) +__attribute__((__import_module__("wasi:cli/stdout@0.3.0"), __import_name__("[future-drop-writable-1]write-via-stream"))) extern void stdout_future_result_void_error_code__drop_writable(uint32_t); stdout_future_result_void_error_code_t stdout_future_result_void_error_code_new(stdout_future_result_void_error_code_writer_t *writer) { @@ -508,19 +511,19 @@ void stderr_result_void_error_code_free(stderr_result_void_error_code_t *ptr) { } } -__attribute__((__import_module__("wasi:cli/stderr@0.3.0-rc-2026-03-15"), __import_name__("[future-new-1]write-via-stream"))) +__attribute__((__import_module__("wasi:cli/stderr@0.3.0"), __import_name__("[future-new-1]write-via-stream"))) extern uint64_t stderr_future_result_void_error_code__new(void); -__attribute__((__import_module__("wasi:cli/stderr@0.3.0-rc-2026-03-15"), __import_name__("[async-lower][future-read-1]write-via-stream"))) +__attribute__((__import_module__("wasi:cli/stderr@0.3.0"), __import_name__("[async-lower][future-read-1]write-via-stream"))) extern uint32_t stderr_future_result_void_error_code__read(uint32_t, uint8_t*); -__attribute__((__import_module__("wasi:cli/stderr@0.3.0-rc-2026-03-15"), __import_name__("[async-lower][future-write-1]write-via-stream"))) +__attribute__((__import_module__("wasi:cli/stderr@0.3.0"), __import_name__("[async-lower][future-write-1]write-via-stream"))) extern uint32_t stderr_future_result_void_error_code__write(uint32_t, const uint8_t*); -__attribute__((__import_module__("wasi:cli/stderr@0.3.0-rc-2026-03-15"), __import_name__("[future-cancel-read-1]write-via-stream"))) +__attribute__((__import_module__("wasi:cli/stderr@0.3.0"), __import_name__("[future-cancel-read-1]write-via-stream"))) extern uint32_t stderr_future_result_void_error_code__cancel_read(uint32_t); -__attribute__((__import_module__("wasi:cli/stderr@0.3.0-rc-2026-03-15"), __import_name__("[future-cancel-write-1]write-via-stream"))) +__attribute__((__import_module__("wasi:cli/stderr@0.3.0"), __import_name__("[future-cancel-write-1]write-via-stream"))) extern uint32_t stderr_future_result_void_error_code__cancel_write(uint32_t); -__attribute__((__import_module__("wasi:cli/stderr@0.3.0-rc-2026-03-15"), __import_name__("[future-drop-readable-1]write-via-stream"))) +__attribute__((__import_module__("wasi:cli/stderr@0.3.0"), __import_name__("[future-drop-readable-1]write-via-stream"))) extern void stderr_future_result_void_error_code__drop_readable(uint32_t); -__attribute__((__import_module__("wasi:cli/stderr@0.3.0-rc-2026-03-15"), __import_name__("[future-drop-writable-1]write-via-stream"))) +__attribute__((__import_module__("wasi:cli/stderr@0.3.0"), __import_name__("[future-drop-writable-1]write-via-stream"))) extern void stderr_future_result_void_error_code__drop_writable(uint32_t); stderr_future_result_void_error_code_t stderr_future_result_void_error_code_new(stderr_future_result_void_error_code_writer_t *writer) { @@ -554,7 +557,7 @@ void stderr_future_result_void_error_code_drop_writable(stderr_future_result_voi } -__attribute__((__import_module__("wasi:cli/terminal-input@0.3.0-rc-2026-03-15"), __import_name__("[resource-drop]terminal-input"))) +__attribute__((__import_module__("wasi:cli/terminal-input@0.3.0"), __import_name__("[resource-drop]terminal-input"))) extern void __wasm_import_terminal_input_terminal_input_drop(int32_t handle); void terminal_input_terminal_input_drop_own(terminal_input_own_terminal_input_t handle) { @@ -565,7 +568,7 @@ terminal_input_borrow_terminal_input_t terminal_input_borrow_terminal_input(term return (terminal_input_borrow_terminal_input_t) { arg.__handle }; } -__attribute__((__import_module__("wasi:cli/terminal-output@0.3.0-rc-2026-03-15"), __import_name__("[resource-drop]terminal-output"))) +__attribute__((__import_module__("wasi:cli/terminal-output@0.3.0"), __import_name__("[resource-drop]terminal-output"))) extern void __wasm_import_terminal_output_terminal_output_drop(int32_t handle); void terminal_output_terminal_output_drop_own(terminal_output_own_terminal_output_t handle) { @@ -632,7 +635,7 @@ void filesystem_error_code_free(filesystem_error_code_t *ptr) { } } -__attribute__((__import_module__("wasi:filesystem/types@0.3.0-rc-2026-03-15"), __import_name__("[resource-drop]descriptor"))) +__attribute__((__import_module__("wasi:filesystem/types@0.3.0"), __import_name__("[resource-drop]descriptor"))) extern void __wasm_import_filesystem_descriptor_drop(int32_t handle); void filesystem_descriptor_drop_own(filesystem_own_descriptor_t handle) { @@ -695,19 +698,19 @@ void filesystem_result_metadata_hash_value_error_code_free(filesystem_result_met } } -__attribute__((__import_module__("wasi:filesystem/types@0.3.0-rc-2026-03-15"), __import_name__("[stream-new-0][method]descriptor.read-via-stream"))) +__attribute__((__import_module__("wasi:filesystem/types@0.3.0"), __import_name__("[stream-new-0][method]descriptor.read-via-stream"))) extern uint64_t filesystem_stream_u8__new(void); -__attribute__((__import_module__("wasi:filesystem/types@0.3.0-rc-2026-03-15"), __import_name__("[async-lower][stream-read-0][method]descriptor.read-via-stream"))) +__attribute__((__import_module__("wasi:filesystem/types@0.3.0"), __import_name__("[async-lower][stream-read-0][method]descriptor.read-via-stream"))) extern uint32_t filesystem_stream_u8__read(uint32_t, uint8_t*, size_t); -__attribute__((__import_module__("wasi:filesystem/types@0.3.0-rc-2026-03-15"), __import_name__("[async-lower][stream-write-0][method]descriptor.read-via-stream"))) +__attribute__((__import_module__("wasi:filesystem/types@0.3.0"), __import_name__("[async-lower][stream-write-0][method]descriptor.read-via-stream"))) extern uint32_t filesystem_stream_u8__write(uint32_t, const uint8_t*, size_t); -__attribute__((__import_module__("wasi:filesystem/types@0.3.0-rc-2026-03-15"), __import_name__("[stream-cancel-read-0][method]descriptor.read-via-stream"))) +__attribute__((__import_module__("wasi:filesystem/types@0.3.0"), __import_name__("[stream-cancel-read-0][method]descriptor.read-via-stream"))) extern uint32_t filesystem_stream_u8__cancel_read(uint32_t); -__attribute__((__import_module__("wasi:filesystem/types@0.3.0-rc-2026-03-15"), __import_name__("[stream-cancel-write-0][method]descriptor.read-via-stream"))) +__attribute__((__import_module__("wasi:filesystem/types@0.3.0"), __import_name__("[stream-cancel-write-0][method]descriptor.read-via-stream"))) extern uint32_t filesystem_stream_u8__cancel_write(uint32_t); -__attribute__((__import_module__("wasi:filesystem/types@0.3.0-rc-2026-03-15"), __import_name__("[stream-drop-readable-0][method]descriptor.read-via-stream"))) +__attribute__((__import_module__("wasi:filesystem/types@0.3.0"), __import_name__("[stream-drop-readable-0][method]descriptor.read-via-stream"))) extern void filesystem_stream_u8__drop_readable(uint32_t); -__attribute__((__import_module__("wasi:filesystem/types@0.3.0-rc-2026-03-15"), __import_name__("[stream-drop-writable-0][method]descriptor.read-via-stream"))) +__attribute__((__import_module__("wasi:filesystem/types@0.3.0"), __import_name__("[stream-drop-writable-0][method]descriptor.read-via-stream"))) extern void filesystem_stream_u8__drop_writable(uint32_t); filesystem_stream_u8_t filesystem_stream_u8_new(filesystem_stream_u8_writer_t *writer) { @@ -741,19 +744,19 @@ void filesystem_stream_u8_drop_writable(filesystem_stream_u8_writer_t writer) { } -__attribute__((__import_module__("wasi:filesystem/types@0.3.0-rc-2026-03-15"), __import_name__("[future-new-1][method]descriptor.read-via-stream"))) +__attribute__((__import_module__("wasi:filesystem/types@0.3.0"), __import_name__("[future-new-1][method]descriptor.read-via-stream"))) extern uint64_t filesystem_future_result_void_error_code__new(void); -__attribute__((__import_module__("wasi:filesystem/types@0.3.0-rc-2026-03-15"), __import_name__("[async-lower][future-read-1][method]descriptor.read-via-stream"))) +__attribute__((__import_module__("wasi:filesystem/types@0.3.0"), __import_name__("[async-lower][future-read-1][method]descriptor.read-via-stream"))) extern uint32_t filesystem_future_result_void_error_code__read(uint32_t, uint8_t*); -__attribute__((__import_module__("wasi:filesystem/types@0.3.0-rc-2026-03-15"), __import_name__("[async-lower][future-write-1][method]descriptor.read-via-stream"))) +__attribute__((__import_module__("wasi:filesystem/types@0.3.0"), __import_name__("[async-lower][future-write-1][method]descriptor.read-via-stream"))) extern uint32_t filesystem_future_result_void_error_code__write(uint32_t, const uint8_t*); -__attribute__((__import_module__("wasi:filesystem/types@0.3.0-rc-2026-03-15"), __import_name__("[future-cancel-read-1][method]descriptor.read-via-stream"))) +__attribute__((__import_module__("wasi:filesystem/types@0.3.0"), __import_name__("[future-cancel-read-1][method]descriptor.read-via-stream"))) extern uint32_t filesystem_future_result_void_error_code__cancel_read(uint32_t); -__attribute__((__import_module__("wasi:filesystem/types@0.3.0-rc-2026-03-15"), __import_name__("[future-cancel-write-1][method]descriptor.read-via-stream"))) +__attribute__((__import_module__("wasi:filesystem/types@0.3.0"), __import_name__("[future-cancel-write-1][method]descriptor.read-via-stream"))) extern uint32_t filesystem_future_result_void_error_code__cancel_write(uint32_t); -__attribute__((__import_module__("wasi:filesystem/types@0.3.0-rc-2026-03-15"), __import_name__("[future-drop-readable-1][method]descriptor.read-via-stream"))) +__attribute__((__import_module__("wasi:filesystem/types@0.3.0"), __import_name__("[future-drop-readable-1][method]descriptor.read-via-stream"))) extern void filesystem_future_result_void_error_code__drop_readable(uint32_t); -__attribute__((__import_module__("wasi:filesystem/types@0.3.0-rc-2026-03-15"), __import_name__("[future-drop-writable-1][method]descriptor.read-via-stream"))) +__attribute__((__import_module__("wasi:filesystem/types@0.3.0"), __import_name__("[future-drop-writable-1][method]descriptor.read-via-stream"))) extern void filesystem_future_result_void_error_code__drop_writable(uint32_t); filesystem_future_result_void_error_code_t filesystem_future_result_void_error_code_new(filesystem_future_result_void_error_code_writer_t *writer) { @@ -787,19 +790,19 @@ void filesystem_future_result_void_error_code_drop_writable(filesystem_future_re } -__attribute__((__import_module__("wasi:filesystem/types@0.3.0-rc-2026-03-15"), __import_name__("[stream-new-0][method]descriptor.read-directory"))) +__attribute__((__import_module__("wasi:filesystem/types@0.3.0"), __import_name__("[stream-new-0][method]descriptor.read-directory"))) extern uint64_t filesystem_stream_directory_entry__new(void); -__attribute__((__import_module__("wasi:filesystem/types@0.3.0-rc-2026-03-15"), __import_name__("[async-lower][stream-read-0][method]descriptor.read-directory"))) +__attribute__((__import_module__("wasi:filesystem/types@0.3.0"), __import_name__("[async-lower][stream-read-0][method]descriptor.read-directory"))) extern uint32_t filesystem_stream_directory_entry__read(uint32_t, uint8_t*, size_t); -__attribute__((__import_module__("wasi:filesystem/types@0.3.0-rc-2026-03-15"), __import_name__("[async-lower][stream-write-0][method]descriptor.read-directory"))) +__attribute__((__import_module__("wasi:filesystem/types@0.3.0"), __import_name__("[async-lower][stream-write-0][method]descriptor.read-directory"))) extern uint32_t filesystem_stream_directory_entry__write(uint32_t, const uint8_t*, size_t); -__attribute__((__import_module__("wasi:filesystem/types@0.3.0-rc-2026-03-15"), __import_name__("[stream-cancel-read-0][method]descriptor.read-directory"))) +__attribute__((__import_module__("wasi:filesystem/types@0.3.0"), __import_name__("[stream-cancel-read-0][method]descriptor.read-directory"))) extern uint32_t filesystem_stream_directory_entry__cancel_read(uint32_t); -__attribute__((__import_module__("wasi:filesystem/types@0.3.0-rc-2026-03-15"), __import_name__("[stream-cancel-write-0][method]descriptor.read-directory"))) +__attribute__((__import_module__("wasi:filesystem/types@0.3.0"), __import_name__("[stream-cancel-write-0][method]descriptor.read-directory"))) extern uint32_t filesystem_stream_directory_entry__cancel_write(uint32_t); -__attribute__((__import_module__("wasi:filesystem/types@0.3.0-rc-2026-03-15"), __import_name__("[stream-drop-readable-0][method]descriptor.read-directory"))) +__attribute__((__import_module__("wasi:filesystem/types@0.3.0"), __import_name__("[stream-drop-readable-0][method]descriptor.read-directory"))) extern void filesystem_stream_directory_entry__drop_readable(uint32_t); -__attribute__((__import_module__("wasi:filesystem/types@0.3.0-rc-2026-03-15"), __import_name__("[stream-drop-writable-0][method]descriptor.read-directory"))) +__attribute__((__import_module__("wasi:filesystem/types@0.3.0"), __import_name__("[stream-drop-writable-0][method]descriptor.read-directory"))) extern void filesystem_stream_directory_entry__drop_writable(uint32_t); filesystem_stream_directory_entry_t filesystem_stream_directory_entry_new(filesystem_stream_directory_entry_writer_t *writer) { @@ -878,7 +881,7 @@ void sockets_ip_socket_address_free(sockets_ip_socket_address_t *ptr) { } } -__attribute__((__import_module__("wasi:sockets/types@0.3.0-rc-2026-03-15"), __import_name__("[resource-drop]tcp-socket"))) +__attribute__((__import_module__("wasi:sockets/types@0.3.0"), __import_name__("[resource-drop]tcp-socket"))) extern void __wasm_import_sockets_tcp_socket_drop(int32_t handle); void sockets_tcp_socket_drop_own(sockets_own_tcp_socket_t handle) { @@ -889,7 +892,7 @@ sockets_borrow_tcp_socket_t sockets_borrow_tcp_socket(sockets_own_tcp_socket_t a return (sockets_borrow_tcp_socket_t) { arg.__handle }; } -__attribute__((__import_module__("wasi:sockets/types@0.3.0-rc-2026-03-15"), __import_name__("[resource-drop]udp-socket"))) +__attribute__((__import_module__("wasi:sockets/types@0.3.0"), __import_name__("[resource-drop]udp-socket"))) extern void __wasm_import_sockets_udp_socket_drop(int32_t handle); void sockets_udp_socket_drop_own(sockets_own_udp_socket_t handle) { @@ -1000,19 +1003,19 @@ void sockets_result_tuple2_list_u8_ip_socket_address_error_code_free(sockets_res } } -__attribute__((__import_module__("wasi:sockets/types@0.3.0-rc-2026-03-15"), __import_name__("[stream-new-0][method]tcp-socket.listen"))) +__attribute__((__import_module__("wasi:sockets/types@0.3.0"), __import_name__("[stream-new-0][method]tcp-socket.listen"))) extern uint64_t sockets_stream_own_tcp_socket__new(void); -__attribute__((__import_module__("wasi:sockets/types@0.3.0-rc-2026-03-15"), __import_name__("[async-lower][stream-read-0][method]tcp-socket.listen"))) +__attribute__((__import_module__("wasi:sockets/types@0.3.0"), __import_name__("[async-lower][stream-read-0][method]tcp-socket.listen"))) extern uint32_t sockets_stream_own_tcp_socket__read(uint32_t, uint8_t*, size_t); -__attribute__((__import_module__("wasi:sockets/types@0.3.0-rc-2026-03-15"), __import_name__("[async-lower][stream-write-0][method]tcp-socket.listen"))) +__attribute__((__import_module__("wasi:sockets/types@0.3.0"), __import_name__("[async-lower][stream-write-0][method]tcp-socket.listen"))) extern uint32_t sockets_stream_own_tcp_socket__write(uint32_t, const uint8_t*, size_t); -__attribute__((__import_module__("wasi:sockets/types@0.3.0-rc-2026-03-15"), __import_name__("[stream-cancel-read-0][method]tcp-socket.listen"))) +__attribute__((__import_module__("wasi:sockets/types@0.3.0"), __import_name__("[stream-cancel-read-0][method]tcp-socket.listen"))) extern uint32_t sockets_stream_own_tcp_socket__cancel_read(uint32_t); -__attribute__((__import_module__("wasi:sockets/types@0.3.0-rc-2026-03-15"), __import_name__("[stream-cancel-write-0][method]tcp-socket.listen"))) +__attribute__((__import_module__("wasi:sockets/types@0.3.0"), __import_name__("[stream-cancel-write-0][method]tcp-socket.listen"))) extern uint32_t sockets_stream_own_tcp_socket__cancel_write(uint32_t); -__attribute__((__import_module__("wasi:sockets/types@0.3.0-rc-2026-03-15"), __import_name__("[stream-drop-readable-0][method]tcp-socket.listen"))) +__attribute__((__import_module__("wasi:sockets/types@0.3.0"), __import_name__("[stream-drop-readable-0][method]tcp-socket.listen"))) extern void sockets_stream_own_tcp_socket__drop_readable(uint32_t); -__attribute__((__import_module__("wasi:sockets/types@0.3.0-rc-2026-03-15"), __import_name__("[stream-drop-writable-0][method]tcp-socket.listen"))) +__attribute__((__import_module__("wasi:sockets/types@0.3.0"), __import_name__("[stream-drop-writable-0][method]tcp-socket.listen"))) extern void sockets_stream_own_tcp_socket__drop_writable(uint32_t); sockets_stream_own_tcp_socket_t sockets_stream_own_tcp_socket_new(sockets_stream_own_tcp_socket_writer_t *writer) { @@ -1046,19 +1049,19 @@ void sockets_stream_own_tcp_socket_drop_writable(sockets_stream_own_tcp_socket_w } -__attribute__((__import_module__("wasi:sockets/types@0.3.0-rc-2026-03-15"), __import_name__("[stream-new-0][method]tcp-socket.send"))) +__attribute__((__import_module__("wasi:sockets/types@0.3.0"), __import_name__("[stream-new-0][method]tcp-socket.send"))) extern uint64_t sockets_stream_u8__new(void); -__attribute__((__import_module__("wasi:sockets/types@0.3.0-rc-2026-03-15"), __import_name__("[async-lower][stream-read-0][method]tcp-socket.send"))) +__attribute__((__import_module__("wasi:sockets/types@0.3.0"), __import_name__("[async-lower][stream-read-0][method]tcp-socket.send"))) extern uint32_t sockets_stream_u8__read(uint32_t, uint8_t*, size_t); -__attribute__((__import_module__("wasi:sockets/types@0.3.0-rc-2026-03-15"), __import_name__("[async-lower][stream-write-0][method]tcp-socket.send"))) +__attribute__((__import_module__("wasi:sockets/types@0.3.0"), __import_name__("[async-lower][stream-write-0][method]tcp-socket.send"))) extern uint32_t sockets_stream_u8__write(uint32_t, const uint8_t*, size_t); -__attribute__((__import_module__("wasi:sockets/types@0.3.0-rc-2026-03-15"), __import_name__("[stream-cancel-read-0][method]tcp-socket.send"))) +__attribute__((__import_module__("wasi:sockets/types@0.3.0"), __import_name__("[stream-cancel-read-0][method]tcp-socket.send"))) extern uint32_t sockets_stream_u8__cancel_read(uint32_t); -__attribute__((__import_module__("wasi:sockets/types@0.3.0-rc-2026-03-15"), __import_name__("[stream-cancel-write-0][method]tcp-socket.send"))) +__attribute__((__import_module__("wasi:sockets/types@0.3.0"), __import_name__("[stream-cancel-write-0][method]tcp-socket.send"))) extern uint32_t sockets_stream_u8__cancel_write(uint32_t); -__attribute__((__import_module__("wasi:sockets/types@0.3.0-rc-2026-03-15"), __import_name__("[stream-drop-readable-0][method]tcp-socket.send"))) +__attribute__((__import_module__("wasi:sockets/types@0.3.0"), __import_name__("[stream-drop-readable-0][method]tcp-socket.send"))) extern void sockets_stream_u8__drop_readable(uint32_t); -__attribute__((__import_module__("wasi:sockets/types@0.3.0-rc-2026-03-15"), __import_name__("[stream-drop-writable-0][method]tcp-socket.send"))) +__attribute__((__import_module__("wasi:sockets/types@0.3.0"), __import_name__("[stream-drop-writable-0][method]tcp-socket.send"))) extern void sockets_stream_u8__drop_writable(uint32_t); sockets_stream_u8_t sockets_stream_u8_new(sockets_stream_u8_writer_t *writer) { @@ -1092,19 +1095,19 @@ void sockets_stream_u8_drop_writable(sockets_stream_u8_writer_t writer) { } -__attribute__((__import_module__("wasi:sockets/types@0.3.0-rc-2026-03-15"), __import_name__("[future-new-1][method]tcp-socket.send"))) +__attribute__((__import_module__("wasi:sockets/types@0.3.0"), __import_name__("[future-new-1][method]tcp-socket.send"))) extern uint64_t sockets_future_result_void_error_code__new(void); -__attribute__((__import_module__("wasi:sockets/types@0.3.0-rc-2026-03-15"), __import_name__("[async-lower][future-read-1][method]tcp-socket.send"))) +__attribute__((__import_module__("wasi:sockets/types@0.3.0"), __import_name__("[async-lower][future-read-1][method]tcp-socket.send"))) extern uint32_t sockets_future_result_void_error_code__read(uint32_t, uint8_t*); -__attribute__((__import_module__("wasi:sockets/types@0.3.0-rc-2026-03-15"), __import_name__("[async-lower][future-write-1][method]tcp-socket.send"))) +__attribute__((__import_module__("wasi:sockets/types@0.3.0"), __import_name__("[async-lower][future-write-1][method]tcp-socket.send"))) extern uint32_t sockets_future_result_void_error_code__write(uint32_t, const uint8_t*); -__attribute__((__import_module__("wasi:sockets/types@0.3.0-rc-2026-03-15"), __import_name__("[future-cancel-read-1][method]tcp-socket.send"))) +__attribute__((__import_module__("wasi:sockets/types@0.3.0"), __import_name__("[future-cancel-read-1][method]tcp-socket.send"))) extern uint32_t sockets_future_result_void_error_code__cancel_read(uint32_t); -__attribute__((__import_module__("wasi:sockets/types@0.3.0-rc-2026-03-15"), __import_name__("[future-cancel-write-1][method]tcp-socket.send"))) +__attribute__((__import_module__("wasi:sockets/types@0.3.0"), __import_name__("[future-cancel-write-1][method]tcp-socket.send"))) extern uint32_t sockets_future_result_void_error_code__cancel_write(uint32_t); -__attribute__((__import_module__("wasi:sockets/types@0.3.0-rc-2026-03-15"), __import_name__("[future-drop-readable-1][method]tcp-socket.send"))) +__attribute__((__import_module__("wasi:sockets/types@0.3.0"), __import_name__("[future-drop-readable-1][method]tcp-socket.send"))) extern void sockets_future_result_void_error_code__drop_readable(uint32_t); -__attribute__((__import_module__("wasi:sockets/types@0.3.0-rc-2026-03-15"), __import_name__("[future-drop-writable-1][method]tcp-socket.send"))) +__attribute__((__import_module__("wasi:sockets/types@0.3.0"), __import_name__("[future-drop-writable-1][method]tcp-socket.send"))) extern void sockets_future_result_void_error_code__drop_writable(uint32_t); sockets_future_result_void_error_code_t sockets_future_result_void_error_code_new(sockets_future_result_void_error_code_writer_t *writer) { @@ -1437,6 +1440,10 @@ void exit_exit(exit_result_void_void_t *status) { __wasm_import_exit_exit(result); } +void exit_exit_with_code(uint8_t status_code) { + __wasm_import_exit_exit_with_code((int32_t) (status_code)); +} + void stdin_read_via_stream(stdin_tuple2_stream_u8_future_result_void_error_code_t *ret) { __attribute__((__aligned__(4))) uint8_t ret_area[8]; diff --git a/libc-bottom-half/sources/wasip3_component_type.o b/libc-bottom-half/sources/wasip3_component_type.o index f832cbd607b13967b6ceb61a6a2b23d48f76c7fa..db16a3a80b4e0476389a6fb809ef78ac5fe5d771 100644 GIT binary patch delta 562 zcmY+9%}!H69L489A7Ij`0io7g?u-o!7TAx(9TC$smc$h+z_{zj7zb|eE%#0-T@W6? z#DM#WQ-heVMP*U#~8k&2z8c zNX%9%Fl8N{m^cbMI<(bF>1C-R2-E}|5&~6NNNmIQ5(0!1u1}2xaB60(7F$tUpAD@? zL#x;~_Txwc%E*)Hfb-I3fEtAkqXxI2w7N1u?4YZYF@v9A-i_pxAT^cvI^HiDwdcYBrrBND4jV!-yK zKN*-{Gsoax_6{WOaEUR0<6hsmEQ^Q3|MfX}(C)K~DNHRY!fN7rCMibk$)}iP!_WeRozaPrg@L~$wJ0|;FEK|KXj4IH z2{SM#bl?s^lf-I)B6BFvf&doL$vw;*e5jU8p28f#r~{G|$K?@j78kGzIdrXgEaGaa zP?zKA(M2!&PcL)mamNG5`+&CDxKO)f1;#i}}3 fPMuMAa list>; /// Get the POSIX-style arguments to the program. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) get-arguments: func() -> list; /// Return a path that programs should use as their initial current working /// directory, interpreting `.` as shorthand for this. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) get-initial-cwd: func() -> option; } -@since(version = 0.3.0-rc-2026-03-15) +@since(version = 0.3.0) interface exit { /// Exit the current instance and any linked instances. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) exit: func(status: result); /// Exit the current instance and any linked instances, reporting the @@ -37,20 +37,20 @@ interface exit { /// /// This function does not return; the effect is analogous to a trap, but /// without the connotation that something bad has happened. - @unstable(feature = cli-exit-with-code) + @since(version = 0.3.0) exit-with-code: func(status-code: u8); } -@since(version = 0.3.0-rc-2026-03-15) +@since(version = 0.3.0) interface run { /// Run the program. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) run: async func() -> result; } -@since(version = 0.3.0-rc-2026-03-15) +@since(version = 0.3.0) interface types { - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) enum error-code { /// Input/output error io, @@ -61,7 +61,7 @@ interface types { } } -@since(version = 0.3.0-rc-2026-03-15) +@since(version = 0.3.0) interface stdin { use types.{error-code}; @@ -78,11 +78,11 @@ interface stdin { /// /// Multiple streams may be active at the same time. The behavior of concurrent /// reads is implementation-specific. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) read-via-stream: func() -> tuple, future>>; } -@since(version = 0.3.0-rc-2026-03-15) +@since(version = 0.3.0) interface stdout { use types.{error-code}; @@ -94,11 +94,11 @@ interface stdout { /// /// Otherwise if there is an error the readable end of the stream will be /// dropped and this function will return an error-code. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) write-via-stream: func(data: stream) -> future>; } -@since(version = 0.3.0-rc-2026-03-15) +@since(version = 0.3.0) interface stderr { use types.{error-code}; @@ -110,7 +110,7 @@ interface stderr { /// /// Otherwise if there is an error the readable end of the stream will be /// dropped and this function will return an error-code. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) write-via-stream: func(data: stream) -> future>; } @@ -119,10 +119,10 @@ interface stderr { /// In the future, this may include functions for disabling echoing, /// disabling input buffering so that keyboard events are sent through /// immediately, querying supported features, and so on. -@since(version = 0.3.0-rc-2026-03-15) +@since(version = 0.3.0) interface terminal-input { /// The input side of a terminal. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) resource terminal-input; } @@ -131,126 +131,126 @@ interface terminal-input { /// In the future, this may include functions for querying the terminal /// size, being notified of terminal size changes, querying supported /// features, and so on. -@since(version = 0.3.0-rc-2026-03-15) +@since(version = 0.3.0) interface terminal-output { /// The output side of a terminal. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) resource terminal-output; } /// An interface providing an optional `terminal-input` for stdin as a /// link-time authority. -@since(version = 0.3.0-rc-2026-03-15) +@since(version = 0.3.0) interface terminal-stdin { - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) use terminal-input.{terminal-input}; /// If stdin is connected to a terminal, return a `terminal-input` handle /// allowing further interaction with it. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) get-terminal-stdin: func() -> option; } /// An interface providing an optional `terminal-output` for stdout as a /// link-time authority. -@since(version = 0.3.0-rc-2026-03-15) +@since(version = 0.3.0) interface terminal-stdout { - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) use terminal-output.{terminal-output}; /// If stdout is connected to a terminal, return a `terminal-output` handle /// allowing further interaction with it. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) get-terminal-stdout: func() -> option; } /// An interface providing an optional `terminal-output` for stderr as a /// link-time authority. -@since(version = 0.3.0-rc-2026-03-15) +@since(version = 0.3.0) interface terminal-stderr { - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) use terminal-output.{terminal-output}; /// If stderr is connected to a terminal, return a `terminal-output` handle /// allowing further interaction with it. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) get-terminal-stderr: func() -> option; } -@since(version = 0.3.0-rc-2026-03-15) +@since(version = 0.3.0) world imports { - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) import environment; - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) import exit; - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) import types; - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) import stdin; - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) import stdout; - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) import stderr; - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) import terminal-input; - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) import terminal-output; - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) import terminal-stdin; - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) import terminal-stdout; - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) import terminal-stderr; - import wasi:clocks/types@0.3.0-rc-2026-03-15; - import wasi:clocks/monotonic-clock@0.3.0-rc-2026-03-15; - import wasi:clocks/system-clock@0.3.0-rc-2026-03-15; + import wasi:clocks/types@0.3.0; + import wasi:clocks/monotonic-clock@0.3.0; + import wasi:clocks/system-clock@0.3.0; @unstable(feature = clocks-timezone) - import wasi:clocks/timezone@0.3.0-rc-2026-03-15; - import wasi:filesystem/types@0.3.0-rc-2026-03-15; - import wasi:filesystem/preopens@0.3.0-rc-2026-03-15; - import wasi:sockets/types@0.3.0-rc-2026-03-15; - import wasi:sockets/ip-name-lookup@0.3.0-rc-2026-03-15; - import wasi:random/random@0.3.0-rc-2026-03-15; - import wasi:random/insecure@0.3.0-rc-2026-03-15; - import wasi:random/insecure-seed@0.3.0-rc-2026-03-15; + import wasi:clocks/timezone@0.3.0; + import wasi:filesystem/types@0.3.0; + import wasi:filesystem/preopens@0.3.0; + import wasi:sockets/types@0.3.0; + import wasi:sockets/ip-name-lookup@0.3.0; + import wasi:random/random@0.3.0; + import wasi:random/insecure@0.3.0; + import wasi:random/insecure-seed@0.3.0; } -@since(version = 0.3.0-rc-2026-03-15) +@since(version = 0.3.0) world command { - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) import environment; - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) import exit; - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) import types; - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) import stdin; - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) import stdout; - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) import stderr; - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) import terminal-input; - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) import terminal-output; - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) import terminal-stdin; - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) import terminal-stdout; - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) import terminal-stderr; - import wasi:clocks/types@0.3.0-rc-2026-03-15; - import wasi:clocks/monotonic-clock@0.3.0-rc-2026-03-15; - import wasi:clocks/system-clock@0.3.0-rc-2026-03-15; + import wasi:clocks/types@0.3.0; + import wasi:clocks/monotonic-clock@0.3.0; + import wasi:clocks/system-clock@0.3.0; @unstable(feature = clocks-timezone) - import wasi:clocks/timezone@0.3.0-rc-2026-03-15; - import wasi:filesystem/types@0.3.0-rc-2026-03-15; - import wasi:filesystem/preopens@0.3.0-rc-2026-03-15; - import wasi:sockets/types@0.3.0-rc-2026-03-15; - import wasi:sockets/ip-name-lookup@0.3.0-rc-2026-03-15; - import wasi:random/random@0.3.0-rc-2026-03-15; - import wasi:random/insecure@0.3.0-rc-2026-03-15; - import wasi:random/insecure-seed@0.3.0-rc-2026-03-15; + import wasi:clocks/timezone@0.3.0; + import wasi:filesystem/types@0.3.0; + import wasi:filesystem/preopens@0.3.0; + import wasi:sockets/types@0.3.0; + import wasi:sockets/ip-name-lookup@0.3.0; + import wasi:random/random@0.3.0; + import wasi:random/insecure@0.3.0; + import wasi:random/insecure-seed@0.3.0; - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) export run; } diff --git a/wasi/p3/wit/deps/wasi-clocks-0.3.0-rc-2026-03-15/package.wit b/wasi/p3/wit/deps/wasi-clocks-0.3.0/package.wit similarity index 89% rename from wasi/p3/wit/deps/wasi-clocks-0.3.0-rc-2026-03-15/package.wit rename to wasi/p3/wit/deps/wasi-clocks-0.3.0/package.wit index 19fc4bcd5..d8b8cfe4e 100644 --- a/wasi/p3/wit/deps/wasi-clocks-0.3.0-rc-2026-03-15/package.wit +++ b/wasi/p3/wit/deps/wasi-clocks-0.3.0/package.wit @@ -1,10 +1,10 @@ -package wasi:clocks@0.3.0-rc-2026-03-15; +package wasi:clocks@0.3.0; /// This interface common types used throughout wasi:clocks. -@since(version = 0.3.0-rc-2026-03-15) +@since(version = 0.3.0) interface types { /// A duration of time, in nanoseconds. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) type duration = u64; } @@ -16,14 +16,14 @@ interface types { /// /// A monotonic clock is a clock which has an unspecified initial value, and /// successive reads of the clock will produce non-decreasing values. -@since(version = 0.3.0-rc-2026-03-15) +@since(version = 0.3.0) interface monotonic-clock { use types.{duration}; /// A mark on a monotonic clock is a number of nanoseconds since an /// unspecified initial value, and can only be compared to instances from /// the same monotonic-clock. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) type mark = u64; /// Read the current value of the clock. @@ -35,20 +35,20 @@ interface monotonic-clock { /// the value of the clock in a `mark`. Consequently, implementations /// should ensure that the starting time is low enough to avoid the /// possibility of overflow in practice. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) now: func() -> mark; /// Query the resolution of the clock. Returns the duration of time /// corresponding to a clock tick. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) get-resolution: func() -> duration; /// Wait until the specified mark has occurred. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) wait-until: async func(when: mark); /// Wait for the specified duration to elapse. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) wait-for: async func(how-long: duration); } @@ -62,7 +62,7 @@ interface monotonic-clock { /// monotonic, making it unsuitable for measuring elapsed time. /// /// It is intended for reporting the current date and time for humans. -@since(version = 0.3.0-rc-2026-03-15) +@since(version = 0.3.0) interface system-clock { use types.{duration}; @@ -82,7 +82,7 @@ interface system-clock { /// /// [POSIX's Seconds Since the Epoch]: https://pubs.opengroup.org/onlinepubs/9699919799/xrat/V4_xbd_chap04.html#tag_21_04_16 /// [Unix Time]: https://en.wikipedia.org/wiki/Unix_time - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) record instant { seconds: s64, nanoseconds: u32, @@ -94,12 +94,12 @@ interface system-clock { /// will not necessarily produce a sequence of non-decreasing values. /// /// The nanoseconds field of the output is always less than 1000000000. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) now: func() -> instant; /// Query the resolution of the clock. Returns the smallest duration of time /// that the implementation permits distinguishing. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) get-resolution: func() -> duration; } @@ -148,13 +148,13 @@ interface timezone { to-debug-string: func() -> string; } -@since(version = 0.3.0-rc-2026-03-15) +@since(version = 0.3.0) world imports { - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) import types; - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) import monotonic-clock; - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) import system-clock; @unstable(feature = clocks-timezone) import timezone; diff --git a/wasi/p3/wit/deps/wasi-filesystem-0.3.0-rc-2026-03-15/package.wit b/wasi/p3/wit/deps/wasi-filesystem-0.3.0/package.wit similarity index 91% rename from wasi/p3/wit/deps/wasi-filesystem-0.3.0-rc-2026-03-15/package.wit rename to wasi/p3/wit/deps/wasi-filesystem-0.3.0/package.wit index 697681f30..e4a778f3d 100644 --- a/wasi/p3/wit/deps/wasi-filesystem-0.3.0-rc-2026-03-15/package.wit +++ b/wasi/p3/wit/deps/wasi-filesystem-0.3.0/package.wit @@ -1,4 +1,4 @@ -package wasi:filesystem@0.3.0-rc-2026-03-15; +package wasi:filesystem@0.3.0; /// WASI filesystem is a filesystem API primarily intended to let users run WASI /// programs that access their files on their existing filesystems, without @@ -35,19 +35,19 @@ package wasi:filesystem@0.3.0-rc-2026-03-15; /// store or a database instead. /// /// [WASI filesystem path resolution]: https://github.com/WebAssembly/wasi-filesystem/blob/main/path-resolution.md -@since(version = 0.3.0-rc-2026-03-15) +@since(version = 0.3.0) interface types { - @since(version = 0.3.0-rc-2026-03-15) - use wasi:clocks/system-clock@0.3.0-rc-2026-03-15.{instant}; + @since(version = 0.3.0) + use wasi:clocks/system-clock@0.3.0.{instant}; /// File size or length of a region within a file. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) type filesize = u64; /// The type of a filesystem object referenced by a descriptor. /// /// Note: This was called `filetype` in earlier versions of WASI. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) variant descriptor-type { /// The descriptor refers to a block device inode. block-device, @@ -71,7 +71,7 @@ interface types { /// Descriptor flags. /// /// Note: This was called `fdflags` in earlier versions of WASI. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) flags descriptor-flags { /// Read mode: Data can be read. read, @@ -113,7 +113,7 @@ interface types { } /// Flags determining the method of how paths are resolved. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) flags path-flags { /// As long as the resolved path corresponds to a symbolic link, it is /// expanded. @@ -121,7 +121,7 @@ interface types { } /// Open flags used by `open-at`. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) flags open-flags { /// Create file if it does not exist, similar to `O_CREAT` in POSIX. create, @@ -134,13 +134,13 @@ interface types { } /// Number of hard links to an inode. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) type link-count = u64; /// File attributes. /// /// Note: This was called `filestat` in earlier versions of WASI. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) record descriptor-stat { /// File type. %type: descriptor-type, @@ -167,7 +167,7 @@ interface types { } /// When setting a timestamp, this gives the value to set it to. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) variant new-timestamp { /// Leave the timestamp set to its previous value. no-change, @@ -179,7 +179,7 @@ interface types { } /// A directory entry. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) record directory-entry { /// The type of the file referred to by this directory entry. %type: descriptor-type, @@ -191,7 +191,7 @@ interface types { /// Not all of these error codes are returned by the functions provided by this /// API; some are used in higher-level library layers, and others are provided /// merely for alignment with POSIX. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) variant error-code { /// Permission denied, similar to `EACCES` in POSIX. access, @@ -272,7 +272,7 @@ interface types { } /// File or memory access pattern advisory information. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) enum advice { /// The application has no advice to give on its behavior with respect /// to the specified data. @@ -296,7 +296,7 @@ interface types { /// A 128-bit hash value, split into parts because wasm doesn't have a /// 128-bit integer type. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) record metadata-hash-value { /// 64 bits of a 128-bit hash value. lower: u64, @@ -307,7 +307,7 @@ interface types { /// A descriptor is a reference to a filesystem object, which may be a file, /// directory, named pipe, special file, or other object on which filesystem /// calls may be made. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) resource descriptor { /// Return a stream for reading from a file. /// @@ -325,7 +325,7 @@ interface types { /// resolves to `err` with an `error-code`. /// /// Note: This is similar to `pread` in POSIX. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) read-via-stream: func(offset: filesize) -> tuple, future>>; /// Return a stream for writing to a file, if available. /// @@ -339,7 +339,7 @@ interface types { /// written or an error is encountered. /// /// Note: This is similar to `pwrite` in POSIX. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) write-via-stream: func(data: stream, offset: filesize) -> future>; /// Return a stream for appending to a file, if available. /// @@ -349,12 +349,12 @@ interface types { /// written or an error is encountered. /// /// Note: This is similar to `write` with `O_APPEND` in POSIX. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) append-via-stream: func(data: stream) -> future>; /// Provide file advisory information on a descriptor. /// /// This is similar to `posix_fadvise` in POSIX. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) advise: async func(offset: filesize, length: filesize, advice: advice) -> result<_, error-code>; /// Synchronize the data of a file to disk. /// @@ -362,7 +362,7 @@ interface types { /// opened for writing. /// /// Note: This is similar to `fdatasync` in POSIX. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) sync-data: async func() -> result<_, error-code>; /// Get flags associated with a descriptor. /// @@ -370,7 +370,7 @@ interface types { /// /// Note: This returns the value that was the `fs_flags` value returned /// from `fdstat_get` in earlier versions of WASI. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) get-flags: async func() -> result; /// Get the dynamic type of a descriptor. /// @@ -382,20 +382,20 @@ interface types { /// /// Note: This returns the value that was the `fs_filetype` value returned /// from `fdstat_get` in earlier versions of WASI. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) get-type: async func() -> result; /// Adjust the size of an open file. If this increases the file's size, the /// extra bytes are filled with zeros. /// /// Note: This was called `fd_filestat_set_size` in earlier versions of WASI. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) set-size: async func(size: filesize) -> result<_, error-code>; /// Adjust the timestamps of an open file or directory. /// /// Note: This is similar to `futimens` in POSIX. /// /// Note: This was called `fd_filestat_set_times` in earlier versions of WASI. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) set-times: async func(data-access-timestamp: new-timestamp, data-modification-timestamp: new-timestamp) -> result<_, error-code>; /// Read directory entries from a directory. /// @@ -409,7 +409,7 @@ interface types { /// /// This function returns a future, which will resolve to an error code if /// reading full contents of the directory fails. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) read-directory: func() -> tuple, future>>; /// Synchronize the data and metadata of a file to disk. /// @@ -417,12 +417,12 @@ interface types { /// opened for writing. /// /// Note: This is similar to `fsync` in POSIX. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) sync: async func() -> result<_, error-code>; /// Create a directory. /// /// Note: This is similar to `mkdirat` in POSIX. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) create-directory-at: async func(path: string) -> result<_, error-code>; /// Return the attributes of an open file or directory. /// @@ -433,7 +433,7 @@ interface types { /// modified, use `metadata-hash`. /// /// Note: This was called `fd_filestat_get` in earlier versions of WASI. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) stat: async func() -> result; /// Return the attributes of a file or directory. /// @@ -442,7 +442,7 @@ interface types { /// discussion of alternatives. /// /// Note: This was called `path_filestat_get` in earlier versions of WASI. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) stat-at: async func(path-flags: path-flags, path: string) -> result; /// Adjust the timestamps of a file or directory. /// @@ -450,7 +450,7 @@ interface types { /// /// Note: This was called `path_filestat_set_times` in earlier versions of /// WASI. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) set-times-at: async func(path-flags: path-flags, path: string, data-access-timestamp: new-timestamp, data-modification-timestamp: new-timestamp) -> result<_, error-code>; /// Create a hard link. /// @@ -459,7 +459,7 @@ interface types { /// `error-code::not-permitted` if the old path is not a file. /// /// Note: This is similar to `linkat` in POSIX. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) link-at: async func(old-path-flags: path-flags, old-path: string, new-descriptor: borrow, new-path: string) -> result<_, error-code>; /// Open a file or directory. /// @@ -473,7 +473,7 @@ interface types { /// `error-code::read-only`. /// /// Note: This is similar to `openat` in POSIX. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) open-at: async func(path-flags: path-flags, path: string, open-flags: open-flags, %flags: descriptor-flags) -> result; /// Read the contents of a symbolic link. /// @@ -481,19 +481,19 @@ interface types { /// filesystem, this function fails with `error-code::not-permitted`. /// /// Note: This is similar to `readlinkat` in POSIX. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) readlink-at: async func(path: string) -> result; /// Remove a directory. /// /// Return `error-code::not-empty` if the directory is not empty. /// /// Note: This is similar to `unlinkat(fd, path, AT_REMOVEDIR)` in POSIX. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) remove-directory-at: async func(path: string) -> result<_, error-code>; /// Rename a filesystem object. /// /// Note: This is similar to `renameat` in POSIX. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) rename-at: async func(old-path: string, new-descriptor: borrow, new-path: string) -> result<_, error-code>; /// Create a symbolic link (also known as a "symlink"). /// @@ -501,7 +501,7 @@ interface types { /// `error-code::not-permitted`. /// /// Note: This is similar to `symlinkat` in POSIX. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) symlink-at: async func(old-path: string, new-path: string) -> result<_, error-code>; /// Unlink a filesystem object that is not a directory. /// @@ -512,7 +512,7 @@ interface types { /// If the filesystem object is a directory, `error-code::access` or /// `error-code::is-directory` may be returned instead of the /// POSIX-specified `error-code::not-permitted`. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) unlink-file-at: async func(path: string) -> result<_, error-code>; /// Test whether two descriptors refer to the same filesystem object. /// @@ -520,7 +520,7 @@ interface types { /// same device (`st_dev`) and inode (`st_ino` or `d_ino`) numbers. /// wasi-filesystem does not expose device and inode numbers, so this function /// may be used instead. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) is-same-object: async func(other: borrow) -> bool; /// Return a hash of the metadata associated with a filesystem object referred /// to by a descriptor. @@ -541,35 +541,35 @@ interface types { /// computed hash. /// /// However, none of these is required. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) metadata-hash: async func() -> result; /// Return a hash of the metadata associated with a filesystem object referred /// to by a directory descriptor and a relative path. /// /// This performs the same hash computation as `metadata-hash`. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) metadata-hash-at: async func(path-flags: path-flags, path: string) -> result; } } -@since(version = 0.3.0-rc-2026-03-15) +@since(version = 0.3.0) interface preopens { - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) use types.{descriptor}; /// Return the set of preopened directories, and their paths. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) get-directories: func() -> list>; } -@since(version = 0.3.0-rc-2026-03-15) +@since(version = 0.3.0) world imports { - @since(version = 0.3.0-rc-2026-03-15) - import wasi:clocks/types@0.3.0-rc-2026-03-15; - @since(version = 0.3.0-rc-2026-03-15) - import wasi:clocks/system-clock@0.3.0-rc-2026-03-15; - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) + import wasi:clocks/types@0.3.0; + @since(version = 0.3.0) + import wasi:clocks/system-clock@0.3.0; + @since(version = 0.3.0) import types; - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) import preopens; } diff --git a/wasi/p3/wit/deps/wasi-http-0.3.0-rc-2026-03-15/package.wit b/wasi/p3/wit/deps/wasi-http-0.3.0/package.wit similarity index 91% rename from wasi/p3/wit/deps/wasi-http-0.3.0-rc-2026-03-15/package.wit rename to wasi/p3/wit/deps/wasi-http-0.3.0/package.wit index c1c1e68e7..08458f7c6 100644 --- a/wasi/p3/wit/deps/wasi-http-0.3.0-rc-2026-03-15/package.wit +++ b/wasi/p3/wit/deps/wasi-http-0.3.0/package.wit @@ -1,13 +1,13 @@ -package wasi:http@0.3.0-rc-2026-03-15; +package wasi:http@0.3.0; /// This interface defines all of the types and methods for implementing HTTP /// Requests and Responses, as well as their headers, trailers, and bodies. -@since(version = 0.3.0-rc-2026-03-15) +@since(version = 0.3.0) interface types { - use wasi:clocks/types@0.3.0-rc-2026-03-15.{duration}; + use wasi:clocks/types@0.3.0.{duration}; /// This type corresponds to HTTP standard Methods. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) variant method { get, head, @@ -22,7 +22,7 @@ interface types { } /// This type corresponds to HTTP standard Related Schemes. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) variant scheme { HTTP, HTTPS, @@ -30,21 +30,21 @@ interface types { } /// Defines the case payload type for `DNS-error` above: - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) record DNS-error-payload { rcode: option, info-code: option, } /// Defines the case payload type for `TLS-alert-received` above: - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) record TLS-alert-received-payload { alert-id: option, alert-message: option, } /// Defines the case payload type for `HTTP-response-{header,trailer}-size` above: - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) record field-size-payload { field-name: option, field-size: option, @@ -52,7 +52,7 @@ interface types { /// These cases are inspired by the IANA HTTP Proxy Error Types: /// - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) variant error-code { DNS-timeout, DNS-error(DNS-error-payload), @@ -102,7 +102,7 @@ interface types { /// This type enumerates the different kinds of errors that may occur when /// setting or appending to a `fields` resource. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) variant header-error { /// This error indicates that a `field-name` or `field-value` was /// syntactically invalid when used with an operation that sets headers in a @@ -130,7 +130,7 @@ interface types { /// This type enumerates the different kinds of errors that may occur when /// setting fields of a `request-options` resource. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) variant request-options-error { /// Indicates the specified field is not supported by this implementation. not-supported, @@ -150,13 +150,13 @@ interface types { /// /// Field names should always be treated as case insensitive by the `fields` /// resource for the purposes of equality checking. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) type field-name = string; /// Field values should always be ASCII strings. However, in /// reality, HTTP implementations often have to interpret malformed values, /// so they are provided as a list of bytes. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) type field-value = list; /// This following block defines the `fields` resource which corresponds to @@ -178,7 +178,7 @@ interface types { /// Implementations may impose limits on individual field values and on total /// aggregate field section size. Operations that would exceed these limits /// fail with `header-error.size-exceeded` - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) resource fields { /// Construct an empty HTTP Fields. /// @@ -254,15 +254,15 @@ interface types { } /// Headers is an alias for Fields. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) type headers = fields; /// Trailers is an alias for Fields. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) type trailers = fields; /// Represents an HTTP Request. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) resource request { /// Construct a new `request` with a default `method` of `GET`, and /// `none` values for `path-with-query`, `scheme`, and `authority`. @@ -349,7 +349,7 @@ interface types { /// /// These timeouts are separate from any the user may use to bound an /// asynchronous call. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) resource request-options { /// Construct a default `request-options` value. constructor(); @@ -378,11 +378,11 @@ interface types { } /// This type corresponds to the HTTP standard Status Code. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) type status-code = u16; /// Represents an HTTP Response. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) resource response { /// Construct a new `response`, with a default `status-code` of `200`. /// If a different `status-code` is needed, it must be set via the @@ -431,7 +431,7 @@ interface types { /// /// In `wasi:http/middleware` this interface is both exported and imported as /// the "downstream" and "upstream" directions of the middleware chain. -@since(version = 0.3.0-rc-2026-03-15) +@since(version = 0.3.0) interface handler { use types.{request, response, error-code}; @@ -450,7 +450,7 @@ interface handler { /// (including WIT itself) is unable to represent a component importing two /// instances of the same interface. A `client.send` import may be linked /// directly to a `handler.handle` export to bypass the network. -@since(version = 0.3.0-rc-2026-03-15) +@since(version = 0.3.0) interface client { use types.{request, response, error-code}; @@ -462,22 +462,22 @@ interface client { /// The `wasi:http/service` world captures a broad category of HTTP services /// including web applications, API servers, and proxies. It may be `include`d /// in more specific worlds such as `wasi:http/middleware`. -@since(version = 0.3.0-rc-2026-03-15) +@since(version = 0.3.0) world service { - import wasi:cli/types@0.3.0-rc-2026-03-15; - import wasi:cli/stdout@0.3.0-rc-2026-03-15; - import wasi:cli/stderr@0.3.0-rc-2026-03-15; - import wasi:cli/stdin@0.3.0-rc-2026-03-15; - import wasi:clocks/types@0.3.0-rc-2026-03-15; + import wasi:cli/types@0.3.0; + import wasi:cli/stdout@0.3.0; + import wasi:cli/stderr@0.3.0; + import wasi:cli/stdin@0.3.0; + import wasi:clocks/types@0.3.0; import types; import client; - import wasi:clocks/monotonic-clock@0.3.0-rc-2026-03-15; - import wasi:clocks/system-clock@0.3.0-rc-2026-03-15; + import wasi:clocks/monotonic-clock@0.3.0; + import wasi:clocks/system-clock@0.3.0; @unstable(feature = clocks-timezone) - import wasi:clocks/timezone@0.3.0-rc-2026-03-15; - import wasi:random/random@0.3.0-rc-2026-03-15; - import wasi:random/insecure@0.3.0-rc-2026-03-15; - import wasi:random/insecure-seed@0.3.0-rc-2026-03-15; + import wasi:clocks/timezone@0.3.0; + import wasi:random/random@0.3.0; + import wasi:random/insecure@0.3.0; + import wasi:random/insecure-seed@0.3.0; export handler; } @@ -487,23 +487,23 @@ world service { /// Components may implement this world to allow them to participate in handler /// "chains" where a `request` flows through handlers on its way to some terminal /// `service` and corresponding `response` flows in the opposite direction. -@since(version = 0.3.0-rc-2026-03-15) +@since(version = 0.3.0) world middleware { - import wasi:clocks/types@0.3.0-rc-2026-03-15; + import wasi:clocks/types@0.3.0; import types; import handler; - import wasi:cli/types@0.3.0-rc-2026-03-15; - import wasi:cli/stdout@0.3.0-rc-2026-03-15; - import wasi:cli/stderr@0.3.0-rc-2026-03-15; - import wasi:cli/stdin@0.3.0-rc-2026-03-15; + import wasi:cli/types@0.3.0; + import wasi:cli/stdout@0.3.0; + import wasi:cli/stderr@0.3.0; + import wasi:cli/stdin@0.3.0; import client; - import wasi:clocks/monotonic-clock@0.3.0-rc-2026-03-15; - import wasi:clocks/system-clock@0.3.0-rc-2026-03-15; + import wasi:clocks/monotonic-clock@0.3.0; + import wasi:clocks/system-clock@0.3.0; @unstable(feature = clocks-timezone) - import wasi:clocks/timezone@0.3.0-rc-2026-03-15; - import wasi:random/random@0.3.0-rc-2026-03-15; - import wasi:random/insecure@0.3.0-rc-2026-03-15; - import wasi:random/insecure-seed@0.3.0-rc-2026-03-15; + import wasi:clocks/timezone@0.3.0; + import wasi:random/random@0.3.0; + import wasi:random/insecure@0.3.0; + import wasi:random/insecure-seed@0.3.0; export handler; } diff --git a/wasi/p3/wit/deps/wasi-random-0.3.0-rc-2026-03-15/package.wit b/wasi/p3/wit/deps/wasi-random-0.3.0/package.wit similarity index 88% rename from wasi/p3/wit/deps/wasi-random-0.3.0-rc-2026-03-15/package.wit rename to wasi/p3/wit/deps/wasi-random-0.3.0/package.wit index 026f44a10..0b9a55fc0 100644 --- a/wasi/p3/wit/deps/wasi-random-0.3.0-rc-2026-03-15/package.wit +++ b/wasi/p3/wit/deps/wasi-random-0.3.0/package.wit @@ -1,10 +1,10 @@ -package wasi:random@0.3.0-rc-2026-03-15; +package wasi:random@0.3.0; /// The insecure-seed interface for seeding hash-map DoS resistance. /// /// It is intended to be portable at least between Unix-family platforms and /// Windows. -@since(version = 0.3.0-rc-2026-03-15) +@since(version = 0.3.0) interface insecure-seed { /// Return a 128-bit value that may contain a pseudo-random value. /// @@ -23,7 +23,7 @@ interface insecure-seed { /// This will likely be changed to a value import, to prevent it from being /// called multiple times and potentially used for purposes other than DoS /// protection. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) get-insecure-seed: func() -> tuple; } @@ -31,7 +31,7 @@ interface insecure-seed { /// /// It is intended to be portable at least between Unix-family platforms and /// Windows. -@since(version = 0.3.0-rc-2026-03-15) +@since(version = 0.3.0) interface insecure { /// Return up to `max-len` insecure pseudo-random bytes. /// @@ -48,14 +48,14 @@ interface insecure { /// Implementations MUST return at least 1 byte when `max-len` is greater /// than zero. When `max-len` is zero, implementations MUST return an empty /// list without trapping. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) get-insecure-random-bytes: func(max-len: u64) -> list; /// Return an insecure pseudo-random `u64` value. /// /// This function returns the same type of pseudo-random data as /// `get-insecure-random-bytes`, represented as a `u64`. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) get-insecure-random-u64: func() -> u64; } @@ -63,7 +63,7 @@ interface insecure { /// /// It is intended to be portable at least between Unix-family platforms and /// Windows. -@since(version = 0.3.0-rc-2026-03-15) +@since(version = 0.3.0) interface random { /// Return up to `max-len` cryptographically-secure random or pseudo-random /// bytes. @@ -85,23 +85,23 @@ interface random { /// This function must always return fresh data. Deterministic environments /// must omit this function, rather than implementing it with deterministic /// data. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) get-random-bytes: func(max-len: u64) -> list; /// Return a cryptographically-secure random or pseudo-random `u64` value. /// /// This function returns the same type of data as `get-random-bytes`, /// represented as a `u64`. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) get-random-u64: func() -> u64; } -@since(version = 0.3.0-rc-2026-03-15) +@since(version = 0.3.0) world imports { - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) import random; - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) import insecure; - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) import insecure-seed; } diff --git a/wasi/p3/wit/deps/wasi-sockets-0.3.0-rc-2026-03-15/package.wit b/wasi/p3/wit/deps/wasi-sockets-0.3.0/package.wit similarity index 93% rename from wasi/p3/wit/deps/wasi-sockets-0.3.0-rc-2026-03-15/package.wit rename to wasi/p3/wit/deps/wasi-sockets-0.3.0/package.wit index cde2e4d6e..0dd27a4fc 100644 --- a/wasi/p3/wit/deps/wasi-sockets-0.3.0-rc-2026-03-15/package.wit +++ b/wasi/p3/wit/deps/wasi-sockets-0.3.0/package.wit @@ -1,9 +1,9 @@ -package wasi:sockets@0.3.0-rc-2026-03-15; +package wasi:sockets@0.3.0; -@since(version = 0.3.0-rc-2026-03-15) +@since(version = 0.3.0) interface types { - @since(version = 0.3.0-rc-2026-03-15) - use wasi:clocks/types@0.3.0-rc-2026-03-15.{duration}; + @since(version = 0.3.0) + use wasi:clocks/types@0.3.0.{duration}; /// Error codes. /// @@ -16,7 +16,7 @@ interface types { /// - `out-of-memory` /// /// See each individual API for what the POSIX equivalents are. They sometimes differ per API. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) variant error-code { /// Access denied. /// @@ -80,7 +80,7 @@ interface types { other(option), } - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) enum ip-address-family { /// Similar to `AF_INET` in POSIX. ipv4, @@ -88,19 +88,19 @@ interface types { ipv6, } - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) type ipv4-address = tuple; - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) type ipv6-address = tuple; - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) variant ip-address { ipv4(ipv4-address), ipv6(ipv6-address), } - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) record ipv4-socket-address { /// sin_port port: u16, @@ -108,7 +108,7 @@ interface types { address: ipv4-address, } - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) record ipv6-socket-address { /// sin6_port port: u16, @@ -120,7 +120,7 @@ interface types { scope-id: u32, } - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) variant ip-socket-address { ipv4(ipv4-socket-address), ipv6(ipv6-socket-address), @@ -135,7 +135,7 @@ interface types { /// - `connecting` /// - `connected` /// - `closed` - /// See + /// See /// for more information. /// /// Note: Except where explicitly mentioned, whenever this documentation uses @@ -158,7 +158,7 @@ interface types { /// In addition to the general error codes documented on the /// `types::error-code` type, TCP socket methods may always return /// `error(invalid-state)` when in the `closed` state. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) resource tcp-socket { /// Create a new TCP socket. /// @@ -178,7 +178,7 @@ interface types { /// - /// - /// - - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) create: static func(address-family: ip-address-family) -> result; /// Bind the socket to the provided IP address and port. /// @@ -213,7 +213,7 @@ interface types { /// - /// - /// - - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) bind: func(local-address: ip-socket-address) -> result<_, error-code>; /// Connect to a remote endpoint. /// @@ -249,7 +249,7 @@ interface types { /// - /// - /// - - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) connect: async func(remote-address: ip-socket-address) -> result<_, error-code>; /// Start listening and return a stream of new inbound connections. /// @@ -321,7 +321,7 @@ interface types { /// - /// - /// - - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) listen: func() -> result, error-code>; /// Transmit data to peer. /// @@ -345,7 +345,7 @@ interface types { /// - /// - /// - - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) send: func(data: stream) -> future>; /// Read data from peer. /// @@ -374,7 +374,7 @@ interface types { /// - /// - /// - - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) receive: func() -> tuple, future>>; /// Get the bound local address. /// @@ -393,7 +393,7 @@ interface types { /// - /// - /// - - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) get-local-address: func() -> result; /// Get the remote address. /// @@ -405,19 +405,19 @@ interface types { /// - /// - /// - - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) get-remote-address: func() -> result; /// Whether the socket is in the `listening` state. /// /// Equivalent to the SO_ACCEPTCONN socket option. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) get-is-listening: func() -> bool; /// Whether this is a IPv4 or IPv6 socket. /// /// This is the value passed to the constructor. /// /// Equivalent to the SO_DOMAIN socket option. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) get-address-family: func() -> ip-address-family; /// Hints the desired listen queue size. Implementations are free to /// ignore this. @@ -430,7 +430,7 @@ interface types { /// - `not-supported`: (set) The platform does not support changing the backlog size after the initial listen. /// - `invalid-argument`: (set) The provided value was 0. /// - `invalid-state`: (set) The socket is in the `connecting` or `connected` state. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) set-listen-backlog-size: func(value: u64) -> result<_, error-code>; /// Enables or disables keepalive. /// @@ -442,9 +442,9 @@ interface types { /// false, but only come into effect when `keep-alive-enabled` is true. /// /// Equivalent to the SO_KEEPALIVE socket option. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) get-keep-alive-enabled: func() -> result; - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) set-keep-alive-enabled: func(value: bool) -> result<_, error-code>; /// Amount of time the connection has to be idle before TCP starts /// sending keepalive packets. @@ -458,9 +458,9 @@ interface types { /// /// # Typical errors /// - `invalid-argument`: (set) The provided value was 0. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) get-keep-alive-idle-time: func() -> result; - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) set-keep-alive-idle-time: func(value: duration) -> result<_, error-code>; /// The time between keepalive packets. /// @@ -473,9 +473,9 @@ interface types { /// /// # Typical errors /// - `invalid-argument`: (set) The provided value was 0. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) get-keep-alive-interval: func() -> result; - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) set-keep-alive-interval: func(value: duration) -> result<_, error-code>; /// The maximum amount of keepalive packets TCP should send before /// aborting the connection. @@ -489,9 +489,9 @@ interface types { /// /// # Typical errors /// - `invalid-argument`: (set) The provided value was 0. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) get-keep-alive-count: func() -> result; - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) set-keep-alive-count: func(value: u32) -> result<_, error-code>; /// Equivalent to the IP_TTL & IPV6_UNICAST_HOPS socket options. /// @@ -499,9 +499,9 @@ interface types { /// /// # Typical errors /// - `invalid-argument`: (set) The TTL value must be 1 or higher. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) get-hop-limit: func() -> result; - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) set-hop-limit: func(value: u8) -> result<_, error-code>; /// Kernel buffer space reserved for sending/receiving on this socket. /// Implementations usually treat this as a cap the buffer can grow to, @@ -524,18 +524,18 @@ interface types { /// /// # Typical errors /// - `invalid-argument`: (set) The provided value was 0. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) get-receive-buffer-size: func() -> result; - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) set-receive-buffer-size: func(value: u64) -> result<_, error-code>; - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) get-send-buffer-size: func() -> result; - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) set-send-buffer-size: func(value: u64) -> result<_, error-code>; } /// A UDP socket handle. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) resource udp-socket { /// Create a new UDP socket. /// @@ -552,7 +552,7 @@ interface types { /// - /// - /// - - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) create: static func(address-family: ip-address-family) -> result; /// Bind the socket to the provided IP address and port. /// @@ -573,7 +573,7 @@ interface types { /// - /// - /// - - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) bind: func(local-address: ip-socket-address) -> result<_, error-code>; /// Associate this socket with a specific peer address. /// @@ -611,7 +611,7 @@ interface types { /// - /// - /// - - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) connect: func(remote-address: ip-socket-address) -> result<_, error-code>; /// Dissociate this socket from its peer address. /// @@ -628,7 +628,7 @@ interface types { /// - /// - /// - - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) disconnect: func() -> result<_, error-code>; /// Send a message on the socket to a particular peer. /// @@ -672,7 +672,7 @@ interface types { /// - /// - /// - - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) send: async func(data: list, remote-address: option) -> result<_, error-code>; /// Receive a message on the socket. /// @@ -697,7 +697,7 @@ interface types { /// - /// - /// - - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) receive: async func() -> result, ip-socket-address>, error-code>; /// Get the current bound address. /// @@ -716,7 +716,7 @@ interface types { /// - /// - /// - - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) get-local-address: func() -> result; /// Get the address the socket is currently "connected" to. /// @@ -728,14 +728,14 @@ interface types { /// - /// - /// - - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) get-remote-address: func() -> result; /// Whether this is a IPv4 or IPv6 socket. /// /// This is the value passed to the constructor. /// /// Equivalent to the SO_DOMAIN socket option. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) get-address-family: func() -> ip-address-family; /// Equivalent to the IP_TTL & IPV6_UNICAST_HOPS socket options. /// @@ -743,9 +743,9 @@ interface types { /// /// # Typical errors /// - `invalid-argument`: (set) The TTL value must be 1 or higher. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) get-unicast-hop-limit: func() -> result; - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) set-unicast-hop-limit: func(value: u8) -> result<_, error-code>; /// Kernel buffer space reserved for sending/receiving on this socket. /// Implementations usually treat this as a cap the buffer can grow to, @@ -760,24 +760,24 @@ interface types { /// /// # Typical errors /// - `invalid-argument`: (set) The provided value was 0. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) get-receive-buffer-size: func() -> result; - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) set-receive-buffer-size: func(value: u64) -> result<_, error-code>; - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) get-send-buffer-size: func() -> result; - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) set-send-buffer-size: func(value: u64) -> result<_, error-code>; } } -@since(version = 0.3.0-rc-2026-03-15) +@since(version = 0.3.0) interface ip-name-lookup { - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) use types.{ip-address}; /// Lookup error codes. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) variant error-code { /// Access denied. /// @@ -824,16 +824,16 @@ interface ip-name-lookup { /// - /// - /// - - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) resolve-addresses: async func(name: string) -> result, error-code>; } -@since(version = 0.3.0-rc-2026-03-15) +@since(version = 0.3.0) world imports { - @since(version = 0.3.0-rc-2026-03-15) - import wasi:clocks/types@0.3.0-rc-2026-03-15; - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) + import wasi:clocks/types@0.3.0; + @since(version = 0.3.0) import types; - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) import ip-name-lookup; } diff --git a/wasi/p3/wit/wasi-libc.wit b/wasi/p3/wit/wasi-libc.wit index 0c9e9161a..75e875b4f 100644 --- a/wasi/p3/wit/wasi-libc.wit +++ b/wasi/p3/wit/wasi-libc.wit @@ -1,10 +1,10 @@ package wasi-libc:wasip3; world wasip3 { - include wasi:cli/command@0.3.0-rc-2026-03-15; - include wasi:clocks/imports@0.3.0-rc-2026-03-15; - include wasi:filesystem/imports@0.3.0-rc-2026-03-15; - include wasi:http/middleware@0.3.0-rc-2026-03-15; - include wasi:random/imports@0.3.0-rc-2026-03-15; - include wasi:sockets/imports@0.3.0-rc-2026-03-15; + include wasi:cli/command@0.3.0; + include wasi:clocks/imports@0.3.0; + include wasi:filesystem/imports@0.3.0; + include wasi:http/middleware@0.3.0; + include wasi:random/imports@0.3.0; + include wasi:sockets/imports@0.3.0; } diff --git a/wasi/p3/wkg.lock b/wasi/p3/wkg.lock index 480d58727..9fe006901 100644 --- a/wasi/p3/wkg.lock +++ b/wasi/p3/wkg.lock @@ -7,51 +7,51 @@ name = "wasi:cli" registry = "wasi.dev" [[packages.versions]] -requirement = "=0.3.0-rc-2026-03-15" -version = "0.3.0-rc-2026-03-15" -digest = "sha256:104654cfcb218c34c21ea06ab95f0d6811508643e9692bb3db751cde5640365f" +requirement = "=0.3.0" +version = "0.3.0" +digest = "sha256:3a2d58743b67a057f7210b9a73d3b21b34ec7895ffe34d1cb092927307156e40" [[packages]] name = "wasi:clocks" registry = "wasi.dev" [[packages.versions]] -requirement = "=0.3.0-rc-2026-03-15" -version = "0.3.0-rc-2026-03-15" -digest = "sha256:10f8b2f42c5f8a731292977064788cbb8ca9164c83ae7f4a295565e7b926a313" +requirement = "=0.3.0" +version = "0.3.0" +digest = "sha256:59e1f4079e64ada450e19ffc9d08854c904e356ed8cc1fda36ff4fe150264db2" [[packages]] name = "wasi:filesystem" registry = "wasi.dev" [[packages.versions]] -requirement = "=0.3.0-rc-2026-03-15" -version = "0.3.0-rc-2026-03-15" -digest = "sha256:d8e683409e17bbe06ce6560b67dc19414e6b21f62e88f22ca436f8967dfde188" +requirement = "=0.3.0" +version = "0.3.0" +digest = "sha256:42921410cddcdce2e009fd65c9a763bfb3fb61e2c0a64ff71647cc4405470378" [[packages]] name = "wasi:http" registry = "wasi.dev" [[packages.versions]] -requirement = "=0.3.0-rc-2026-03-15" -version = "0.3.0-rc-2026-03-15" -digest = "sha256:ed996ba07af24b216deb3d59bf56362f443d8bcfd1b07d1bfd80c49cb37df399" +requirement = "=0.3.0" +version = "0.3.0" +digest = "sha256:92cd8f3730c00226dc15626a2e7b21834dd187fc221f09818720d228585bbbf7" [[packages]] name = "wasi:random" registry = "wasi.dev" [[packages.versions]] -requirement = "=0.3.0-rc-2026-03-15" -version = "0.3.0-rc-2026-03-15" -digest = "sha256:821a5c015d3833f748fb00f2279d4fccc360d38f204f37f7ae2af904fc1f7f13" +requirement = "=0.3.0" +version = "0.3.0" +digest = "sha256:daa3c8897a68fbfc58b95c2e1de1b7af5be8c647bbb2cfeaa54c1e5b1ba9b772" [[packages]] name = "wasi:sockets" registry = "wasi.dev" [[packages.versions]] -requirement = "=0.3.0-rc-2026-03-15" -version = "0.3.0-rc-2026-03-15" -digest = "sha256:9944ecbee9950744290bb1ccb134aa2fc9821307fd6016cb01e6d617bc382cfe" +requirement = "=0.3.0" +version = "0.3.0" +digest = "sha256:47d4cb10ad41dbd7f543693211876bf413793d4d8dc0aad08ead34bf44348fa1" From 6b92064a5a3a48e21eeb27d72e43acfa60d50da7 Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Thu, 11 Jun 2026 15:21:29 -0700 Subject: [PATCH 2/6] Run clang-format --- libc-bottom-half/crt/crt1-command.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/libc-bottom-half/crt/crt1-command.c b/libc-bottom-half/crt/crt1-command.c index d2ab841af..8117973b7 100644 --- a/libc-bottom-half/crt/crt1-command.c +++ b/libc-bottom-half/crt/crt1-command.c @@ -18,8 +18,7 @@ __attribute__((export_name("_start"))) void _start(void) // that this shouldn't be too problematic (in theory). __attribute__((export_name("wasi:cli/run@0.2.0#run"))) int _start(void) #elif defined(__wasip3__) -__attribute__((export_name("wasi:cli/run@0.3.0#run"))) int -_start(void) +__attribute__((export_name("wasi:cli/run@0.3.0#run"))) int _start(void) #else #error "Unsupported WASI version" #endif From 461dea8911049bf7b49c28dd22e86f8f1322428d Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Thu, 11 Jun 2026 15:21:35 -0700 Subject: [PATCH 3/6] Resolve a cmake warning --- test/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 8718b936e..2bdb07337 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -102,8 +102,8 @@ function(add_test_executable executable_name src) "${SYSROOT_LIB}/libc.so" ${arg_SHARED_LIBS} -o ${executable_name} - DEPENDS wasm-tools ) + add_dependencies(${executable_name} wasm-tools) target_link_libraries(${executable_name} PRIVATE c) else() clang_format_target(${executable_name}) From 0ee180b269e9e8cc4857f2d1a001a34ecb3e03e1 Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Thu, 11 Jun 2026 15:23:23 -0700 Subject: [PATCH 4/6] Use older Wasmtime for threads --- test/CMakeLists.txt | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 2bdb07337..1f72f6ae3 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -21,10 +21,14 @@ message(STATUS "libc-test source directory: ${LIBC_TEST}") include(ba-download) if(NOT ENGINE OR ENGINE STREQUAL "") + set(wasmtime_version dev) + if (TARGET_TRIPLE MATCHES "-threads") + set(wasmtime_version "v44.0.0") + endif() ba_download( wasmtime "https://github.com/bytecodealliance/wasmtime" - "dev" + ${wasmtime_version} ) ExternalProject_Get_Property(wasmtime SOURCE_DIR) set(ENGINE "${SOURCE_DIR}/wasmtime") From b30a76084a19bb3488583518eee32a27dbfc2c8c Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Thu, 11 Jun 2026 15:31:02 -0700 Subject: [PATCH 5/6] Adjust expected symbols --- expected/wasm32-wasip3/defined-symbols.txt | 1 + expected/wasm32-wasip3/undefined-symbols.txt | 1 + 2 files changed, 2 insertions(+) diff --git a/expected/wasm32-wasip3/defined-symbols.txt b/expected/wasm32-wasip3/defined-symbols.txt index c10bf23f2..dff5a93fd 100644 --- a/expected/wasm32-wasip3/defined-symbols.txt +++ b/expected/wasm32-wasip3/defined-symbols.txt @@ -559,6 +559,7 @@ erfl errno exit exit_exit +exit_exit_with_code exit_result_void_void_free exp exp10 diff --git a/expected/wasm32-wasip3/undefined-symbols.txt b/expected/wasm32-wasip3/undefined-symbols.txt index 52bf42ba2..fb4539b46 100644 --- a/expected/wasm32-wasip3/undefined-symbols.txt +++ b/expected/wasm32-wasip3/undefined-symbols.txt @@ -54,6 +54,7 @@ __wasm_import_environment_get_arguments __wasm_import_environment_get_environment __wasm_import_environment_get_initial_cwd __wasm_import_exit_exit +__wasm_import_exit_exit_with_code __wasm_import_filesystem_descriptor_drop __wasm_import_filesystem_method_descriptor_advise __wasm_import_filesystem_method_descriptor_append_via_stream From 063c3802417a83cc0c7c4882d9ca57b3a0f66b9d Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Thu, 11 Jun 2026 15:31:24 -0700 Subject: [PATCH 6/6] Adjust test runner configuration --- test/CMakeLists.txt | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 1f72f6ae3..e7aeae35a 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -158,10 +158,6 @@ function(register_test test_name executable_name) if (TARGET_TRIPLE MATCHES "-threads") list(APPEND wasmtime_args --wasi threads --wasm shared-memory) endif() - if (WASI STREQUAL "p3") - list(APPEND wasmtime_args --wasm component-model-async) - list(APPEND wasmtime_args --wasi p3) - endif() if (arg_SETJMP) list(APPEND wasmtime_args --wasm exceptions) target_compile_options(${executable_name} PRIVATE @@ -582,8 +578,7 @@ if (PYTHON_TESTS) # and if Python is updated we'll have to update this too. --host-runner "\ ${ENGINE} run \ - --wasm max-wasm-stack=33554432,component-model-async \ - --wasi p3 \ + --wasm max-wasm-stack=33554432 \ --dir ::/ \ --env PYTHONPATH=/cross-build/wasm32-wasip1/build/lib.wasi-wasm32-3.14 \ "