From d44a97ffe74e288ca167e3902835cb36cd6118fc Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Tue, 7 Jul 2026 10:07:58 -0700 Subject: [PATCH 1/2] Update wasm-tools dependencies Additionally update C intrinsics for threading as they've been renamed slightly. --- Cargo.lock | 76 ++++++------ Cargo.toml | 14 +-- crates/c/src/lib.rs | 137 +++++----------------- crates/cpp/src/lib.rs | 5 + crates/guest-rust/macro/src/lib.rs | 2 +- tests/threading/threading-builtins/test.c | 40 ++++--- 6 files changed, 104 insertions(+), 170 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 63a642d15..885e23beb 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1024,7 +1024,7 @@ name = "test-helpers" version = "0.0.0" dependencies = [ "codegen-macro", - "wasm-encoder 0.252.0", + "wasm-encoder 0.253.0", "wit-bindgen-core", "wit-component", "wit-parser", @@ -1221,9 +1221,9 @@ checksum = "1b6c48003fe59c201c97a7786ff55feabe6b6f83b598aa9ff5bcc4f94d940bf3" [[package]] name = "wasm-compose" -version = "0.252.0" +version = "0.253.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d59b710751a35d54732a63851cdfacbfb2266b7160ce174faf269d3f4e84e31b" +checksum = "a00572a13a43b4754066ddeb46aec65091cd4cdb5b632768295a4236574da28a" dependencies = [ "anyhow", "heck", @@ -1234,8 +1234,8 @@ dependencies = [ "serde_derive", "serde_yaml2", "smallvec", - "wasm-encoder 0.252.0", - "wasmparser 0.252.0", + "wasm-encoder 0.253.0", + "wasmparser 0.253.0", "wat", ] @@ -1251,12 +1251,12 @@ dependencies = [ [[package]] name = "wasm-encoder" -version = "0.252.0" +version = "0.253.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8185ae345fa5687c054626ff9a50e7089797a343d9904d1dc9820eb4c4d3196f" +checksum = "59972d6cd272259de647b7c1f1912e45e289c75ffd4be04e10695507cd7e1b59" dependencies = [ "leb128fmt", - "wasmparser 0.252.0", + "wasmparser 0.253.0", ] [[package]] @@ -1280,14 +1280,14 @@ dependencies = [ [[package]] name = "wasm-metadata" -version = "0.252.0" +version = "0.253.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b7e08e02a3cd55bf778009d4cd6faae50da011f293644daf78a531a32d6d142" +checksum = "b3f45816ef616806f48498bcd831377de578c4fa51db0c83ab8ceb78cc13523b" dependencies = [ "anyhow", "indexmap", - "wasm-encoder 0.252.0", - "wasmparser 0.252.0", + "wasm-encoder 0.253.0", + "wasmparser 0.253.0", ] [[package]] @@ -1305,9 +1305,9 @@ dependencies = [ [[package]] name = "wasmparser" -version = "0.252.0" +version = "0.253.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3eb099dcadcde5be9eef55e3a337128efd4e44b4c93122487e4d2e4e1c6627c" +checksum = "19db11f87d2486580e1e8b6f494c54df7e0566b87d0b599db843c24019667339" dependencies = [ "bitflags", "hashbrown 0.17.1", @@ -1318,22 +1318,22 @@ dependencies = [ [[package]] name = "wast" -version = "252.0.0" +version = "253.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "942a3449d6a593fccc111a6241c8df52bda168af30e40bf9580d4394d7374c65" +checksum = "d3264542f8965c5d84fb1085d924bfba9a6314bb228eff13a2de14d7627664d0" dependencies = [ "bumpalo", "leb128fmt", "memchr", "unicode-width 0.2.2", - "wasm-encoder 0.252.0", + "wasm-encoder 0.253.0", ] [[package]] name = "wat" -version = "1.252.0" +version = "1.253.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c72a4ba7088f7bac94cf516e49882bdf97068904a563768cf249efc839ec42cb" +checksum = "4bfc5ce906144200c972ec617470aa35bd847472e170b26dde3e80541c674055" dependencies = [ "wast", ] @@ -1378,8 +1378,8 @@ dependencies = [ "clap", "heck", "indexmap", - "wasm-encoder 0.252.0", - "wasm-metadata 0.252.0", + "wasm-encoder 0.253.0", + "wasm-metadata 0.253.0", "wit-bindgen-core", "wit-component", ] @@ -1391,7 +1391,7 @@ dependencies = [ "anyhow", "clap", "env_logger", - "wasm-encoder 0.252.0", + "wasm-encoder 0.253.0", "wit-bindgen-c", "wit-bindgen-core", "wit-bindgen-cpp", @@ -1424,8 +1424,8 @@ dependencies = [ "heck", "indexmap", "test-helpers", - "wasm-encoder 0.252.0", - "wasm-metadata 0.252.0", + "wasm-encoder 0.253.0", + "wasm-metadata 0.253.0", "wit-bindgen-c", "wit-bindgen-core", "wit-component", @@ -1441,7 +1441,7 @@ dependencies = [ "heck", "indexmap", "regex", - "wasm-metadata 0.252.0", + "wasm-metadata 0.253.0", "wit-bindgen-core", "wit-component", "wit-parser", @@ -1454,8 +1454,8 @@ dependencies = [ "anyhow", "clap", "heck", - "wasm-encoder 0.252.0", - "wasm-metadata 0.252.0", + "wasm-encoder 0.253.0", + "wasm-metadata 0.253.0", "wit-bindgen-core", "wit-component", ] @@ -1496,7 +1496,7 @@ dependencies = [ "serde_json", "syn", "test-helpers", - "wasm-metadata 0.252.0", + "wasm-metadata 0.253.0", "wit-bindgen", "wit-bindgen-core", "wit-component", @@ -1534,8 +1534,8 @@ dependencies = [ "wac-types", "wasi-preview1-component-adapter-provider", "wasm-compose", - "wasm-encoder 0.252.0", - "wasmparser 0.252.0", + "wasm-encoder 0.253.0", + "wasmparser 0.253.0", "wat", "wit-bindgen-csharp", "wit-component", @@ -1544,9 +1544,9 @@ dependencies = [ [[package]] name = "wit-component" -version = "0.252.0" +version = "0.253.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "76db0662b590f45d33d0e363fa13539a5a1eecd35d5a12fe208c335461c1053d" +checksum = "dbbd2500ac3488489ee8c6e59b79d7e47e6da5bfb019efd35d5dca57b78af624" dependencies = [ "anyhow", "bitflags", @@ -1555,18 +1555,18 @@ dependencies = [ "serde", "serde_derive", "serde_json", - "wasm-encoder 0.252.0", - "wasm-metadata 0.252.0", - "wasmparser 0.252.0", + "wasm-encoder 0.253.0", + "wasm-metadata 0.253.0", + "wasmparser 0.253.0", "wat", "wit-parser", ] [[package]] name = "wit-parser" -version = "0.252.0" +version = "0.253.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4266bea110371c620ccf3201c5023676046bc4556e5c7cfb5d500bda5ebc162d" +checksum = "4d997b8e5920fcbeec742b58e583325d6419a6aca617ae8075c406a61c65ba8a" dependencies = [ "anyhow", "hashbrown 0.17.1", @@ -1578,7 +1578,7 @@ dependencies = [ "serde_derive", "serde_json", "unicode-ident", - "wasmparser 0.252.0", + "wasmparser 0.253.0", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index 5bf23e8ae..98e1378a2 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -47,13 +47,13 @@ syn = { version = "2.0.89", features = ["printing"] } futures = "0.3.31" macro-string = "0.2.0" -wat = "1.252.0" -wasmparser = "0.252.0" -wasm-encoder = "0.252.0" -wasm-metadata = { version = "0.252.0", default-features = false } -wit-parser = "0.252.0" -wit-component = "0.252.0" -wasm-compose = "0.252.0" +wat = "1.253.0" +wasmparser = "0.253.0" +wasm-encoder = "0.253.0" +wasm-metadata = { version = "0.253.0", default-features = false } +wit-parser = "0.253.0" +wit-component = "0.253.0" +wasm-compose = "0.253.0" wit-bindgen-core = { path = 'crates/core', version = '0.58.0' } wit-bindgen-c = { path = 'crates/c', version = '0.58.0' } diff --git a/crates/c/src/lib.rs b/crates/c/src/lib.rs index 970d34aa2..91d30b14e 100644 --- a/crates/c/src/lib.rs +++ b/crates/c/src/lib.rs @@ -728,123 +728,48 @@ impl C { let snake = self.world.to_snake_case(); uwriteln!( self.src.h_async, - " -void* {snake}_context_get_1(void); -void {snake}_context_set_1(void* value); -uint32_t {snake}_thread_yield_cancellable(void); -uint32_t {snake}_thread_index(void); -uint32_t {snake}_thread_new_indirect(void (*start_function)(void*), void* arg); -void {snake}_thread_suspend_to(uint32_t thread); -uint32_t {snake}_thread_suspend_to_cancellable(uint32_t thread); -void {snake}_thread_suspend_to_suspended(uint32_t thread); -uint32_t {snake}_thread_suspend_to_suspended_cancellable(uint32_t thread); -void {snake}_thread_unsuspend(uint32_t thread); -void {snake}_thread_yield_to_suspended(uint32_t thread); -uint32_t {snake}_thread_yield_to_suspended_cancellable(uint32_t thread); -void {snake}_thread_suspend(void); -uint32_t {snake}_thread_suspend_cancellable(void); - " - ); - uwriteln!( - self.src.c_async, r#" __attribute__((__import_module__("$root"), __import_name__("[context-get-1]"))) -extern void* __context_get_1(void); - -void* {snake}_context_get_1(void) {{ - return __context_get_1(); -}} +extern void* {snake}_context_get_1(void); __attribute__((__import_module__("$root"), __import_name__("[context-set-1]"))) -extern void __context_set_1(void*); - -void {snake}_context_set_1(void* value) {{ - __context_set_1(value); -}} - -__attribute__((__import_module__("$root"), __import_name__("[cancellable][thread-yield]"))) -extern uint32_t __thread_yield_cancellable(void); - -uint32_t {snake}_thread_yield_cancellable(void) {{ - return __thread_yield_cancellable(); -}} +extern void {snake}_context_set_1(void* value); __attribute__((__import_module__("$root"), __import_name__("[thread-index]"))) -extern uint32_t __thread_index(void); - -uint32_t {snake}_thread_index(void) {{ - return __thread_index(); -}} +extern uint32_t {snake}_thread_index(void); __attribute__((__import_module__("$root"), __import_name__("[thread-new-indirect-v0]"))) -extern uint32_t __thread_new_indirect(uint32_t, void*); - -uint32_t {snake}_thread_new_indirect(void (*start_function)(void*), void* arg) {{ - return __thread_new_indirect((uint32_t)(uintptr_t)start_function, arg -); -}} - -__attribute__((__import_module__("$root"), __import_name__("[thread-suspend-to-suspended]"))) -extern uint32_t __thread_suspend_to_suspended(uint32_t); - -void {snake}_thread_suspend_to_suspended(uint32_t thread) {{ - __thread_suspend_to_suspended(thread); -}} - -__attribute__((__import_module__("$root"), __import_name__("[cancellable][thread-suspend-to-suspended]"))) -extern uint32_t __thread_suspend_to_suspended_cancellable(uint32_t); - -uint32_t {snake}_thread_suspend_to_suspended_cancellable(uint32_t thread) {{ - return __thread_suspend_to_suspended_cancellable(thread); -}} - -__attribute__((__import_module__("$root"), __import_name__("[thread-suspend-to]"))) -extern uint32_t __thread_suspend_to(uint32_t); - -void {snake}_thread_suspend_to(uint32_t thread) {{ - __thread_suspend_to(thread); -}} - -__attribute__((__import_module__("$root"), __import_name__("[cancellable][thread-suspend-to]"))) -extern uint32_t __thread_suspend_to_cancellable(uint32_t); - -uint32_t {snake}_thread_suspend_to_cancellable(uint32_t thread) {{ - return __thread_suspend_to_cancellable(thread); -}} - -__attribute__((__import_module__("$root"), __import_name__("[thread-unsuspend]"))) -extern void __thread_unsuspend(uint32_t); - -void {snake}_thread_unsuspend(uint32_t thread) {{ - __thread_unsuspend(thread); -}} - -__attribute__((__import_module__("$root"), __import_name__("[thread-yield-to-suspended]"))) -extern uint32_t __thread_yield_to_suspended(uint32_t); - -void {snake}_thread_yield_to_suspended(uint32_t thread) {{ - __thread_yield_to_suspended(thread); -}} - -__attribute__((__import_module__("$root"), __import_name__("[cancellable][thread-yield-to-suspended]"))) -extern uint32_t __thread_yield_to_suspended_cancellable(uint32_t); - -uint32_t {snake}_thread_yield_to_suspended_cancellable(uint32_t thread) {{ - return __thread_yield_to_suspended_cancellable(thread); -}} +extern uint32_t {snake}_thread_new_indirect(void (*start_function)(void*), void* arg); +__attribute__((__import_module__("$root"), __import_name__("[thread-resume-later]"))) +extern void {snake}_thread_resume_later(uint32_t thread); __attribute__((__import_module__("$root"), __import_name__("[thread-suspend]"))) -extern uint32_t __thread_suspend(void); - -void {snake}_thread_suspend(void) {{ - __thread_suspend(); -}} - +extern uint32_t {snake}_thread_suspend(void); __attribute__((__import_module__("$root"), __import_name__("[cancellable][thread-suspend]"))) -extern uint32_t __thread_suspend_cancellable(void); -uint32_t {snake}_thread_suspend_cancellable(void) {{ - return __thread_suspend_cancellable(); -}} +extern uint32_t {snake}_thread_suspend_cancellable(void); + +__attribute__((__import_module__("$root"), __import_name__("[cancellable][thread-yield]"))) +extern uint32_t {snake}_thread_yield_cancellable(void); + +__attribute__((__import_module__("$root"), __import_name__("[thread-suspend-then-resume]"))) +extern uint32_t {snake}_thread_suspend_then_resume(uint32_t thread); +__attribute__((__import_module__("$root"), __import_name__("[cancellable][thread-suspend-then-resume]"))) +extern uint32_t {snake}_thread_suspend_then_resume_cancellable(uint32_t thread); + +__attribute__((__import_module__("$root"), __import_name__("[thread-yield-then-resume]"))) +extern uint32_t {snake}_thread_yield_then_resume(uint32_t thread); +__attribute__((__import_module__("$root"), __import_name__("[cancellable][thread-yield-then-resume]"))) +extern uint32_t {snake}_thread_yield_then_resume_cancellable(uint32_t thread); + +__attribute__((__import_module__("$root"), __import_name__("[thread-suspend-then-promote]"))) +extern uint32_t {snake}_thread_suspend_then_promote(uint32_t thread); +__attribute__((__import_module__("$root"), __import_name__("[cancellable][thread-suspend-then-promote]"))) +extern uint32_t {snake}_thread_suspend_then_promote_cancellable(uint32_t thread); + +__attribute__((__import_module__("$root"), __import_name__("[thread-yield-then-promote]"))) +extern uint32_t {snake}_thread_yield_then_promote(uint32_t thread); +__attribute__((__import_module__("$root"), __import_name__("[cancellable][thread-yield-then-promote]"))) +extern uint32_t {snake}_thread_yield_then_promote_cancellable(uint32_t thread); "# ); } diff --git a/crates/cpp/src/lib.rs b/crates/cpp/src/lib.rs index 52e13ccab..8cd392616 100644 --- a/crates/cpp/src/lib.rs +++ b/crates/cpp/src/lib.rs @@ -1976,6 +1976,7 @@ impl<'a> wit_bindgen_core::InterfaceGenerator<'a> for CppInterfaceGenerator<'a> docs: Docs::default(), stability: Stability::Unknown, span: Default::default(), + external_id: None, }; self.generate_function(&func, &TypeOwner::Interface(intf), variant); } @@ -2010,6 +2011,7 @@ impl<'a> wit_bindgen_core::InterfaceGenerator<'a> for CppInterfaceGenerator<'a> docs: Docs::default(), stability: Stability::Unknown, span: Default::default(), + external_id: None, }; self.generate_function(&func2, &TypeOwner::Interface(intf), variant); } @@ -2044,6 +2046,7 @@ impl<'a> wit_bindgen_core::InterfaceGenerator<'a> for CppInterfaceGenerator<'a> docs: Docs::default(), stability: Stability::Unknown, span: Default::default(), + external_id: None, }; self.generate_function(&func, &TypeOwner::Interface(intf), variant); @@ -2059,6 +2062,7 @@ impl<'a> wit_bindgen_core::InterfaceGenerator<'a> for CppInterfaceGenerator<'a> docs: Docs::default(), stability: Stability::Unknown, span: Default::default(), + external_id: None, }; self.generate_function(&func1, &TypeOwner::Interface(intf), variant); @@ -2074,6 +2078,7 @@ impl<'a> wit_bindgen_core::InterfaceGenerator<'a> for CppInterfaceGenerator<'a> docs: Docs::default(), stability: Stability::Unknown, span: Default::default(), + external_id: None, }; self.generate_function(&func2, &TypeOwner::Interface(intf), variant); } diff --git a/crates/guest-rust/macro/src/lib.rs b/crates/guest-rust/macro/src/lib.rs index acf97ad53..ba995cfcf 100644 --- a/crates/guest-rust/macro/src/lib.rs +++ b/crates/guest-rust/macro/src/lib.rs @@ -238,7 +238,7 @@ fn parse_source( } } pkgs.truncate(0); - pkgs.push(resolve.push_group(UnresolvedPackageGroup::parse("macro-input", s)?)?); + pkgs.push(resolve.push_str("macro-input", s)?); } Some(Source::Paths(p)) => parse(p)?, None => parse(&[default])?, diff --git a/tests/threading/threading-builtins/test.c b/tests/threading/threading-builtins/test.c index 7a23d610a..b9baa2092 100644 --- a/tests/threading/threading-builtins/test.c +++ b/tests/threading/threading-builtins/test.c @@ -19,13 +19,15 @@ void thread_start(void *arg) { test_thread_yield_cancellable(); test_thread_suspend(); test_thread_suspend_cancellable(); - test_thread_yield_to_suspended(main_tid); - test_thread_yield_to_suspended_cancellable(main_tid); - test_thread_suspend_to_suspended(main_tid); - test_thread_suspend_to_suspended_cancellable(main_tid); - test_thread_suspend_to(main_tid); - test_thread_suspend_to_cancellable(main_tid); - test_thread_unsuspend(main_tid); + test_thread_yield_then_resume(main_tid); + test_thread_yield_then_resume_cancellable(main_tid); + test_thread_yield_then_promote(main_tid); + test_thread_yield_then_promote_cancellable(main_tid); + test_thread_suspend_then_resume(main_tid); + test_thread_suspend_then_resume_cancellable(main_tid); + test_thread_suspend_then_promote(main_tid); + test_thread_suspend_then_promote_cancellable(main_tid); + test_thread_resume_later(main_tid); } test_subtask_status_t exports_test_f_callback(test_event_t *event) { @@ -36,17 +38,19 @@ test_subtask_status_t exports_test_f_callback(test_event_t *event) { spawned_tid = test_thread_new_indirect(thread_start, &main_tid); // Now drive the other thread to completion by switching/yielding to it - test_thread_yield_to_suspended(spawned_tid); // other yields - test_thread_yield(); // other yields - test_thread_yield(); // other suspends - test_thread_yield_to_suspended(spawned_tid); // other suspends - test_thread_suspend_to_suspended(spawned_tid); // other yields to me - test_thread_suspend(); // other yields to me - test_thread_suspend(); // other suspends to me - test_thread_suspend_to_suspended(spawned_tid); // other suspends to me - test_thread_suspend_to_suspended(spawned_tid); // other suspends to me - test_thread_suspend_to_suspended(spawned_tid); // other suspends to me - test_thread_suspend_to_suspended( + test_thread_yield_then_resume(spawned_tid); // other yields + test_thread_yield(); // other yields + test_thread_yield(); // other suspends + test_thread_yield_then_resume(spawned_tid); // other suspends + test_thread_suspend_then_resume(spawned_tid); // other yields to me + test_thread_suspend(); // other yields to me + test_thread_suspend(); // other yields to me + test_thread_suspend(); // other yields to me + test_thread_suspend(); // other suspends to me + test_thread_suspend_then_resume(spawned_tid); // other suspends to me + test_thread_suspend_then_resume(spawned_tid); // other suspends to me + test_thread_suspend_then_resume(spawned_tid); // other suspends to me + test_thread_suspend_then_resume( spawned_tid); // other unsuspends me and terminates exports_test_f_return(); return TEST_CALLBACK_CODE_EXIT; From 36a3905ffa5368bb001773e4b43711889feb7f71 Mon Sep 17 00:00:00 2001 From: Alex Crichton Date: Tue, 7 Jul 2026 10:11:18 -0700 Subject: [PATCH 2/2] Remove unused import --- crates/guest-rust/macro/src/lib.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/guest-rust/macro/src/lib.rs b/crates/guest-rust/macro/src/lib.rs index ba995cfcf..d0393a834 100644 --- a/crates/guest-rust/macro/src/lib.rs +++ b/crates/guest-rust/macro/src/lib.rs @@ -8,7 +8,7 @@ use syn::punctuated::Punctuated; use syn::{Token, braced, token}; use wit_bindgen_core::AsyncFilterSet; use wit_bindgen_core::WorldGenerator; -use wit_bindgen_core::wit_parser::{PackageId, Resolve, UnresolvedPackageGroup, WorldId}; +use wit_bindgen_core::wit_parser::{PackageId, Resolve, WorldId}; use wit_bindgen_rust::{Opts, Ownership, WithOption}; #[proc_macro]