Skip to content

Commit 88b2b55

Browse files
committed
release: version 3.2.0
Major changes: - Replace all cowlib modules with hackney-native implementations - HTTP/2 state machine optimizations (stream caching, gb_sets) - HPACK/QPACK O(1) static table lookups - h2spec compliance testing (95% pass rate) - HTTP/3 E2E tests - Fix async 204/304/HEAD responses - Fix HTTP/2 flow control for body sending
1 parent 5fbe45b commit 88b2b55

3 files changed

Lines changed: 44 additions & 3 deletions

File tree

NEWS.md

Lines changed: 39 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,49 @@
11
# NEWS
22

3+
3.2.0 - 2026-02-21
4+
------------------
5+
6+
### Refactor
7+
8+
- Replace all cowlib modules with hackney-native implementations
9+
- `hackney_cow_http2_machine``hackney_http2_machine` (with optimizations)
10+
- `hackney_cow_http2``hackney_http2`
11+
- `hackney_cow_deflate``hackney_deflate`
12+
- `hackney_cow_ws``hackney_ws_proto`
13+
- Remove `hackney_cow_hpack` (already replaced by `hackney_hpack`)
14+
15+
### Performance
16+
17+
- HTTP/2 state machine optimizations:
18+
- Stream caching for recently accessed streams
19+
- gb_sets for lingering streams (O(log N) vs O(N) lookups)
20+
- IOList accumulation for header fragments
21+
- HPACK and QPACK header compression with O(1) static table lookups
22+
23+
### Added
24+
25+
- h2spec HTTP/2 compliance testing (95% pass rate - 139/146 tests)
26+
- `h2spec_server.erl`: Minimal HTTP/2 server for compliance testing
27+
- `h2spec_SUITE.erl`: CT suite for running h2spec tests
28+
- Makefile target: `make h2spec-test`
29+
- HTTP/3 E2E tests against real servers
30+
- `hackney_http3_e2e_SUITE.erl`: Tests against Cloudflare, Google, quic.tech
31+
- Makefile targets: `make http3-e2e-test`, `make all-e2e-test`
32+
- HTTP/2 machine benchmarks (`hackney_http2_machine_bench.erl`)
33+
34+
### Bug Fixes
35+
36+
- Fix HTTP/2 flow control for body sending (use `send_or_queue_data/4`)
37+
- Fix async 204/304/HEAD responses not sending `done` message
38+
- Fix unknown HTTP/2 frame types not being ignored (RFC 7540 4.1)
39+
- Fix HTTP/2 frame size validation
40+
341
3.1.2 - 2026-02-21
442
------------------
543

644
### Dependencies
745

8-
- Bump `quic` dependency to 0.10.1
46+
- Bump `quic` dependency to 0.10.2
947

1048
3.1.1 - 2026-02-20
1149
------------------

TODO.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# TODO
22

3-
3.0.0
3+
3.2.0
44
------
55

66
All major features from 2.0 roadmap are complete:
@@ -9,6 +9,9 @@ All major features from 2.0 roadmap are complete:
99
- [x] Support WebSockets
1010
- [x] Support HTTP/2 (automatic ALPN negotiation)
1111
- [x] Support HTTP/3 (experimental, opt-in)
12+
- [x] Replace cowlib with native implementations
13+
- [x] HTTP/2 compliance testing (h2spec)
14+
- [x] HTTP/2 performance optimizations
1215

1316
Future:
1417
- SOCKS5 and HTTP CONNECT proxy support

src/hackney.app.src

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
{application, hackney,
55
[
66
{description, "Simple HTTP client with HTTP/1.1, HTTP/2, and HTTP/3 support"},
7-
{vsn, "3.1.2"},
7+
{vsn, "3.2.0"},
88
{registered, [hackney_pool]},
99
{applications, [kernel,
1010
stdlib,

0 commit comments

Comments
 (0)