Concuring is a synchronous and concurrent HTTP client library written in Rust.
It is work in progress and not appropriate for use.
I want to make HTTP requests from my Rust applications, there are two main choices I have:
- use the fantastic
ureqlibrary: you need to block for each request, not concurrent - bring in an async runtime like
tokioand refactor very important parts of the application to work with that runtime. Very viral.
I instead, want to keep using sync Rust, but want to make concurrent requests.
This library tries to achieve this using the io-uring io interface that Linux provides. It is used to do asynchronous (potentially concurrent) IO with a single blocking thread efficiently by offloading the IO to the kernel.
Staying in a single sync blocking thread but still being able to do concurrent HTTP requests, keeps everything tight, very simple to work with or understand, very performant, and small sized (avoiding biig runtime costs for binary size or extra work)
- HTTP GET
- chunked responses
- connection pooling
- TLS