Crate concuring

Crate concuring 

Source
Expand description

§Concuring

Note: This library is a work in progress and is not yet suitable for production use.

concuring is a synchronous, concurrent HTTP client that uses a single blocking thread.

§Design and Motivation

The primary goal of this library is to enable concurrent HTTP requests from a synchronous Rust application without pulling in an entire asynchronous runtime like tokio or async-std.

While async provides a powerful model for concurrency, it can be “viral,” often requiring significant parts of an application to be written in an async-aware style. For applications that are primarily synchronous, introducing async for networking can add significant complexity and binary size.

concuring offers a different trade-off. It uses the Linux io-uring interface to perform asynchronous I/O operations in the kernel, while presenting a simple, blocking API to your application. This allows you to submit multiple requests and wait for them to complete concurrently, all from a single thread, keeping your application’s architecture synchronous and simple.

§Trade-offs

  • Linux Only: Relies on io-uring, which is a Linux-specific feature.
  • Single-Threaded Concurrency: Concurrency is handled by the kernel, but all application-level logic runs on the one thread that owns the Concuring client. This is not multi-threaded parallelism.

§Roadmap

  • HTTP GET
  • Chunked responses
  • Connection pooling
  • TLS

Re-exports§

pub use concuring::Concuring;
pub use request::Request;
pub use request::RequestBuilder;

Modules§

concuring
request