You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This a great project. I have a question though about the goal in regards to async support. I see that as things are right now there's a dependency on tokio -- which I think rules out use w/ other async runtimes (like smol or glommio, etc.)
It seems most uses are just on tokio::sync, for which there are potential platform agnostic alternatives. (async_channel etc.).
and I don't think there's a way to do the equivalent without a runtime dependency. So I guess there'd need to be some refactoring to make that feasible (perhaps a trait and separate pluggable TokioDriver behind a feature or separate crate?)
Curious what the thoughts of the project maintainers are here. Thanks!
The text was updated successfully, but these errors were encountered:
Tokio has been selected as dependency mainly because it is what underlying QUIC implementation (quinn) dependency does. QUIC I/O runs within the tokio runtime (not only the engine of wtransport).
Lately, quinn library generalized the async runtime and implemented it for tokio and async-std (see here). Therefore, it would be possible to follow the same approach and provide support for async-std as well (behind features flags). That's something I had on my roadmap, but I don't think it is really urgent for now (as tokio is the most common async runtime nowadays).
Alternative QUIC impl for Rust that doesn't mandate any particular runtime, or async at all really:
"The TQUIC core employs an abstraction design for network I/O and event loop, and it doesn't rely on sockets, but rather user-provided callbacks. Furthermore, the TQUIC core doesn't impose specific event loop requirements; instead, it offers functions to assist users in scheduling events. This flexibility makes TQUIC easy to customize and integrate into various systems.
The idea of wtransport is to provide an ergonomic async interface for webtransport programming. The idea is to hide the complexity of QUIC/HTTP3 and all UDP I/O inside an inner driver.
However, wtransport-proto (crate of this very same workspace) provides the protocol logic without assuming any I/O (so, in theory, one could build on top of that with its own I/O)
This a great project. I have a question though about the goal in regards to
async
support. I see that as things are right now there's a dependency on tokio -- which I think rules out use w/ other async runtimes (likesmol
orglommio
, etc.)It seems most uses are just on
tokio::sync
, for which there are potential platform agnostic alternatives. (async_channel
etc.).However there is one use of
tokio::spawn
@wtransport/wtransport/src/driver/mod.rs
Line 55 in 8ca6e20
TokioDriver
behind a feature or separate crate?)Curious what the thoughts of the project maintainers are here. Thanks!
The text was updated successfully, but these errors were encountered: