You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
wit-bindgen-cpp 0.62: async exports are unimplemented — generated header omits the async export declarations #1727
The C++ generator has no implementation for the component-model async ABI: wit-bindgen-cpp-0.62.0/src/lib.rs carries todo!() on the async paths (FunctionKind::AsyncFreestanding, AbiVariant::GuestExportAsync — 7 sites in 0.62.0).
Consequence for a guest that exports async func: the generated header silently omits those declarations, so a user's out-of-line definitions do not compile:
src/upper.cpp:61:39: error: out-of-line definition of 'Definitions' does not match any declaration in namespace 'exports::tau::extension::tools'
src/upper.cpp:71:26: error: out-of-line definition of 'Execute' does not match any declaration in namespace 'exports::tau::extension::tools'
The same WIT generates correctly for the synchronous interface in the same world (the probes interface, a plain sync func), and the type definitions are generated — only the async export declarations are missing. So this is a generator gap, not a WIT-shape problem.
Reproduction
A WIT world with two exported interfaces: one whose functions are async func (e.g. definitions / execute returning expected<_, error>), one with a synchronous function.
wit-bindgen cpp <wit> --world <world> --out-dir gen (0.62.0).
Compile a user file that defines the async exports — the compiler reports “does not match any declaration”.
Environment: wit-bindgen 0.62.0; clang++; wasm32 target; the guest in question is a component-model component exercising the async export ABI (async func exports, stream/future in signatures).
Impact: a C++ guest cannot be authored for any component whose exports are async — we are blocked on the C++ cell of our language matrix (C and Python build), and there is no shim-level workaround because what is missing is declarations, not standard-library support.
Happy to provide the minimal WIT + generated header if useful. Reported from https://github.com/gqf2008/tau (0.7.0 contract tau:extension@0.7.0).
Activity