Open ONLYA opened 3 months ago
There is another library: https://github.com/quicsec/quicsec. This is more likely higher-level than the quiche library.
The most important feature that HTTP3 provides is higher reliability on unreliable connections which were mainly developed with the Indian market in mind. Perhaps their internet is no longer as unreliable but there are still plenty of people worldwide that have reliability problems using HTTP2.
Need Security update and grapic & views need change
CURL already has support for HTTP/2 and HTTP/3. Can we close this issue?
Can we close this issue?
No, because HTTP/3 support is still experimental in curl
CURL already has support for HTTP/2 and HTTP/3. Can we close this issue?
According to https://curl.se/docs/http3.html, cURL
with only ngtcp2
is not experimental.
HTTP/3 support in curl is considered EXPERIMENTAL until further notice when built to use quiche or msh3. Only the ngtcp2 backend is not experimental.
However, according to the ngtcp2
documentation, the TLS library is not using "LibCrypto/LibTLS". They are quictls
, BoringSSL
and aws-lc
, GnuTLS
, Picotls
, and wolfSSL
. There must be some other things more like this. If we do want to use it, we have to introduce one of these that is considerred as a duplicate of what ladybird currently has.
I think the best way is to refer to the QUIC and HTTP3 protocol documents like RFC 9000 and to implement it with the libraries ladybird is currently using as the basis. Then we will have a library called LibQUIC or an enhanced LibHTTP. Or we could contribute to the existing stable ones to add new supports that have the "Libxxx" as the basis.
I am surprised that no one has ever mentioned this in this project before. The world is gradually switching to HTTP3 while HTTP2 is now dominating the web. Given the performance and the security and privacy features from HTTP3 protocol, it's becoming more and more important to have HTTP3 supported. Chrome, Firefox and Safari do not have full support of HTTP3 and I think that Ladybird supports HTTP3 will form a great distinction from those. This browser is a new project in development, which means that it won't be as challenging as the other established projects to change some underlying architecture in the code without so many technical debts as the barrier.
According to the README file:
It seems that the HTTP library lacks of the HTTP2 and HTTP3 support. According to https://github.com/SerenityOS/serenity/issues/24672, Ladybrid can use any other third party library like https://github.com/cloudflare/quiche. Given that this is written in Rust, it's also a good example of trying to integrate Rust crate into this C++ code base as a library.