Skip to content

Bindgen does not support WIT async directives #11246

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/stdin@0.3.0#get-stdin",
-//!             "wasi:cli/stdout@0.3.0#set-stdout",
-//!             "wasi:cli/stderr@0.3.0#set-stderr",
-//!             "wasi:clocks/monotonic-clock@0.3.0#[async]wait-for",
-//!             "wasi:clocks/monotonic-clock@0.3.0#[async]wait-until",
-//!             "wasi:filesystem/types@0.3.0#[method]descriptor.read-via-stream",
-//!             "wasi:filesystem/types@0.3.0#[async method]descriptor.write-via-stream",
-//!             "wasi:filesystem/types@0.3.0#[async method]descriptor.append-via-stream",
-//!             "wasi:filesystem/types@0.3.0#[async method]descriptor.advise",
-//!             "wasi:filesystem/types@0.3.0#[async method]descriptor.sync-data",
-//!             "wasi:filesystem/types@0.3.0#[async method]descriptor.get-flags",
-//!             "wasi:filesystem/types@0.3.0#[async method]descriptor.get-type",
-//!             "wasi:filesystem/types@0.3.0#[async method]descriptor.set-size",
-//!             "wasi:filesystem/types@0.3.0#[async method]descriptor.set-times",
-//!             "wasi:filesystem/types@0.3.0#[async method]descriptor.read-directory",
-//!             "wasi:filesystem/types@0.3.0#[async method]descriptor.sync",
-//!             "wasi:filesystem/types@0.3.0#[async method]descriptor.create-directory-at",
-//!             "wasi:filesystem/types@0.3.0#[async method]descriptor.stat",
-//!             "wasi:filesystem/types@0.3.0#[async method]descriptor.stat-at",
-//!             "wasi:filesystem/types@0.3.0#[async method]descriptor.set-times-at",
-//!             "wasi:filesystem/types@0.3.0#[async method]descriptor.link-at",
-//!             "wasi:filesystem/types@0.3.0#[async method]descriptor.open-at",
-//!             "wasi:filesystem/types@0.3.0#[async method]descriptor.readlink-at",
-//!             "wasi:filesystem/types@0.3.0#[async method]descriptor.remove-directory-at",
-//!             "wasi:filesystem/types@0.3.0#[async method]descriptor.rename-at",
-//!             "wasi:filesystem/types@0.3.0#[async method]descriptor.symlink-at",
-//!             "wasi:filesystem/types@0.3.0#[async method]descriptor.unlink-file-at",
-//!             "wasi:filesystem/types@0.3.0#[async method]descriptor.is-same-object",
-//!             "wasi:filesystem/types@0.3.0#[async method]descriptor.metadata-hash",
-//!             "wasi:filesystem/types@0.3.0#[async method]descriptor.metadata-hash-at",
-//!             "wasi:sockets/ip-name-lookup@0.3.0#[async]resolve-addresses",
-//!             "wasi:sockets/types@0.3.0#[async method]tcp-socket.connect",
-//!             "wasi:sockets/types@0.3.0#[async method]tcp-socket.send",
-//!             "wasi:sockets/types@0.3.0#[async method]udp-socket.receive",
-//!             "wasi:sockets/types@0.3.0#[async method]udp-socket.send",
-//!             "wasi:sockets/types@0.3.0#[method]tcp-socket.bind",
-//!             "wasi:sockets/types@0.3.0#[method]tcp-socket.listen",
-//!             "wasi:sockets/types@0.3.0#[method]tcp-socket.receive",
-//!             "wasi:sockets/types@0.3.0#[method]udp-socket.bind",
-//!             "wasi:sockets/types@0.3.0#[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/stdin@0.3.0#get-stdin",
-                "wasi:cli/stdout@0.3.0#set-stdout",
-                "wasi:cli/stderr@0.3.0#set-stderr",
-                "wasi:clocks/monotonic-clock@0.3.0#[async]wait-for",
-                "wasi:clocks/monotonic-clock@0.3.0#[async]wait-until",
-                "wasi:filesystem/types@0.3.0#[method]descriptor.read-via-stream",
-                "wasi:filesystem/types@0.3.0#[async method]descriptor.write-via-stream",
-                "wasi:filesystem/types@0.3.0#[async method]descriptor.append-via-stream",
-                "wasi:filesystem/types@0.3.0#[async method]descriptor.advise",
-                "wasi:filesystem/types@0.3.0#[async method]descriptor.sync-data",
-                "wasi:filesystem/types@0.3.0#[async method]descriptor.get-flags",
-                "wasi:filesystem/types@0.3.0#[async method]descriptor.get-type",
-                "wasi:filesystem/types@0.3.0#[async method]descriptor.set-size",
-                "wasi:filesystem/types@0.3.0#[async method]descriptor.set-times",
-                "wasi:filesystem/types@0.3.0#[async method]descriptor.read-directory",
-                "wasi:filesystem/types@0.3.0#[async method]descriptor.sync",
-                "wasi:filesystem/types@0.3.0#[async method]descriptor.create-directory-at",
-                "wasi:filesystem/types@0.3.0#[async method]descriptor.stat",
-                "wasi:filesystem/types@0.3.0#[async method]descriptor.stat-at",
-                "wasi:filesystem/types@0.3.0#[async method]descriptor.set-times-at",
-                "wasi:filesystem/types@0.3.0#[async method]descriptor.link-at",
-                "wasi:filesystem/types@0.3.0#[async method]descriptor.open-at",
-                "wasi:filesystem/types@0.3.0#[async method]descriptor.readlink-at",
-                "wasi:filesystem/types@0.3.0#[async method]descriptor.remove-directory-at",
-                "wasi:filesystem/types@0.3.0#[async method]descriptor.rename-at",
-                "wasi:filesystem/types@0.3.0#[async method]descriptor.symlink-at",
-                "wasi:filesystem/types@0.3.0#[async method]descriptor.unlink-file-at",
-                "wasi:filesystem/types@0.3.0#[async method]descriptor.is-same-object",
-                "wasi:filesystem/types@0.3.0#[async method]descriptor.metadata-hash",
-                "wasi:filesystem/types@0.3.0#[async method]descriptor.metadata-hash-at",
-                "wasi:sockets/ip-name-lookup@0.3.0#[async]resolve-addresses",
-                "wasi:sockets/types@0.3.0#[async method]tcp-socket.connect",
-                "wasi:sockets/types@0.3.0#[async method]tcp-socket.send",
-                "wasi:sockets/types@0.3.0#[async method]udp-socket.receive",
-                "wasi:sockets/types@0.3.0#[async method]udp-socket.send",
-                "wasi:sockets/types@0.3.0#[method]tcp-socket.bind",
-                "wasi:sockets/types@0.3.0#[method]tcp-socket.listen",
-                "wasi:sockets/types@0.3.0#[method]tcp-socket.receive",
-                "wasi:sockets/types@0.3.0#[method]udp-socket.bind",
-                "wasi:sockets/types@0.3.0#[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

Activity

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

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions