Releases: sagebind/isahc
Releases · sagebind/isahc
Pulling a fast one
This release contains some minor performance improvements as a result of some internal changes.
Changed
- Switch agent from curl-provided
select(2)
backend topolling
. This delivers some throughput improvements in some benchmarks involving concurrent requests. This also removes Isahc's reliance on loopback UDP sockets for selector wakeups. (#17, #243, #263) @sagebind - Refactor request configuration internal representation. This offered a minor performance improvement in some cases by greatly reducing the amount of hashmap lookups needed for applying request configuration. (#292) @sagebind
Dependency Updates
- Upgrade publicsuffix to v2 (#312) @rushmorem
- Update tiny_http requirement from 0.7 to 0.8 (#296) @dependabot
Consume API and async JSON
Cookie quote parsing bugfix
Improve HTTP/1.x header compatibility
Implement Send for async copy_to
1.0.0
Breaking Changes
- The
Body
type has now been broken up into distinctAsyncBody
andBody
types, with the former implementing onlyAsyncRead
and the latter implementing onlyRead
. This was done to reduce confusion on how to produce and consume body content when in an asynchronous context without blocking. This also makes it possible to use synchronousRead
sources such as aFile
as a request body when using the synchronous API, something that was previously difficult to do. (#202, #262) - Methods on the
ResponseExt
trait related to reading the response body have been extracted into two new extension traits:AsyncReadResponseExt
andReadResponseExt
. Like the previous change, this was done to reduce confusion on which methods to use when consuming a response in an async context. The_async
suffix previously used to distinguish between the sync and async methods has been dropped, as it is no longer necessary. (#202, #262) - The
Error
type has been significantly refactored and changed into a struct with a separateErrorKind
enum. This was done to make it possible to add new errors without breaking changes, and to ensure that errors can always preserve upstream causes efficiently. The error kinds have also been updated to be clearer and more distinct. (#182, #258) - The
bytes
crate is no longer a dependency andBody::from_maybe_shared
has been removed. (#261) Configurable::dns_servers
has been removed, as it is more likely to confuse users more than anything since it requires libcurl to be compiled with c-ares, which it isn't by default and is unlikely to be.- Removed
Request
,Response
, andHttpClient
from theprelude
module. You will now have to import these directly. Importing large prelude modules can make code more confusing to read and is usually considered an anti-pattern. (#281)
Fixed
- Fix warning for aborting response body stream early being emitted inconsistently. Also change from a
WARN
to anINFO
log. (#280)
Other Changes
- The minimum supported Rust version (MSRV) is now pinned to 1.41. (#259)
- Add
post_async
example usage and improve various method docs. (#273) - Add rustfmt config and apply rustfmt to the entire codebase. (#276, #277)
- Add Clippy checks to CI. (#279)
Dependency Updates
1.0.0-beta.1
Breaking Changes
- The
Body
type has now been broken up into distinctAsyncBody
andBody
types, with the former implementing onlyAsyncRead
and the latter implementing onlyRead
. This was done to reduce confusion on how to produce and consume body content when in an asynchronous context without blocking. This also makes it possible to use synchronousRead
sources such as aFile
as a request body when using the synchronous API, something that was previously difficult to do. (#202, #262) - Methods on the
ResponseExt
trait related to reading the response body have been extracted into two new extension traits:AsyncReadResponseExt
andReadResponseExt
. Like the previous change, this was done to reduce confusion on which methods to use when consuming a response in an async context. The_async
suffix previously used to distinguish between the sync and async methods has been dropped, as it is no longer necessary. (#202, #262) - The
Error
type has been significantly refactored and changed into a struct with a separateErrorKind
enum. This was done to make it possible to add new errors without breaking changes, and to ensure that errors can always preserve upstream causes efficiently. The error kinds have also been updated to be clearer and more distinct. (#182, #258) - The
bytes
crate is no longer a dependency andBody::from_maybe_shared
has been removed. (#261) Configurable::dns_servers
has been removed, as it is more likely to confuse users more than anything since it requires libcurl to be compiled with c-ares, which it isn't by default and is unlikely to be.
Other Changes
- The minimum supported Rust version (MSRV) is now pinned to 1.41. (#259)