Closed quentusrex closed 3 years ago
Thanks for opening this! You are on the right track here, once hyper gets h3 we can easily expose it for tonic.
Initial progress is here https://github.com/hyperium/h3/pull/1
I think I'll close this for now. Until hyper supports h3 there isn't much we can do.
Here's the issue for adding h3
support into hyper
: https://github.com/hyperium/hyper/issues/1818
As of writing, it's currently waiting on this exploratory effort to add h3
support to reqwest
, which will inform how h3
is supported in hyper
: https://github.com/seanmonstar/reqwest/issues/1558
any news?
@usmonie See the linked issues. If nothings been posted there then there is probably nothing new. No need to post on old issues.
waiting on this exploratory effort to add h3 support to reqwest, See the linked issues. If nothings been posted there then there is probably nothing new.
@davidpdrsn But looks like ... This was done in https://github.com/seanmonstar/reqwest/pull/1599, and released in v0.11.15 Current 0.11.18
That's reqwest. What about hyper?
As of writing, it's currently waiting on this exploratory effort to add
h3
support toreqwest
Based on this, it seems that adding h3 to reqwest was the main problem.
As far as I understand, it was hyper waiting on reqwest (for client-side support), and even as of 0.12.5, reqwest's http/3 support still requires an experimental flag; my understanding from https://github.com/hyperium/hyper/issues/1818 is that Hyper is waiting for that to stabilise before taking it on. The request-side issue for this is https://github.com/seanmonstar/reqwest/issues/2303.
So long-story-short, it still appears to be blocked in a grand-dependency in a PRs-welcome state.
Feature Request
Tracking issue for supporting client and server http3 transport for gRPC services. Functionality should mostly be inherited by dependency crates, but would likely need exposure through tonic layer.
Crates
In Tonic: https://github.com/hyperium/tonic/blob/master/tonic/src/transport/mod.rs
Inheriting from Hyper: https://github.com/hyperium/hyper/issues/1818
Inheriting from Quinn: https://github.com/djc/quinn/issues?q=is%3Aissue+is%3Aopen+label%3Ah3
Motivation
To have a rust and tokio framework that is futures based and supports H3 for machine to machine APIs, as well as upcoming browser to server H3 requests.
Alternatives
There are other libraries that implement H3 like quiche, but they all still require significant work to get gRPC based services working.