Releases: bricke/bacaro
Releases · bricke/bacaro
v0.2.0 — Saòr
Saòr — a typical Venetian sweet-and-sour marinade made with a mix of onions, pine nuts and raisins.
What's new
Performance
- Shared SUB socket: live updates now use a single
ZMQ_SUBsocket per process regardless of peer count — fd usage drops from O(N) to O(1) for subscriptions - Lazy DEALER creation: per-peer DEALER sockets are deferred until the first
bacaro_subscribecall — pure publishers create zero DEALER sockets, reducing boot-time connection overhead
Features
- LWW cache convergence:
Cache::setdiscards stale updates using timestamp ordering; equal timestamps are broken deterministically by publisher name, ensuring all nodes converge to the same value regardless of message arrival order - Per-process manifest:
bacaro_newaccepts an optional NULL-terminated array of published domains — peers read the manifest at discovery time and skip snapshot requests for non-overlapping domains
API change
bacaro_new gains a second argument:
bacaro_t *bacaro_new(const char *name, const char **published_domains);Pass NULL for published_domains to preserve existing behaviour.
Internal
- Wire format bumped to v2: publisher identity now carried as an explicit frame
- Discovery and dispatch refactoring for clarity and consistency
v0.1.0 — Ombra
Ombra — a small glass of wine commonly served in bacaros.
What is Bacaro?
A reliable, brokerless message bus for single-machine use. Processes publish named properties and subscribe to the domains they care about. Each process maintains a local cache — no central broker, no single point of failure.
Inspired by D-Bus, built on ZeroMQ.
What's included
- Core library with C-compatible API (
bacaro.h) - Automatic peer discovery via inotify, snapshot protocol for late-joining subscribers
oste— monitoring tool that prints all property updates with timestampsvecio— CLI tool to set a property from the command line- 7 test suites, all passing
Requirements
- Linux (epoll + inotify)
- libzmq 4.x (
apt-get install libzmq3-dev) - C++17 compiler (GCC or Clang)
Quick start
sudo apt-get install -y pkg-config libzmq3-dev
cmake -B build -DCMAKE_BUILD_TYPE=Release
cmake --build build
cmake --install buildSee the documentation for the full API reference, concepts, and examples.