# Changelog ## v2.2.0 — 2026-08-18 **BREAKING (source):** `sockbus::MAX_NAME` is removed from the public header. **The published specification described the API that v2.0.0 deleted, for five months, under a C++17 label.** A third party following it could not compile one line against the shipped library: the function names did not exist, the handle type did not exist, and the error model was inverted. Traced through git, the sequence is worse than neglect. The spec was written 2026-03-16 and was a correct C11 document. The C++17 rewrite landed 2026-03-17 and did not touch it. On 2026-03-18 a coherence audit changed exactly one line — `**Language:** C11` to `C++17`, one insertion, one deletion. That single edit made the document worse: an out-of-date C spec reads as out of date, while a C spec asserting C++17 reads as the library being C. A relicense in April touched the front matter again. Edited twice since the rewrite, both times in the header, never in the body. `README.md` in the same repository was correct throughout, so two published documents contradicted each other on what language the API is, and the right one was the shorter one. The rewrite covers section 2 through section 10, wider than first scoped. Sections 3, 4, 6 and 10 were the identified rot; section 2 also named three C functions, section 7 documented an errno-and-minus-one error model against a library that throws `std::system_error` from 27 sites, section 8 described C11 `stdatomic` against `std::thread` / `std::atomic` / `std::mutex`, and section 9 required `-std=c11`. Sections 1 and 11 are language-neutral and stand. **`MAX_NAME` is removed rather than enforced.** It had zero references in source or tests while its four neighbours are all live, and being `inline constexpr` in a public header made it contract regardless. Two readings were open: an unenforced limit, or a leftover. The implementation settles it — bus names are `std::string` throughout, no code path measures one, and the transport is `sockaddr_in`, which imposes no bound of its own the way a `sun_path` would. The limit is genuinely gone; it was a survival from the C11 handle's `char name[256]`. Enforcing it would have added a failure mode the rewrite deliberately removed. The version is minor rather than major because nothing referenced it and no behaviour depended on it, but it is a source break for anyone who did. **The specification is now versioned with the library.** It was spec-versioned, and the two drifted apart on day one: spec v2.0.0 is 2026-03-16, library v2.0.0 is 2026-03-17. The convention is stated in the document. **A gate, because this survived a coherence audit, a rename, a relicense and five months.** `make spec-check` runs before the suite and fails on a C code fence or a C11 identifier in the specification. It is one grep, it would have failed on 2026-03-18, and it was mutation-tested against the pre-fix document rather than assumed: 8 fence matches and 30 identifier matches there, zero here. ## v2.1.1 — 2026-08-18 **The test binary loaded a different library depending on where you ran it.** It was linked `-Wl,-rpath,build`, and that rpath is RELATIVE — the loader resolves it against the process's working directory, not the binary's. Run from the project root it found `build/libsockbus.so`; the same binary run from anywhere else found `/usr/local/lib/libsockbus.so`, an installed copy from 2026-06-05. `$ORIGIN` is the binary-relative form. Resolving a library from a caller-controlled path is a hazard in its own right, so the fix removes the runtime search rather than aiming it: the test rule already depended on the static archive, and now links it by name. ## v2.1.0 — 2026-04-03 Open-source release under MIT license. - MIT license (was proprietary) - SPDX-License-Identifier headers in all source files - README, CONTRIBUTING.md, CHANGELOG - 48 tests across full API surface ## v2.0.0 — 2026-03-17 Pure C++17 rewrite. Native `sockbus::Bus` class replaces C11 API. ### Changed - **Language**: C11 → C++17. Single public header `sockbus.hpp`. - **API**: RAII `Bus` class, `std::system_error` exceptions, pimpl. - **Build**: C++17-only Makefile. Static + shared library output. - **Tests**: 48 unit tests (lifecycle, broadcast, data integrity, multi-bus). ### Removed - C11 implementation (`sockbus.h`, `sockbus.c`, `unit_test.c`). ## v1.0.0 — 2026-03-16 Initial standalone release. Renamed from socketbus. Proprietary license.