Skip to content

wit-bindgen-cpp 0.62: async exports are unimplemented — generated header omits the async export declarations #1727

Open

Description

@gqf2008

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

  1. 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.
  2. wit-bindgen cpp <wit> --world <world> --out-dir gen (0.62.0).
  3. 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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    gen-cppRelated to the C++ code generator

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions