|
| 1 | +# Changelog |
| 2 | + |
| 3 | +All notable changes to ServIO are documented in this file. |
| 4 | + |
| 5 | +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), |
| 6 | +and the project tries to follow [Semantic Versioning](https://semver.org/). |
| 7 | + |
| 8 | +## [Unreleased] — v2 branch |
| 9 | + |
| 10 | +### Added |
| 11 | +- `StreamSearch` — a streamsearch-inspired needle scanner used to find |
| 12 | + multipart boundaries across `recv()` chunks without per-byte stream reads. |
| 13 | +- `sendfile(2)` path for static file responses (Darwin + Linux, with a |
| 14 | + `pread + send` fallback for other platforms). Range responses pass the |
| 15 | + kernel an offset directly. |
| 16 | +- OSS scaffolding: `LICENSE` (MIT), `CONTRIBUTING.md`, `CODE_OF_CONDUCT.md`, |
| 17 | + `SECURITY.md`, `CHANGELOG.md`, `.editorconfig`, `.clang-format`, |
| 18 | + GitHub issue and pull request templates, CI workflow. |
| 19 | +- `docs/architecture.md` and `docs/grammar.md` (moved from `conf/`). |
| 20 | +- `examples/servio.conf` (sample configuration). |
| 21 | + |
| 22 | +### Changed |
| 23 | +- Request parser is now `(const char*, size_t)`-driven instead of being fed |
| 24 | + from a `queue<stringstream*>`. The first-line and header parsers are a |
| 25 | + small byte-oriented state machine with length-bounded URI and header |
| 26 | + lines and CRLF/LF tolerance. |
| 27 | +- Body parsers (lengthed / chunked / multipart) share a single |
| 28 | + bytes-consumed contract. Multipart writes part data straight from the |
| 29 | + recv buffer to per-part tmp files. |
| 30 | +- `recv()` buffer bumped from 1 KiB to 16 KiB. |
| 31 | +- Source files dropped the redundant `sio_` prefix (the directory already |
| 32 | + namespaces them); a handful were renamed for clarity |
| 33 | + (`http_codes` → `status_codes`, `request_body` → `body`, |
| 34 | + `cmdline_opts` → `options`, `utils` → `time_utils`, |
| 35 | + `servio.cpp` → `server.cpp`). |
| 36 | +- Build artifacts now land in `build/` instead of polluting `src/`. |
| 37 | + |
| 38 | +### Fixed |
| 39 | +- Replaced the deprecated `sprintf` in `Content-Range` formatting with |
| 40 | + `snprintf`, restoring the `-Werror` build on recent toolchains. |
| 41 | +- Self-referential `Body`/`Request` state no longer dangles when these |
| 42 | + objects are copied through `ClientMap` (`Body` is now its own |
| 43 | + `StreamSearch::Sink`). |
| 44 | + |
| 45 | +## [1.0.0] — initial release |
| 46 | + |
| 47 | +- HTTP/1.1 server inspired by NGINX configuration syntax. |
| 48 | +- Static file serving, CGI, file uploads, redirects, virtual hosts, range |
| 49 | + requests, directory listings, custom error pages. |
| 50 | +- `poll(2)`-driven non-blocking I/O. |
0 commit comments