webtransport 0.1.0
webtransport: ^0.1.0 copied to clipboard
WebTransport (HTTP/3 over QUIC) for Dart and Flutter: one browser-shaped client API, backed by the browser on the web and by a bundled Rust implementation elsewhere.
0.1.0 #
Initial release.
- One portable, browser-shaped client API —
createWebTransport— that selects its backend at compile time: the browser's ownWebTransporton the web, and a bundled Rust implementation of the protocol everywhere else. - The native backend is
wtransport(HTTP/3 over QUIC), exposed through a documented C ABI (src/webtransport.h, generated by cbindgen) and bound to Dart withffigen. - The Rust crate is compiled while the application or package is built, by a
Dart build hook using
package:native_toolchain_rust; the resulting dynamic library is bundled as a code asset. - Non-blocking by construction: the Rust side owns a multi-threaded tokio
runtime, completions are batched into a single
NativeCallable.listener, and the portable API drives that stack from a worker isolate with zero-copy chunk hand-off. - Native only extras, exported separately from
package:webtransport/webtransport_ffi.dart: the server side (self-signed, PEM and DER identities,403/404/429rejections, certificate digests for pinning), the in-process backend, the worker isolate and the rawwt_*bindings. - Client API surface:
ready,closed,datagrams(readable/writable),createBidirectionalStream,createUnidirectionalStream,incomingBidirectionalStreams,incomingUnidirectionalStreams,reliability,congestionControl,closeandgetStats, mirroring the W3C WebTransport API.