|
1 | 1 | # Changelog |
2 | 2 |
|
3 | | -## 0.1.0 |
| 3 | +All notable changes to this project will be documented in this file. |
| 4 | + |
| 5 | +## 0.1.0 (2025-03-18) |
4 | 6 |
|
5 | 7 | Initial release. |
6 | 8 |
|
7 | | -- HTTP/1.1 and HTTP/2 client support |
8 | | -- Unified API across both protocols via `gen_http` module |
9 | | -- ALPN protocol negotiation for HTTPS |
10 | | -- Active and passive socket modes |
11 | | -- Request pipelining (HTTP/1.1) and stream multiplexing (HTTP/2) |
12 | | -- HPACK header compression with Huffman coding |
13 | | -- Flow control (HTTP/2) |
14 | | -- Structured error types with retry classification |
15 | | -- Connection metadata via private key-value store |
16 | | -- TLS certificate verification enabled by default |
| 9 | +### Added |
| 10 | + |
| 11 | +- **Unified API** - `gen_http` module works with both HTTP/1.1 and HTTP/2 |
| 12 | + connections through a single interface. Protocol selection is automatic |
| 13 | + via ALPN for HTTPS, HTTP/1.1 for plain HTTP. |
| 14 | + |
| 15 | +- **HTTP/1.1 state machine** (`gen_http_h1`) - Request pipelining, keep-alive, |
| 16 | + chunked transfer encoding, body streaming for requests and responses. |
| 17 | + |
| 18 | +- **HTTP/2 state machine** (`gen_http_h2`) - Stream multiplexing, connection |
| 19 | + and stream level flow control, settings negotiation, GOAWAY handling, |
| 20 | + server push support. RFC 9113 compliant. |
| 21 | + |
| 22 | +- **HPACK header compression** (`gen_http_parser_hpack`) - Static and dynamic |
| 23 | + tables with Huffman coding. Pure data structure, no process state. |
| 24 | + RFC 7541 compliant. |
| 25 | + |
| 26 | +- **Active and passive socket modes** - Active mode delivers data as Erlang |
| 27 | + messages via `stream/2`. Passive mode uses blocking `recv/3`. Switch |
| 28 | + between them at any time with `set_mode/2`. |
| 29 | + |
| 30 | +- **Structured error types** - Errors are tagged as `{transport_error, _}`, |
| 31 | + `{protocol_error, _}`, or `{application_error, _}`. Use |
| 32 | + `is_retriable_error/1` to decide whether to retry. |
| 33 | + |
| 34 | +- **Connection metadata** - `put_private/3`, `get_private/2,3`, |
| 35 | + `delete_private/2` for attaching pool IDs, metrics, or tags to |
| 36 | + connections. |
| 37 | + |
| 38 | +- **Transport abstraction** - `gen_http_transport` behaviour with TCP |
| 39 | + (`gen_http_tcp`) and SSL/TLS (`gen_http_ssl`) implementations. |
| 40 | + TLS certificate verification enabled by default. |
| 41 | + |
| 42 | +- **Zero dependencies** - Only OTP stdlib (kernel, stdlib, crypto, |
| 43 | + public_key, ssl). Targets OTP 25+. |
0 commit comments