Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bindgen improvement: Remove the use of async_trait #9823

Open
ifsheldon opened this issue Dec 14, 2024 · 0 comments
Open

Bindgen improvement: Remove the use of async_trait #9823

ifsheldon opened this issue Dec 14, 2024 · 0 comments

Comments

@ifsheldon
Copy link

Feature

Remove the use of async_trait in bindgen! as per #9776 (comment). Use async fn in traits, RPITIT and trait_variant instead.

Benefit

Removing async_trait simplifies the generated code by bindgen! a lot. This can also drastically improve IDE experience as IDEs have better support for async fn in traits and RPITIT. Coding experience should be much better as well, as programmers can just use async fn when implementing autogenerated traits by bindgen in async mode.

Implementation

Note: I don't have time to dig into details now, so this issue is primary for tracking. Probably someone can tag this as "good first issue" :)

Just search for ::async_trait in the source code of wit-bindgen crate:

https://github.com/search?q=repo%3Abytecodealliance%2Fwasmtime+path%3A%2F%5Ecrates%5C%2Fwit-bindgen%5C%2F%2F+%3A%3Aasync_trait&type=code

There are not many occurrences to my surprise.

image

In theory, we need to generate something like:

#[trait_variant::make(HostX: Send)]
pub trait LocalHostX {
//...
}

instead of

#[async_trait]
pub trait HostX {
//...
}

cc @alexcrichton

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant