Skip to content

WASIp3 support #135

Description

@ignatz

My understanding is that WASIp3 is currently not supported, which is very much expected. I can also see that there's a p3 branch and a p3 PR.

I'm creating this ticket mostly to have something to track and maybe better understand the plan 🙏

Just as a snapshot, when you try to use wstd with the wasip2 build target and wasip3 async WIT interfaces, everything builds and runs until an async host interface is called, where the host panics with something akin to:

thread '<unnamed>' (1) panicked at /home/sebastian/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/wit-bindgen-0.51.0/src/rt/async_support/waitable.rs:193:13:
assertion failed: !task.is_null()
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

Based on a prior comment, my understanding is that this can be worked on now and will be tied to the wasm32-wasip3 target.

Please let me know if I got anything wrong. If and when you folks have timelines, I would love to hear.

Thanks for all your great work 🙏

(On a tangent, with some mio WASIp2 support now in place, I was also wondering what the overarching plan is? If I understood the comms correctly, wstd was at least initially planned as a stop gap. The readme still raads: It exists primarily to enable people to write async-based applications in Rust before async-std, smol, or tokio land support for Wasm Components and WASI 0.2. Once those runtimes land support, it is recommended users switch to use those instead.).

Activity

  1. ignatz commented on Jul 28, 2026

    @ignatz
    Author

    Friendly ping.

    It may be surprising to users that wasmtime claims to be WASIp3 ready but none of the guest environments seemingly supporting it (would love to be wrong). Some clarification, documentations and/or timelines would be greatly appreciated 🙏

  2. ignatz commented on Aug 27, 2026

    @ignatz
    Author

    Friendly ping. Would love to use WASIp3 with wstd, tokio, mio, ...

  3. yoshuawuyts commented on Aug 29, 2026

    @yoshuawuyts
    Member

    @ignatz hi yes, sorry for the delay. We're indeed working on this. I've been meaning (and failing) to properly address this for a few months now, instead just vendoring in my branch as needed.

    @pchickey and I talked about this yesterday, and one of his colleagues is going to take over the implementation so it actually gets done. Hard to give you an ETA, but we're both going to prioritize review for this so we can get this out sooner!

  4. adamrk commented on Sep 3, 2026

    @adamrk
    Member

    Hey @ignatz, I've started working on this (see #141). Mind closing this issue in favor of that one?

  5. ignatz commented on Sep 3, 2026

    @ignatz
    Author

    Hey @ignatz, I've started working on this (see #141). Mind closing this issue in favor of that one?

    I don't want to sound ungrateful, I'm genuinely stoked someone is working on this. That said, I filed this issue seeing that folks are working on this asking: timelines and alternate runtimes. I was still hoping for some answers. Apart from that, you should totally track you work however works best for you

  6. adamrk commented on Sep 3, 2026

    @adamrk
    Member

    asking: timelines and alternate runtimes

    Regarding timelines, I don't think we'll release p3 support until the wasip3 target is stable (maybe rustc 1.100 or 1.101 so before the end of the year?), but we should be able to do it as soon as that's done. For tracking that, take a look at rust-lang/rust#161940. The implementation should be merged into the repo here in the next few weeks so if you want to try it out before then you can do so.

    Regarding alternate runtimes, I think you'll get more information by opening issues with the runtimes you're interested in. They'll probably be building on top of the wasip3 or wit-bindgen crates directly, not wstd, so the work here isn't really relevant to them adding support.

  7. ignatz commented on Sep 4, 2026

    @ignatz
    Author

    Regarding timelines, I don't think we'll release p3 support until the wasip3 target is stable (maybe rustc 1.100 or 1.101 so before the end of the year?), but we should be able to do it as soon as that's done. For tracking that, take a look at rust-lang/rust#161940. The implementation should be merged into the repo here in the next few weeks so if you want to try it out before then you can do so.

    Perfect, thanks 🙏

    Regarding alternate runtimes, I think you'll get more information by opening issues with the runtimes you're interested in. They'll probably be building on top of the wasip3 or wit-bindgen crates directly, not wstd, so the work here isn't really relevant to them adding support.

    In principle that sounds reasonable, I just don't think mio will feel responsible, since the integration was donated and is maintained/owned by your org tokio-rs/mio#1836. In essence: bytecodealliance owns two implementations and wstd says: It exists primarily to enable people to write async-based applications in Rust before async-std, smol, or tokio land support for Wasm Components and WASI 0.2. Once those runtimes land support, it is recommended users switch to use those instead.. I'm not sure where would be the best place to ask - maybe you can help me

  8. adamrk commented on Sep 4, 2026

    @adamrk
    Member

    I see - for general bytecode alliance questions, the best place to bring it up would be on the zulipchat (probably in the wasi channel).

  9. ignatz commented on Sep 9, 2026

    @ignatz
    Author

    If I was specifically asking about

    wstd/README.md

    Lines 49 to 53 in b9b83a7

    This is a minimal async Rust standard library written exclusively to support
    Wasm Components. It exists primarily to enable people to write async-based
    applications in Rust before async-std, smol, or tokio land support for Wasm
    Components and WASI 0.2. Once those runtimes land support, it is recommended
    users switch to use those instead.
    , would you still prefer me going to zulip or should I open another issue in wstd? I would be nice if afterwards the documented recommendation could be updated to reflect the current state of the world, so that everyone can discover it.

  10. pchickey commented on Sep 9, 2026

    @pchickey
    Contributor

    That paragraph is still true, aside from async-std being defunct, it will just expand to encompass both WASI 0.2 and 0.3. The purpose of wstd will continue to be providing an idiomatic programming surface for targeting wasip2 and p3, with as much of that in common between the two revisions as reasonably possible. We still don't have the goal of being a runtime forever, and as support in other runtimes matures we would love to consider whether its appropriate to retire wstd. Some of our BA peers are working actively on projects that will help unlock wasip3 support in tokio, but its not yet ready to be used AFAIK. Once its working in upstream tokio, we will evaulate whether we want to more strongly recommend that approach in the README.

  11. ignatz commented on Sep 10, 2026

    @ignatz
    Author

    Once its working in upstream tokio, we will evaulate whether we want to more strongly recommend that approach in the README.

    Is it not working in upstream? It was merged in March: tokio-rs/mio#1931. According to tokio-rs/mio#1939 it was release in mio v1.2 starting March.

    I would still politely ask to update the statement already. With mio support out, it's tough to reason about. If I target WASIp2 today, which one should I use? Different folks worked on the mio integration, maybe there's also just a disconnect? Any persisted clarification would be helpful

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

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions