Skip to content

Bindgen does not support WIT async directives #11246

@rvolosatovs

Description

@rvolosatovs

Steps to Reproduce

apply:

diff --git a/crates/wasi/src/p3/bindings.rs b/crates/wasi/src/p3/bindings.rs
index 864d1eb8a4..02651057b8 100644
--- a/crates/wasi/src/p3/bindings.rs
+++ b/crates/wasi/src/p3/bindings.rs
@@ -38,50 +38,6 @@
 //!     },
 //!     concurrent_exports: true,
 //!     concurrent_imports: true,
-//!     async: {
-//!         only_imports: [
-//!             "wasi:cli/[email protected]#get-stdin",
-//!             "wasi:cli/[email protected]#set-stdout",
-//!             "wasi:cli/[email protected]#set-stderr",
-//!             "wasi:clocks/[email protected]#[async]wait-for",
-//!             "wasi:clocks/[email protected]#[async]wait-until",
-//!             "wasi:filesystem/[email protected]#[method]descriptor.read-via-stream",
-//!             "wasi:filesystem/[email protected]#[async method]descriptor.write-via-stream",
-//!             "wasi:filesystem/[email protected]#[async method]descriptor.append-via-stream",
-//!             "wasi:filesystem/[email protected]#[async method]descriptor.advise",
-//!             "wasi:filesystem/[email protected]#[async method]descriptor.sync-data",
-//!             "wasi:filesystem/[email protected]#[async method]descriptor.get-flags",
-//!             "wasi:filesystem/[email protected]#[async method]descriptor.get-type",
-//!             "wasi:filesystem/[email protected]#[async method]descriptor.set-size",
-//!             "wasi:filesystem/[email protected]#[async method]descriptor.set-times",
-//!             "wasi:filesystem/[email protected]#[async method]descriptor.read-directory",
-//!             "wasi:filesystem/[email protected]#[async method]descriptor.sync",
-//!             "wasi:filesystem/[email protected]#[async method]descriptor.create-directory-at",
-//!             "wasi:filesystem/[email protected]#[async method]descriptor.stat",
-//!             "wasi:filesystem/[email protected]#[async method]descriptor.stat-at",
-//!             "wasi:filesystem/[email protected]#[async method]descriptor.set-times-at",
-//!             "wasi:filesystem/[email protected]#[async method]descriptor.link-at",
-//!             "wasi:filesystem/[email protected]#[async method]descriptor.open-at",
-//!             "wasi:filesystem/[email protected]#[async method]descriptor.readlink-at",
-//!             "wasi:filesystem/[email protected]#[async method]descriptor.remove-directory-at",
-//!             "wasi:filesystem/[email protected]#[async method]descriptor.rename-at",
-//!             "wasi:filesystem/[email protected]#[async method]descriptor.symlink-at",
-//!             "wasi:filesystem/[email protected]#[async method]descriptor.unlink-file-at",
-//!             "wasi:filesystem/[email protected]#[async method]descriptor.is-same-object",
-//!             "wasi:filesystem/[email protected]#[async method]descriptor.metadata-hash",
-//!             "wasi:filesystem/[email protected]#[async method]descriptor.metadata-hash-at",
-//!             "wasi:sockets/[email protected]#[async]resolve-addresses",
-//!             "wasi:sockets/[email protected]#[async method]tcp-socket.connect",
-//!             "wasi:sockets/[email protected]#[async method]tcp-socket.send",
-//!             "wasi:sockets/[email protected]#[async method]udp-socket.receive",
-//!             "wasi:sockets/[email protected]#[async method]udp-socket.send",
-//!             "wasi:sockets/[email protected]#[method]tcp-socket.bind",
-//!             "wasi:sockets/[email protected]#[method]tcp-socket.listen",
-//!             "wasi:sockets/[email protected]#[method]tcp-socket.receive",
-//!             "wasi:sockets/[email protected]#[method]udp-socket.bind",
-//!             "wasi:sockets/[email protected]#[method]udp-socket.connect",
-//!         ],
-//!     },
 //! });
 //!
 //! struct MyState {
@@ -123,50 +79,6 @@ mod generated {
         trappable_imports: true,
         concurrent_exports: true,
         concurrent_imports: true,
-        async: {
-            only_imports: [
-                "wasi:cli/[email protected]#get-stdin",
-                "wasi:cli/[email protected]#set-stdout",
-                "wasi:cli/[email protected]#set-stderr",
-                "wasi:clocks/[email protected]#[async]wait-for",
-                "wasi:clocks/[email protected]#[async]wait-until",
-                "wasi:filesystem/[email protected]#[method]descriptor.read-via-stream",
-                "wasi:filesystem/[email protected]#[async method]descriptor.write-via-stream",
-                "wasi:filesystem/[email protected]#[async method]descriptor.append-via-stream",
-                "wasi:filesystem/[email protected]#[async method]descriptor.advise",
-                "wasi:filesystem/[email protected]#[async method]descriptor.sync-data",
-                "wasi:filesystem/[email protected]#[async method]descriptor.get-flags",
-                "wasi:filesystem/[email protected]#[async method]descriptor.get-type",
-                "wasi:filesystem/[email protected]#[async method]descriptor.set-size",
-                "wasi:filesystem/[email protected]#[async method]descriptor.set-times",
-                "wasi:filesystem/[email protected]#[async method]descriptor.read-directory",
-                "wasi:filesystem/[email protected]#[async method]descriptor.sync",
-                "wasi:filesystem/[email protected]#[async method]descriptor.create-directory-at",
-                "wasi:filesystem/[email protected]#[async method]descriptor.stat",
-                "wasi:filesystem/[email protected]#[async method]descriptor.stat-at",
-                "wasi:filesystem/[email protected]#[async method]descriptor.set-times-at",
-                "wasi:filesystem/[email protected]#[async method]descriptor.link-at",
-                "wasi:filesystem/[email protected]#[async method]descriptor.open-at",
-                "wasi:filesystem/[email protected]#[async method]descriptor.readlink-at",
-                "wasi:filesystem/[email protected]#[async method]descriptor.remove-directory-at",
-                "wasi:filesystem/[email protected]#[async method]descriptor.rename-at",
-                "wasi:filesystem/[email protected]#[async method]descriptor.symlink-at",
-                "wasi:filesystem/[email protected]#[async method]descriptor.unlink-file-at",
-                "wasi:filesystem/[email protected]#[async method]descriptor.is-same-object",
-                "wasi:filesystem/[email protected]#[async method]descriptor.metadata-hash",
-                "wasi:filesystem/[email protected]#[async method]descriptor.metadata-hash-at",
-                "wasi:sockets/[email protected]#[async]resolve-addresses",
-                "wasi:sockets/[email protected]#[async method]tcp-socket.connect",
-                "wasi:sockets/[email protected]#[async method]tcp-socket.send",
-                "wasi:sockets/[email protected]#[async method]udp-socket.receive",
-                "wasi:sockets/[email protected]#[async method]udp-socket.send",
-                "wasi:sockets/[email protected]#[method]tcp-socket.bind",
-                "wasi:sockets/[email protected]#[method]tcp-socket.listen",
-                "wasi:sockets/[email protected]#[method]tcp-socket.receive",
-                "wasi:sockets/[email protected]#[method]udp-socket.bind",
-                "wasi:sockets/[email protected]#[method]udp-socket.connect",
-            ],
-        },
     });
 }
 pub use self::generated::LinkOptions;

to:

$ git checkout 2b8322817e # latest `main` as of time of writing
$ curl -sL https://github.com/bytecodealliance/wasmtime/pull/11221.patch | git am -3
$ curl -sL https://github.com/bytecodealliance/wasmtime/pull/11244.patch | git am -3

or, potentially, latest main if/when #11221 and #11244 are merged

then:

$ cargo build -p wasmtime-wasi --features p3

Expected Results

Success

Actual Results

error[E0405]: cannot find trait `HostConcurrent` in module `monotonic_clock`
  --> crates/wasi/src/p3/clocks/host.rs:45:26
   |
45 | impl<T> monotonic_clock::HostConcurrent for WasiClocks<T>
   |                          ^^^^^^^^^^^^^^ not found in `monotonic_clock`

even though functions are marked as async: https://github.com/rvolosatovs/wasmtime/blob/c822293b26a1f2720d5a4cd035a59a66d4512e90/crates/wasi/src/p3/wit/deps/clocks/monotonic-clock.wit#L34-L44

Versions and Environment

Wasmtime version or commit: 2b83228 with patches

Operating system: MacOS

Architecture: aarch64-darwin

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

Status

Done

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions