PackageTrack
Sign in Get early access

isahc

The practical HTTP client that is fun to use.

2.0.1 17M downloads/mo #2284 most downloaded on crates.io sagebind/isahc

What this package is like to depend on

Last release 1 months ago

05 Jul 2026

Ships unpredictably

gaps range from 1 weeks to 3.9 years

Nearly every release is documented

notes for 48 of 48 stable releases

Nothing withdrawn

no release was ever pulled

7 years old

49 releases · first in 2019

6 releases in the last 12 months

see the full history below

Release timeline

49 releases · Aug 2019 to Jul 2026
2020 2021 2022 2023 2024 2025 2026
Release Pre-release

Releases

latest 49
  1. 2.0.1 05 Jul 2026
    Release notes

    Maintenance

    • Use Nextest in CI with retries (#537)
    • Upload test results to Codecov (#540)

    Dependencies

    • Bump minimum curl-sys version from 0.4.81 to 0.4.90 (#539)
      • This pulls in a bundled libcurl version 8.21.0, which addresses curl/curl#21558 present in 8.20.0. This addresses issue #501.
    • Bump log from 0.4.29 to 0.4.30 in (#522)
    • Bump rustls-pki-types from 1.14.0 to 1.14.1 in (#523)
    • Bump http from 1.4.0 to 1.4.1 in (#524)
    • Bump psl from 2.1.210 to 2.1.211 (#526)
    • Bump psl from 2.1.211 to 2.1.213 (#535)
    • Bump actions/checkout from 6 to 7 (#533)
    • Bump log from 0.4.30 to 0.4.32 (#529)
    • Bump http from 1.4.1 to 1.4.2 (#530)
    • Bump regex from 1.12.3 to 1.12.4 (#531)
    • Bump webpki-root-certs from 1.0.7 to 1.0.8 (#536)
    • Bump codecov/codecov-action from 6 to 7 (#525)
    • Bump actions/cache from 5 to 6 (#532)
    Open source →
    Release notes

    Maintenance

    • Use Nextest in CI with retries (#537)
    • Upload test results to Codecov (#540)

    Dependencies

    • Bump minimum curl-sys version from 0.4.81 to 0.4.90 (#539)
    • Bump log from 0.4.29 to 0.4.30 in (#522)
    • Bump rustls-pki-types from 1.14.0 to 1.14.1 in (#523)
    • Bump http from 1.4.0 to 1.4.1 in (#524)
    • Bump psl from 2.1.210 to 2.1.211 (#526)
    • Bump psl from 2.1.211 to 2.1.213 (#535)
    • Bump actions/checkout from 6 to 7 (#533)
    • Bump log from 0.4.30 to 0.4.32 (#529)
    • Bump http from 1.4.1 to 1.4.2 (#530)
    • Bump regex from 1.12.3 to 1.12.4 (#531)
    • Bump webpki-root-certs from 1.0.7 to 1.0.8 (#536)
    • Bump codecov/codecov-action from 6 to 7 (#525)
    • Bump actions/cache from 5 to 6 (#532)
    Open source →
  2. 2.0.0 25 May 2026
    Release notes

    Breaking Changes

    This release includes a handful of breaking changes, primarily around TLS backends and the TLS API. For more detail on these changes and how to adapt your code when upgrading from 1.x, please see the migration guide.

    • Isahc now supports choosing between multiple TLS backends, and crate features have been changed to reflect this. Support for rustls as a TLS backend has been added, and the default TLS backend has been changed to be rustls. (#491)
    • Remove and replace all SSL-related options on Configurable with a new tls module consolidated into tls::TlsConfig. The names of all individual options have been renamed, and include several small breaking changes. (#491)
      • config::CaCertificate renamed to tls::TrustStore, and expanded with new methods for selecting entire providers of CA certificates, beyond just a single PEM bundle.
      • config::ClientCertificate has been renamed to tls::Identity with additional options for loading certificates and keys from other formats.
      • config::PrivateKey has been moved to tls::PrivateKey.
      • config::SslOption has been removed and merged into regular builder methods for tls::TlsConfig.
    • Redesign NetworkInterface into multiple types in a new net::interface module, which has a more natural API and also supports combining multiple criteria for selecting an interface to bind to. (#494)
    • Several network-related types have been moved from the config module into the net module. (#518)
      • config::Dialer and config::DialerParseError moved into net.
      • config::IpVersion moved to net::IpVersion.
      • config::DnCache and config::ResolveMap moved into net::dns.
    • Support for log is now an optional feature, which is enabled by default. (e07e64bd)

    Added

    • TLS validation can now be augmented by validating a server's certificate is issued by a specific issuer chain using tls::Issuer. Not all backends support this option. (#491)
    • Added optional support for using webpki-root-certs as a trust store for root certificates behind a trust-webpki-roots crate feature, which can be used with any TLS backend. This can be used automatically by default combined with rustls by enabling the rustls-tls-webpki-roots crate feature. (#492)

    Changes

    • Add some sanity checks that are performed at runtime when Isahc first initializes to make sure the linked version of libcurl is of a compatible version and seems to be configured to work properly. (#510)
    • Internal blob handling has been revamped in order to reduce or even eliminate unnecessary copying of in-memory certificates and keys in TLS configuration. This may result in a small performance improvement and reduction in memory usage when using these options. (#516)

    Maintenance

    • Revamp and improve GitHub Actions workflows to test Isahc more comprehensively with more platforms, CPU architectures, and feature combinations. (#499) (#500) (#504)

    Dependencies

    • Bump http from 0.2.12 to 1.4.0 (#472)
    • Bump codecov/codecov-action from 5 to 6 (#474)
    Open source →
    Release notes

    chore: Release package isahc version 2.0.0

    Open source →
    Release notes

    Breaking Changes

    This release includes a handful of breaking changes, primarily around TLS backends and the TLS API. For more detail on these changes and how to adapt your code when upgrading from 1.x, please see the migration guide.

    • Isahc now supports choosing between multiple TLS backends, and crate features have been changed to reflect this. Support for rustls as a TLS backend has been added, and the default TLS backend has been changed to be rustls. (#491)
    • Remove and replace all SSL-related options on Configurable with a new tls module consolidated into tls::TlsConfig. The names of all individual options have been renamed, and include several small breaking changes. (#491)
      • config::CaCertificate renamed to tls::TrustStore, and expanded with new methods for selecting entire providers of CA certificates, beyond just a single PEM bundle.
      • config::ClientCertificate has been renamed to tls::Identity with additional options for loading certificates and keys from other formats.
      • config::PrivateKey has been moved to tls::PrivateKey.
      • config::SslOption has been removed and merged into regular builder methods for tls::TlsConfig.
    • Redesign NetworkInterface into multiple types in a new net::interface module, which has a more natural API and also supports combining multiple criteria for selecting an interface to bind to. (#494)
    • Several network-related types have been moved from the config module into the net module. (#518)
      • config::Dialer and config::DialerParseError moved into net.
      • config::IpVersion moved to net::IpVersion.
      • config::DnCache and config::ResolveMap moved into net::dns.
    • Support for log is now an optional feature, which is enabled by default. (e07e64bd)

    Added

    • TLS validation can now be augmented by validating a server's certificate is issued by a specific issuer chain using tls::Issuer. Not all backends support this option. (#491)
    • Added optional support for using webpki-root-certs as a trust store for root certificates behind a trust-webpki-roots crate feature, which can be used with any TLS backend. This can be used automatically by default combined with rustls by enabling the rustls-tls-webpki-roots crate feature. (#492)

    Changes

    • Add some sanity checks that are performed at runtime when Isahc first initializes to make sure the linked version of libcurl is of a compatible version and seems to be configured to work properly. (#510)
    • Internal blob handling has been revamped in order to reduce or even eliminate unnecessary copying of in-memory certificates and keys in TLS configuration. This may result in a small performance improvement and reduction in memory usage when using these options. (#516)

    Maintenance

    • Revamp and improve GitHub Actions workflows to test Isahc more comprehensively with more platforms, CPU architectures, and feature combinations. (#499) (#500) (#504)

    Dependencies

    • Bump http from 0.2.12 to 1.4.0 (#472)
    • Bump codecov/codecov-action from 5 to 6 (#474)
    Open source →
  3. 1.8.3 05 Jul 2026
    Release notes

    Dependencies

    • Remove the restriction on curl-sys dependency versions from the prior release, now that the latest version of curl-sys fixes the DNS hanging issue. Running cargo update should be enough to pull in the latest version of Isahc 1.x and of curl-sys.
    • The runtime logic of checking for the presence of libcurl version 8.20.0 affected by curl/curl#21558 has been backported from #510 since we no longer prevent that version from being pulled in using dependency ranges. (#541).
    Open source →
    Release notes

    Dependencies

    • Remove the restriction on curl-sys dependency versions from the prior release, now that the latest version of curl-sys fixes the DNS hanging issue. Running cargo update should be enough to pull in the latest version of Isahc 1.x and of curl-sys.
    • The runtime logic of checking for the presence of libcurl version 8.20.0 affected by https://github.com/curl/curl/issues/21558 has been backported from #510 since we no longer prevent that version from being pulled in using dependency ranges. (#541).
    Open source →
  4. 1.8.2 12 May 2026
    Release notes

    Dependencies

    • Locked curl-sys to at most 0.4.87 due to a regression in the latest version that causes DNS to hang indefinitely on Windows. See #501 for more info. (#507)
    Open source →
    Release notes

    Dependencies

    • Locked curl-sys to at most 0.4.87 due to a regression in the latest version that causes DNS to hang indefinitely on Windows. See #501 for more info. (#507)
    Open source →
  5. 1.8.1 11 Apr 2026
    Release notes

    Fixed

    • Fix an agent panic in selector that would sometimes be triggered by multiple socket interests communicated from libcurl for the same socket. Error handling for the agent thread has also been improved in general. (#460, #481)
    • Fix a segfault that can occur when the agent thread panics and drops a curl multi handle before its easy handles. This is a bug in the curl-rust project, but we have implemented a workaround that should prevent this from happening for any version of curl-rust you might be using. (#459, #461, #480)
    • Rewrite PSL cache test to not use globals so that they don't randomly fail in CI. (#485)
    • Improve Debug impl for empty request bodies to distinguish between an empty body and no body.
    • Fix docs.rs failing builds.

    Dependency Updates

    • Remove parking lot dependency.
    • Bump psl from 2.1.200 to 2.1.202 (#484, #486)
    Open source →
    Release notes

    chore: Release package isahc version 1.8.1

    Open source →
    Release notes

    Fixed

    • Fix an agent panic in selector that would sometimes be triggered by multiple socket interests communicated from libcurl for the same socket. Error handling for the agent thread has also been improved in general. (#460, #481)
    • Fix a segfault that can occur when the agent thread panics and drops a curl multi handle before its easy handles. This is a bug in the curl-rust project, but we have implemented a workaround that should prevent this from happening for any version of curl-rust you might be using. (#459, #461, #480)
    • Rewrite PSL cache test to not use globals so that they don't randomly fail in CI. (#485)
    • Improve Debug impl for empty request bodies to distinguish between an empty body and no body.
    • Fix docs.rs failing builds.

    Dependency Updates

    • Remove parking lot dependency.
    • Bump psl from 2.1.200 to 2.1.202 (#484, #486)
    Open source →
  6. 1.8.0 31 Mar 2026
    Release notes

    chore: Release package isahc version 1.8.0

    Open source →
    Release notes

    This is the first maintenance release in a few years and includes a few housekeeping items. No major changes or additions.

    Changed

    • Isahc's MSRV has been increased from 1.46.0 to 1.85.0. (#446)
    • The Public Suffix List Git submodule used for compile-time suffix checking has been removed in favor of the psl crate which provides the same functionality. (#477)
    • Releases are now managed by release-plz instead of custom workflows.

    Dependency Updates

    • Many dependencies have been updated to their latest versions, which should help with compilation in modern environments. Some dependencies now allow for multiple major versions.
    • once_cell has been removed in favor of the equivalent types now provided in std. (#478)
    Open source →
    Release notes

    This is the first maintenance release in a few years and includes a few housekeeping items. No major changes or additions.

    Changed

    • Isahc's MSRV has been increased from 1.46.0 to 1.85.0. (#446)
    • The Public Suffix List Git submodule used for compile-time suffix checking has been removed in favor of the psl crate which provides the same functionality. (#477)
    • Releases are now managed by release-plz instead of custom workflows.

    Dependency Updates

    • Many dependencies have been updated to their latest versions, which should help with compilation in modern environments. Some dependencies now allow for multiple major versions.
    • once_cell has been removed in favor of the equivalent types now provided in std. (#478)
    Open source →
  7. 1.7.2 13 May 2022
    Release notes

    Security

    Dependency Updates

    • Update Public Suffix List to 172bbfd (#395) @teto-bot
    Open source →
  8. 1.7.1 28 Apr 2022
    Release notes

    Security

    Open source →
  9. 1.7.0 12 Mar 2022
    Release notes

    Added

    • Add new is_http_version_supported function which allows you to check whether support for a particular HTTP version is available at runtime. When statically linking this will be entirely dependent on your build configuration, but if you are dynamically linking to libcurl then it will vary from system to system. (#368) @sagebind

    Changed

    • Preallocate buffer for async JSON decoding to improve performance. (#367) @michalmuskala
    • Re-enable content-length request test (#383) @sagebind
    • Add minimal versions test to CI (#373) @sagebind
    • Refactor test server to support writing raw response data. (#366) @sagebind

    Dependency Updates

    • Update test-case requirement from 1.1 to 2.0 (#376) @dependabot
    Open source →
  10. 1.6.0 13 Nov 2021
    Release notes

    Added

    • Expose new APIs for cookie construction, updating, and adding to cookie jar. You can now create your own cookies with Cookie::builder and put arbitrary cookies into the cookie jar with CookieJar::set. (#264, #349) @jacobmischka
    • Add bytes() convenience methods to ReadResponseExt and AsyncReadResponseExt which read the entire response body into a Vec<u8>. (#352) @sagebind
    • Speed up CI by adding caching to CI (#358) @sagebind

    Security

    • Replace trivial internal usage of chrono with httpdate to avoid any potential reference to CVE-2020-26235 in time 0.2. (#361) @sagebind

    Dependency Updates

    • Replace chrono with httpdate internally (#361) @sagebind
    • Update tracing-subscriber requirement from 0.2.12 to 0.3.0 (#360) @dependabot
    • Update Tarpaulin and re-enable doctest coverage (#357) @sagebind
    • Update tiny_http requirement from 0.8 to 0.9 (#356) @dependabot
    Open source →
  11. 1.5.1 13 Oct 2021
    Release notes

    Fixed

    • Greatly reduce CPU usage, particularly when receiving long-running or large responses. This was caused by a bug where timeout timers were not being cleared once they expired, effectively creating a repeating timer that would cause repeated extra polls. Huge thanks to @jacobmischka for finding and fixing this bug! (#348, #350)
    • Return true for Body::is_empty for HEAD responses (#341, #343)
    • Fix code coverage analysis failing to run in CI. (#351)
    Open source →
  12. 1.5.0 23 Aug 2021
    Release notes

    Added

    • Expose connection info in errors with the addition of Error::local_addr and Error::remote_addr. This allows you to get the local & remote addresses involved in a request, if any, even if an error occurs. (#336, #337) @sagebind
    • Allow use of the Expect header to be configured via Configurable::expect_continue. (#303, #311, #340) @sagebind

    Dependency Updates

    • Update env_logger requirement from 0.8 to 0.9 (#330) @dependabot
    Open source →
  13. 1.4.1 18 Aug 2021
    Release notes

    Added

    • Improve the documentation on Error and ErrorKind and add Error::is_timeout.

    Fixed

    • Improve connection reuse log message and fix some false positives around its emission. The warning about connection reuse will now point users to the wiki page which explains the message in depth. (#335) @sagebind

    Dependency Updates

    • Update Public Suffix List to bc5d64d (#328) @teto-bot
    Open source →
  14. 1.4.0 14 May 2021
    Release notes

    Added

    • Add support for using in-memory client certificates. (#89, #320)
    • Add API for accessing trailer headers in responses. (#157, #256)

    Changed

    • Isahc's MSRV has been increased from 1.41.0 to 1.46.0. (#321)

    Fixed

    • Fix wrong link to request type in docs. (#323) @humb1t

    Dependency Updates

    • Update Public Suffix List to 598c638 (#325) @teto-bot
    Open source →
  15. 1.3.1 17 Apr 2021
    Release notes

    Dependency Updates

    • Update Public Suffix List to 5cb7ed8 (#319) @teto-bot
    • Update curl version constraint to ensure MSRV.
    Open source →
  16. 1.3.0 07 Apr 2021
    Release notes

    Added

    • Allow configuring low speed timeouts for transfers, either per-request or as a client default. (#316) @MoSal

    Fixed

    • Handle raw UTF-8 bytes in redirect headers (#315, #317) @sagebind
    • Fix agent IDs for tracing always 0. @sagebind

    Changed

    • Replace flume with async-channel internally to maintain MSRV contract. (#318) @sagebind
    Open source →
  17. 1.2.0 23 Mar 2021
    Release notes

    This release contains some minor performance improvements as a result of some internal changes.

    Changed

    • Switch agent from curl-provided select(2) backend to polling. 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
    Open source →
  18. 1.1.0 30 Jan 2021
    Release notes

    Added

    • Add async json() response convenience method to deserialize JSON asynchronous responses to mirror the synchronous one. (#245, #291)
    • Add consume API for reading response bodies fully before discarding them. (#257, #284)

    Fixed

    • Update sluice to pull in race condition bugfix. (#295)
    Open source →
  19. 1.0.3 11 Jan 2021
    Release notes

    Fixed

    • Fix parsing of quoted cookie values (#288) @theawless

    Dependency Updates

    • Update Public Suffix List to 6b67c6f (#289) @teto-bot
    Open source →
  20. 1.0.2 01 Jan 2021
    Release notes

    Fixed

    • Headers for HTTP/1.x are now always sent with a single trailing space after the colon (:). While not strictly necessary according to RFC 7230, it was uncommon formatting and poorly-written servers can choke on parsing such headers. (#286, #287)
    Open source →
  21. 1.0.1 31 Dec 2020
    Release notes

    Fixed

    • Update future type returned by AsyncReadResponseExt::copy_to to implement Send if both the reader and writer types implement Send. This allows it to work with multithreaded runtimes. (#283, #285)
    Open source →
  22. 1.0.0 29 Dec 2020
    Release notes

    Breaking Changes

    • The Body type has now been broken up into distinct AsyncBody and Body types, with the former implementing only AsyncRead and the latter implementing only Read. 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 synchronous Read sources such as a File 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 and ReadResponseExt. 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 separate ErrorKind 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 and Body::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, and HttpClient from the prelude 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 an INFO 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

    • Update Public Suffix List to f9f612a (#266)
    • Update flume requirement from 0.9 to 0.10 (#271)
    Open source →
  23. 1.0.0-beta.1 09 Dec 2020 pre-release
    Release notes

    Breaking Changes

    • The Body type has now been broken up into distinct AsyncBody and Body types, with the former implementing only AsyncRead and the latter implementing only Read. 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 synchronous Read sources such as a File 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 and ReadResponseExt. 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 separate ErrorKind 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 and Body::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)

    Dependency Updates

    • Update Public Suffix List to f9f612a (#266) @sagebind
    Open source →
  24. 0.9.14 09 Dec 2020
    Release notes

    Fixed

    • Fix body length incorrectly returning the length of the compressed body when the server combines compression and Content-Length with auto decompression enabled. (#265, #267)
    Open source →
  25. 0.9.13 14 Nov 2020
    Release notes

    Added

    • Add Configurable::ip_version which allows you to restrict resolving hostnames to a specific IP version. (#252, #253) @ArenM

    Fixed

    • Fix redirect handling with redirect responses that include non-empty bodies, another regression introduced in 0.9.11. (#250, #255) @sagebind

    Changed

    • Trim some heavy dependencies. (#254) @sagebind
    Open source →
  26. 0.9.12 11 Nov 2020
    Release notes

    Fixed

    • Fix a regression introduced in 0.9.11 resulting in client-wide redirect policies not being respected. (#250, #251) @sagebind

    Changed

    • Improve documentation on timeouts. (#249) @sagebind

    Dependency Updates

    • Update Public Suffix List to 6400969 (#248) @sagebind
    Open source →
  27. 0.9.11 03 Nov 2020
    Release notes

    A surprisingly feature-focused patch release with a couple notable bugfixes. This October Isahc opted-in to Hacktoberfest, and we received a couple additions from new contributors. Thanks!

    Added

    • Add HttpClientBuilder::connection_cache_ttl for configuring how long to keep connections open in the cache. (#93, #237) @gsquire
    • Make cookie jar API more useful by adding several new methods, including HttpClient::cookie_jar, Configurable::cookie_jar, CookieJar::get_by_name, Cookie::value, and more! An example of how to use some of these have been added to examples/cookies.rs. (#215, #233) @sagebind
    • Add a "Why not use" section to readme. (#234) @sagebind

    Fixed

    • Fix timeouts and other mid-transfer errors causing unexplained EOFs instead of returning a proper io::Error. (#154, #246) @sagebind
    • Fix improper cookie behavior when automatically following redirects, such as not sending any cookies in subsequent requests. (#232, #240) @sagebind

    Changed

    • Make HttpClient cloneable. This makes it much more convenient to share a client instance between threads or tasks. (#241, #244) @braunse
    • Replace middleware API with interceptors API. The middleware-preview crate feature has been removed and the unstable-interceptors feature has been added. The API is still unstable, but addresses a number of problems with the old proposed middleware API. (#42, #206) @sagebind
    • Update integration tests to use new testserver (#230) @sagebind

    Dependency Updates

    • Update env_logger requirement from 0.7 to 0.8 (#238) @dependabot
    • Update crossbeam-channel requirement from 0.4 to 0.5 (#236) @dependabot
    • Update crossbeam-utils requirement from 0.7 to 0.8 (#235) @dependabot
    • Update Public Suffix List to 40d5bd4 (#231) @sagebind
    • Create Dependabot config file (#229) @dependabot-preview
    Open source →
  28. 0.9.10 01 Oct 2020
    Release notes

    Added

    • Add automatic_decompression option to allow you to disable the automatic response body decompression or enable it on a per-request basis. (#227, #228)
    Open source →
  29. 0.9.9 23 Sep 2020
    Release notes

    Added

    • Add static-ssl feature to mirror curl/static-ssl (#225) @SecurityInsanity

    Dependency Updates

    • Update Public Suffix List to 5b2327d (#224) @sagebind
    Open source →
  30. 0.9.8 08 Aug 2020
    Release notes

    Added

    • Add title_case_headers option (#205, #218) @sagebind
    • Add local_addr and remote_addr getters (#220, #221) @sagebind

    Dependency Updates

    • Update Public Suffix List to 54eae6e (#222) @sagebind
    Open source →
  31. 0.9.7 29 Jul 2020
    Release notes

    Added

    • Add new config::Dialer API that allows you to customize and override what sockets are connected to for a request, regardless of the host in the URL. Static IP sockets and Unix sockets are initially supported. (#150, #207) @sagebind

    Fixed

    • Fix HEAD requests with a body and libcurl 7.71+ not playing well together because of incorrect usage of CURLOPT_NOBODY in Isahc. (#213, #214, #216) @sagebind

    Dependency Updates

    • Update mockito requirement from 0.26 to 0.27 (#217) @dependabot-preview
    Open source →
  32. 0.9.6 21 Jul 2020
    Release notes

    Fixed

    • Fix empty and blank request header values not being sent. (#209, #210)

    Dependency Updates

    • Update Public Suffix List to 011f110 (#204)
    • Update mockito requirement from 0.25 to 0.26 (#203) @dependabot-preview
    • Update parking_lot requirement from 0.10 to 0.11 (#201) @dependabot-preview
    Open source →
  33. 0.9.5 24 Jun 2020
    Release notes

    Fixed

    • Upgrade curl to 0.4.30 to mitigate potential init-on-non-main-thread with certain TLS engines on certain platforms. (#189) @sagebind

    Added

    • Allow for experimental HTTP/3 support in libcurl. (This does not enable HTTP/3 support, it just merely allows it if libcurl is compiled with it.) (#185) @sagebind

    Dependency Updates

    • Update indicatif requirement from 0.14 to 0.15 (#200) @dependabot-preview
    Open source →
  34. 0.9.4 11 Jun 2020
    Release notes

    Fixed

    • Invalid read: Multi::close called twice (#198) @DBLouis
    • Change all tracing spans to Trace level to reduce log noise (#195) @sagebind

    Changed

    • Update analysis CI job (#197) @sagebind
    • Expand first readme example to full program (#194) @sagebind

    Dependency Updates

    • Update Public Suffix List to fe4225d (#196) @sagebind
    Open source →
  35. 0.9.3 24 May 2020
    Release notes

    Fixed

    • Fix built-in user agent overriding client default headers. (#191) @sagebind
    • Fix incorrectly named function parameter. (#188) @DBLouis

    Changed

    • Emit all logs as tracing events, maintaining backward compatability with log records. This has the benefit of optionally providing better diagnostics of HTTP requests when using a tracing subscriber. (#170) @sagebind
    Open source →
  36. 0.9.2 10 May 2020
    Release notes

    Added

    • Add the ability to set default outgoing header values to include on all requests when building a custom client. Headers set on a request always take precedence over defaults. (#180, #181, #186) @ansrivas

    Fixed

    • Fix code test coverage analysis no longer working. (#183, #187) @sagebind

    Dependency Updates

    • Update Public Suffix List to c1d5b3c (#184) @sagebind
    • Update Public Suffix List to 17ca522 (#177) @sagebind
    • Update mockito requirement from 0.23 to 0.25 (#178) @dependabot-preview
    Open source →
  37. 0.9.1 11 Mar 2020
    Release notes

    Changed

    • Implement Send for the opaque Future type returned by ResponseExt::text_async whenever the response body also implements Send. (#173, #175)

    Dependency Updates

    • Update Public Suffix List to 9afbb37 (#174)
    Open source →
  38. 0.9.0 05 Mar 2020
    Release notes

    Welcome to a new decade!

    This release includes a number of API improvements and features, as well as a couple bug fixes. The API changes improve ease of use and ergonomics, incorporating the new 0.2 version of the http crate, as well as reduces the number of confusing types to help make finding what you are looking for easier in the documentation.

    Breaking Changes

    • Request configuration is now done via the Configurable trait, which unifies the old methods from HttpClientBuilder and RequestBuilderExt into one place. The old methods have been removed, but most programs should compile without changes if the prelude is imported. (#48, #135)
    • Multiple breaking API improvements to Body (#143):
      • Body::reader and Body::reader_sized have been renamed to Body::from_reader and Body::from_reader_sized, respectively.
      • Body::bytes has been replaced with Body::from_maybe_shared, which uses type downcasting to accept a Bytes if given without having the bytes crate being part of the public API.
      • Body no longer implements From<Bytes> for the reason above.
      • Body::text, Body::text_async, and Body::json have all been removed in favor of the equivalent methods provided by ResponseExt. This was done because the body alone is often not enough information to decode responses in a correct manner. (#142)
    • Various improvements to request config bounds that accept more argument types.
    • The cookies feature is no longer enabled by default. (#141)
    • Creating a Body from an AsyncRead must now be Sync so that Body implements Sync. (#172)
    • Response text decoding methods are now behind the text-decoding feature, enabled by default. (#156)

    Added

    • Handle more than just UTF-8 when decoding a response into text. (#90, #156)
    • Add ability to bind to specific network interface. (#151, #155)
    • Add ability to pre-populate DNS lookups with predefined mappings. (#114)
    • Add Isahc logo to documentation. (#138) @jmjoy

    Fixed

    • Body::is_empty should not return true for a zero-length body that is present (as opposed to no body). (#144)
    • Upgrade curl-sys to fix static linking issues with older versions of macOS (#68, #169)
    • Fix doctests and run cargo fmt (#160) @ggriffiniii

    Changed

    • Improve proxy handling test coverage (#167)
    • Make default VersionNegotiation more conservative (#159, #164)
    • Set up code coverage analysis via grcov (#165)

    Dependency Updates

    • Upgrade http from 0.1 to 0.2 (#135)
    • Update Public Suffix List to 11f4542 (#166)
    • Update indicatif requirement from 0.13 to 0.14 (#162) @dependabot-preview
    • Update mockito requirement from 0.22 to 0.23 (#163) @dependabot-preview
    • Update Public Suffix List to d73f42f (#149)
    • Update bytes requirement from 0.4 to 0.5 (#132) @dependabot-preview
    • Update Public Suffix List to a406942 (#137)
    Open source →
  39. 0.8.2 06 Dec 2019
    Release notes

    Changed

    • Don't ask for default features in futures-util because we do not use them. (#134) @jakobhellermann
    • Update parking_lot requirement from 0.9 to 0.10 (#133) @dependabot-preview
    Open source →
  40. 0.8.1 26 Nov 2019
    Release notes

    Fixed

    • Only request upgrade to HTTP/2 if it is actually available. (#131) @sagebind
    Open source →
  41. 0.8.0 23 Nov 2019
    Release notes

    This release includes an upgrade to the much awaited futures 0.3, as well as some great new features and a few small breaking improvements to the API.

    Breaking Changes

    • Upgrade from futures-preview to futures 0.3. Largely the same as futures-preview, but a breaking change due to the crate switch. (#116) @sagebind
    • The preferred_http_version() method has been removed in favor of a new VersionNegotiation API with more robust configuration, including support for HTTP/2 Prior Knowledge. Generally this will be a mechanical migration from preferred_http_version() to version_negotiation(). If you were previously passing in Version::HTTP_2 in order to enable HTTP/2 on insecure requests, you can now remove this as Isahc will include an Upgrade header and switch to HTTP/2 automatically by default. (#129) @sagebind
    • A couple various boolean SSL options have been replaced with an ssl_options() method that permits you to set multiple flags with greater granularity and control. (#128) @sagebind

    Added

    • Added options for setting a CA certificate, disabling certificate revocation checks, and disabling proxies globally or for specific hosts. (#124) @ohadravid
    • Document json feature in examples. (#121) @gbip
    • Add a new API for HTTP auth. This includes a new crate feature spnego which allows you to configure HTTP Negotiate. Basic and digest auth are also supported. (#115) @sagebind

    Changed

    • Update mockito requirement from 0.21 to 0.22 (#123) @dependabot-preview
    • Update crossbeam-utils requirement from 0.6 to 0.7 (#117) @dependabot-preview
    • Update indicatif requirement from 0.12 to 0.13 (#119) @dependabot-preview
    • Update crossbeam-channel requirement from 0.3 to 0.4 (#120) @dependabot-preview
    Open source →
  42. 0.7.6 08 Nov 2019
    Release notes

    Added

    • Add a new metrics API for inspecting various request timing information. (#47, #88) @sagebind

    Changed

    • Update Public Suffix List to b566870 (#112) @sagebind
    Open source →
  43. 0.7.5 04 Nov 2019
    Release notes

    This release adds several new options for configuring connection behavior on an HttpClient, as well as a couple important bug fixes.

    Added

    • Add options for configuring the connection cache (#95)
    • Add option to configure DNS caching per client (#96)
    • Add connection limit options for clients (#92)

    Fixed

    • Fix agent shutdown caused by unpause errors (#97, #101)
    • Keep all instances of the same response header (#100, #107) @alexcormier
    • Fix auto referer not setting referer header (#91)

    Changed

    • Add better error messaging and logging around agent disconnect (#99)
    • Update mockito requirement from 0.20 to 0.21 (#85)
    Open source →
  44. 0.7.4 25 Sep 2019
    Release notes

    Fixed

    • Fix parsing headers with a colon in their value. Previously headers like Location: https://example.org were being truncated to Location: https. (#82) @puckipedia

    Changed

    • Update env_logger requirement from 0.6 to 0.7. (#80)
    Open source →
  45. 0.7.3 06 Sep 2019
    Release notes

    Added

    • Add ResponseExt::effective_uri for retrieving the last visited URI during a single request-response cycle. (#74)

    Fixed

    • Fix panic due to broken implementation in cookie jar middleware. (#70)
    Open source →
  46. 0.7.2 05 Sep 2019
    Release notes

    Added

    • Add the ability to ignore SSL validation. (#71) @jlricon

    Fixed

    • Pull in read-after-EOF bugfix in Sluice. (#72, #73)

    Changed

    • Update criterion requirement from 0.2 to 0.3 (#67) @dependabot-preview
    Open source →
  47. 0.7.1 23 Aug 2019
    Release notes

    Changed

    • Upgrade futures-preview dependencies to the latest and greatest of 0.3.0-alpha.18.
    • HttpClient::new() will now block fully until the client is actually initialized. Previously it would block on some things being initialized, and then return once the agent thread has started. This proved to be a bit too unusual, and had a tendency to cause extra delays for the first few requests being sent. This new behavior should feel much more predictable.

    Fixed

    • Benchmarking sub-crate once again compiles and runs.
    Open source →
  48. 0.7.0 20 Aug 2019
    Release notes

    Breaking Changes

    • HttpClient::new() now returns a Result<HttpClient, Error> since creating a client is fallible. Previously this method would panic if instantiation failed, which was not a very API.
    • The Default implementation for HttpClient has been removed, since instantiating it is fallible.

    Fixed

    • Dropping an HttpClient previously would cause any active transfers created by the client to return EOF after emptying the response body buffer. Now the curl multi handle will be kept alive until all transfers are completed or cancelled. In addition, reading from the response body will return a ConnectionAborted error if for some reason the transfer was stopped without finishing. (#65)

    Changed

    • Use the latest GitHub Actions beta features for CI. (#56)
    Open source →
  49. 0.6.0 03 Aug 2019
    Release notes

    Changed

    • The project has been renamed from cHTTP to Isahc! This also includes an adorable new project mascot... (#36, #54)
    • The length property for Body has changed from an usize to an u64. usize is too small to fit large file sizes on machines that have less than 64 bit pointer size. (#52)
    • The Error::Internal variant has been removed, as a panic is more suitable for the one situation that previously returned this error.
    • The Error::TooManyConnections variant has been removed, as it is an artifact from old cHTTP versions. Isahc has no artificial limit on the number of connections that can be used simultaneously outside of system limits.
    Open source →

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive