Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add standard library support for HTTP 1.1, HTTP 2.0 and HTTP 3 #734

Open
yorickpeterse opened this issue Jul 29, 2024 · 1 comment
Open
Labels
feature New things to add to Inko, such as a new standard library module std Changes related to the standard library
Milestone

Comments

@yorickpeterse
Copy link
Collaborator

yorickpeterse commented Jul 29, 2024

Description

The standard library should provide an HTTP client that supports HTTP 1.1, 2.0, and 3/QUIC. The client would be provided by the module std.net.http and should transparently support the correct HTTP version. For HTTP 1.1, chunked transfers must be supported.

To make testing easier, it might be worth considering implementing the library such that the code performing the actual requests can be swapped out. This is something I did for Openflow, though I'm not super happy with the exact setup it uses.

In terms of the design of the client/API interface, I'm not sure just yet so we'll need to do some experimenting.

Priorities

HTTP 1.1 and 2.0 have a higher priority compared to HTTP 3, as adoption of HTTP 3 is still pretty limited. The HTTP 3 protocol is also significantly different, and likely requires changes to the runtime library to support QUIC sockets (I think?).

Resources

Related work

No response

@yorickpeterse yorickpeterse added feature New things to add to Inko, such as a new standard library module std Changes related to the standard library labels Jul 29, 2024
@yorickpeterse
Copy link
Collaborator Author

It's worth thinking about whether HTTP 2 support is actually beneficial. Much of the web still uses or at least supports HTTP 1.1, and HTTP 3 fixes issues present in both 1.1 and 2.0 (e.g. head of line blocking). We could decide to just skip HTTP 2 in favour of only supporting 1.1 and 3.0.

@yorickpeterse yorickpeterse added this to the 0.18.0 milestone Oct 23, 2024
@yorickpeterse yorickpeterse modified the milestones: 0.18.0, 0.19.0 Dec 2, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
feature New things to add to Inko, such as a new standard library module std Changes related to the standard library
Projects
None yet
Development

No branches or pull requests

1 participant