Skip to content

Commit 6c48ef3

Browse files
committed
chose: use keep a changelog format
1 parent 322b9e7 commit 6c48ef3

1 file changed

Lines changed: 38 additions & 11 deletions

File tree

CHANGELOG.md

Lines changed: 38 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,43 @@
11
# Changelog
22

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)
46

57
Initial release.
68

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

Comments
 (0)