v0.2.1
v0.2.1 — 2026-03-15
Section titled “v0.2.1 — 2026-03-15”Hardening (post-release fixes, still 0.2.1)
Section titled “Hardening (post-release fixes, still 0.2.1)”A review-driven hardening pass landed after the initial 0.2.1 release, without changing the version or the public API surface:
- Memory safety: the IPC layer now treats the shared-memory header as untrusted — magic/version/term-length and shared positions are bounds-checked, eliminating out-of-bounds access from a corrupt segment. The SPSC/MPSC ring buffers and the broadcast buffer were made memory-safe (no use-after-release, proper back-pressure).
- Untrusted-input validation: the UDP/wire parsers (FIX/SBE decoders,
protocol flyweights,
WireCodec) validate untrusted bytes — checked enum values and bounded group counts — so a malformed or malicious datagram cannot cause out-of-bounds reads or panics. - Reliability: de-duplication, a sliding NAK window, and flow-control
credits verified end-to-end; fragmentation/reassembly works end-to-end in
NetworkChannel. - Raft (experimental): in-memory safety restored (only committed entries are applied; term-validated vote/response handling; single-node election) and durable persistence wired in (write-ahead log, persisted vote/term, atomic snapshots, crash recovery on restart). Raft remains experimental: no built-in election timers/transport loop, no log compaction / InstallSnapshot / membership changes, and not yet validated with real multi-process fault injection.
- Language bindings: all five bindings — C, Rust, Python, Go, and TypeScript — now build and pass smoke tests against the real shared library (reporting 0.2.1). Previously the Go binding did not compile, the Rust binding was unsound, and the shared library was not built by default.
- Tests: the full suite (423 tests) passes in both Debug and ReleaseFast builds.
Core Library
Section titled “Core Library”- FFI library is now built by default:
zig buildproduceszig-out/lib/libzigbolt.{dylib/so}andlibzigbolt.awith all 10 C-ABI exports - Version unified to 0.2.1 across
VERSION.toml,build.zig.zon,src/root.zig, the FFI runtime (zigbolt_version_*= 0/2/1), and all language bindings Subscriber(T)type filtering implemented:pollnow delivers only frames matching the subscriber’smsg_type_idand skips short/garbage frames; the handler signature is*align(1) const T- Fragmentation/reassembly wired end-to-end in
NetworkChannel LICENSEfile added (MIT)- Test suite grown to 423 passing tests (was 199)
Bug Fixes (docs site)
Section titled “Bug Fixes (docs site)”- Contrast: Fix low-contrast “ZigBolt” title text in header (Lighthouse accessibility warning)
- LCP: Add
fetchpriority="high"to hero image via custom Hero component override for faster Largest Contentful Paint
Improvements (docs site)
Section titled “Improvements (docs site)”- Override Starlight Hero component to set
fetchpriority="high"on the LCP image - Add CSS rules to ensure site title uses high-contrast colors in both light and dark themes
Affected Files
Section titled “Affected Files”frontend/astro.config.mjs— added Hero component overridefrontend/src/components/Hero.astro— custom Hero with fetchpriorityfrontend/src/styles/custom.css— contrast fix for site title