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/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 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..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-rc-2026-03-15#run"))) int -_start(void) +__attribute__((export_name("wasi:cli/run@0.3.0#run"))) int _start(void) #else #error "Unsupported WASI version" #endif 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 f832cbd60..db16a3a80 100644 Binary files a/libc-bottom-half/sources/wasip3_component_type.o and b/libc-bottom-half/sources/wasip3_component_type.o differ diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index 8718b936e..e7aeae35a 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") @@ -102,8 +106,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}) @@ -154,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 @@ -578,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 \ " diff --git a/wasi/p3/wit/deps/wasi-cli-0.3.0-rc-2026-03-15/package.wit b/wasi/p3/wit/deps/wasi-cli-0.3.0/package.wit similarity index 62% rename from wasi/p3/wit/deps/wasi-cli-0.3.0-rc-2026-03-15/package.wit rename to wasi/p3/wit/deps/wasi-cli-0.3.0/package.wit index 8ba52c5cd..7aae56c17 100644 --- a/wasi/p3/wit/deps/wasi-cli-0.3.0-rc-2026-03-15/package.wit +++ b/wasi/p3/wit/deps/wasi-cli-0.3.0/package.wit @@ -1,6 +1,6 @@ -package wasi:cli@0.3.0-rc-2026-03-15; +package wasi:cli@0.3.0; -@since(version = 0.3.0-rc-2026-03-15) +@since(version = 0.3.0) interface environment { /// Get the POSIX-style environment variables. /// @@ -10,23 +10,23 @@ interface environment { /// Morally, these are a value import, but until value imports are available /// in the component model, this import function should return the same /// values each time it is called. - @since(version = 0.3.0-rc-2026-03-15) + @since(version = 0.3.0) get-environment: func() -> 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"