feat: Implement QUIC
Implements a QUIC interface, loosely based on the WebTransport API (a future change could add the WebTransport API, built on top of this one).
quinn is used for the underlying QUIC implementation, for a few reasons:
- A cloneable "handle" api which fits quite nicely into deno resources.
- Good collaboration with the rust ecosystem, especially rustls.
- I like it.
@devsnek we'll get more reviews in this week and aim to land it for v1.41.
How hard or how long would it take to implement Webtransport with this PR ?
My suggestion is : why not adding it at the same time before merging in 1.41 since WT is 76% available on the browsers.
Adding a client seems "easy" enough, and a server which is upgrading the QUIC transport connection to a server (somewhat like Websocket works at the moment)
How hard or how long would it take to implement WebTransport with this PR ?
Probably should be done in a separate PR imo. I'm really excited about this! Is there any consideration for this in deno 1.43 @bartlomieju?
Very nicely done. Most of my suggestions are little nits. However, same as @mmastrac, I question whether this should be done as an extra module rather than within
ext/net.Either way, can you please resolve the merge conflicts?
I also think we should merge it into ext/net, and if we want to make protocol that depends on QUIC then we can make module ( i.e WebTransport and Media over Quic (MoQ)..