2.0.0
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
Configurablewith a newtlsmodule consolidated intotls::TlsConfig. The names of all individual options have been renamed, and include several small breaking changes. (#491)config::CaCertificaterenamed totls::TrustStore, and expanded with new methods for selecting entire providers of CA certificates, beyond just a single PEM bundle.config::ClientCertificatehas been renamed totls::Identitywith additional options for loading certificates and keys from other formats.config::PrivateKeyhas been moved totls::PrivateKey.config::SslOptionhas been removed and merged into regular builder methods fortls::TlsConfig.
- Redesign
NetworkInterfaceinto multiple types in a newnet::interfacemodule, 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
configmodule into thenetmodule. (#518)config::Dialerandconfig::DialerParseErrormoved intonet.config::IpVersionmoved tonet::IpVersion.config::DnCacheandconfig::ResolveMapmoved intonet::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-rootscrate feature, which can be used with any TLS backend. This can be used automatically by default combined with rustls by enabling therustls-tls-webpki-rootscrate 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)