httpx 1.3.0 has been released.
```
```
HTTPX is an HTTP client library for the Ruby programming language.
Among its features, it supports:
* HTTP/2 and HTTP/1.x protocol versions
* Concurrent requests by default
* Simple and chainable API
* Proxy Support (HTTP(S), CONNECT tunnel, Socks4/4a/5)
* Simple Timeout System
* Lightweight by default (require what you need)
And also:
* Compression (gzip, deflate, brotli)
* Streaming Requests
* Authentication (Basic Auth, Digest Auth, AWS Sigv4)
* Expect 100-continue
* Multipart Requests
* Cookies
* HTTP/2 Server Push
* H2C Upgrade
* Automatic follow redirects
* International Domain Names
* GRPC
* Circuit breaker
* WebDAV
* SSRF Filter
* Datadog integration
* Faraday integration
* Webmock integration
* Sentry integration
Here are the updates since the last release:
# 1.3.0
## Dependencies
`http-2` v1.0.0 is replacing `http-2-next` as the HTTP/2 parser.
`http-2-next` was forked from `http-2` 5 years ago; its improvements have been merged back to `http-2` recently though, so `http-2-next` willl therefore no longer be maintained.
## Improvements
Request-specific options (`:params`, `:form`, `:json` and `:xml`) are now separately kept by the request, which allows them to share `HTTPX::Options`, and reduce the number of copying / allocations.
This means that `HTTPX::Options` will throw an error if you initialize an object which such keys; this should not happen, as this class is considered internal and you should not be using it directly.
## Fixes
* support for the `datadog` gem v2.0.0 in its adapter has been unblocked, now that the gem has been released.
* loading the `:cookies` plugin was making the `Session#build_request` private.
# 1.2.6
## Improvements
* `native` resolver: when timing out on DNS query for an alias, retry the DNS query for the alias (instead of the original hostname).
## Bugfixes
* `faraday` adapter: set `env` options on the request object, so they are available in the request object when yielded.
* `follow_redirects` plugin: remove body-related headers (`content-length`, `content-type`) on POST-to-GET redirects.
* `follow_redirects` plugin: maintain verb (and body) of original request when the response status code is 307.
* `native` resolver: when timing out on TCP-based name resolution, downgrade to UDP before retrying.
* `rate_limiter` plugin: do not try fetching the retry-after of error responses.
# 1.2.5
## Bugfixes
* fix for usage of correct `last-modified` header in `response_cache` plugin.
* fix usage of decoding helper methods (i.e. `response.json`) with `response_cache` plugin.
* `stream` plugin: reverted back to yielding buffered payloads for streamed responses (broke `down` integration)
# 1.2.4
## Bugfixes
* fixed issue related to inability to buffer payload to error responses (which may happen on certain error handling situations).
* fixed recovery from a lost persistent connection leaving process due to ping being sent while still marked as inactive.
* fixed datadog integration, which was not generating new spans on retried requests (when `:retries` plugin is enabled).
* fixed splitting strings into key value pairs in cases where the value would contain a "=", such as in certain base64 payloads.
# 1.2.3
## Improvements
* `:retries` plugin: allow `:max_retries` set to 0 (allows for a soft disable of retries when using the faraday adapter).
## Bugfixes
* `:oauth` plugin: fix for default auth method being ignored when setting grant type and scope as options only.
* ensure happy eyeballs-initiated cloned connections also set session callbacks (caused issues when server would respond with a 421 response, an event requiring a valid internal callback).
* native resolver cleanly transitions from tcp to udp after truncated DNS query (causing issues on follow-up CNAME resolution).
* elapsing timeouts now guard against mutation of callbacks while looping (prevents skipping callbacks in situations where a previous one would remove itself from the collection).
## Chore
* datadog adapter: do not call `.lazy` on options (avoids deprecation warning, to be removed in ddtrace 2.0)
# 1.2.2
## Bugfixes
* only raise "unknown option" error when option is not supported, not anymore when error happens in the setup of a support option.
* usage of `HTTPX::Session#wrap` within a thread with other sessions using the `:persistent` plugin won't inadvertedly terminate its open connections.
* terminate connections on `IOError` (`SocketError` does not cover them).
* terminate connections on HTTP/2 protocol and handshake errors, which happen during establishment or termination of a HTTP/2 connection (they were being previously kept around, although they'd irrecoverable).
* `:oauth` plugin: fixing check preventing the OAuth metadata server integration path to be exercised.
* fix instantiation of the options headers object with the wrong headers class.
# 1.2.1
## Bugfixes
* DoH resolver: try resolving other candidates on "domain not found" error (same behaviour as with native resolver).
* Allow HTTP/2 connections to exit cleanly when TLS session gets corrupted and termination handshake can't be performed.