# 0.10.1

## Improvements

### URL-encoded nested params

url encoder now supports nested params, which is a standard of rack-based frameworks:

```ruby
HTTPX.post("https://httpbin.org/post", form: { a: { b: 1 }, c: [2, 3] })
# a[b]=1&c[]=2&c[]=3
```

This encoding scheme is now the standard for URL-encoded request bodies, query params, and `:multipart` plugin requests.

### Socks4 IPv6 addresses

HTTPX supports IPv6 Socks4 proxies now. This support is restricted to rubies where `IPAddr#hton` is implemented though, so you are encouraged to upgrade.

## More verbose HTTP Errors

`HTTPX::Response#raise_for_status` was raising exceptions for client/server HTTP errors codes (4xx/5xx). However, only the status code was part of the message.

From now on, both headers and the responnse payload will also appear, so expected more verbosity, but also more meaningful information.

## Bugfixes

* HTTP/2 and HTTP/1.1 exhausted connections now get properly migrated into a new connection;
* HTTP/2 421 responses will now correctly migrate the connection and pending requests to HTTP/1.1 (a hanging loop was being caused);
* HTTP/2 connection failed with a GOAWAY settings timeout will now return error responses (instead of hanging indefinitely);
* Non-IP proxy name-resolving errors will now move on to the next available proxy in the list (instead of hanging indefinitely);
* Non-IP DNS resolve errors for `native` and `https` variants will now return the appropriate error response (instead of hanging indefinitely);

## Chore

* `HTTPX.plugins` is now officially deprecated (use `HTTPX.plugin` instead);

