ocaml http/1, http/2 and websocket client and server library
1# Changelog
2
3All notable changes to this project will be documented in this file.
4
5The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
8## [0.3.1] - 2026-01-06
9
10### Fixed
11
12- Reduced opam package size from 87MB to ~200KB by using `git archive` for tarball creation
13
14## [0.2.1] - 2026-01-04
15
16### Fixed
17
18- **Server port binding now fails correctly when port is already in use.** Previously, `reuse_port` defaulted to `true`, which enabled `SO_REUSEPORT` and allowed multiple processes to silently bind to the same port. This caused confusing behavior where a new server would start successfully but only receive a fraction of connections. Now `reuse_port` defaults to `false`, and binding to an already-used port will fail with a clear error.
19
20### Changed
21
22- `Server.default_config.reuse_port` now defaults to `false` instead of `true`.
23- Users who intentionally want multiple processes sharing a port (for load balancing) can enable it explicitly via `{ config with reuse_port = true }`.
24
25## [0.2.0] - 2026-01-03
26
27### Added
28
29- Phoenix-style three-layer plug architecture
30- Pipeline module for reusable plug collections
31- Endpoint module for global plug entry point
32- Scoped authentication with `Plug.Auth` pipeline
33
34### Changed
35
36- Refactored plug system to match Phoenix conventions
37- Improved router with per-route plug support
38
39## [0.1.0] - Initial Release
40
41### Added
42
43- HTTP/1.1 and HTTP/2 client and server
44- WebSocket support (RFC 6455)
45- Server-Sent Events (SSE)
46- Lock-free pub/sub messaging
47- Connection pooling
48- TLS support via tls-eio
49- Static file serving
50- Gzip/zstd compression
51- CORS, CSRF, rate limiting plugs
52- CLI tools: `hc` (client) and `hs` (file server)