Skip to content

Releases: bricke/bacaro

v0.2.0 — Saòr

30 Apr 01:33
0d9e838

Choose a tag to compare

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_SUB socket 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_subscribe call — pure publishers create zero DEALER sockets, reducing boot-time connection overhead

Features

  • LWW cache convergence: Cache::set discards 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_new accepts 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

19 Mar 01:03
b951854

Choose a tag to compare

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 timestamps
  • vecio — 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 build

See the documentation for the full API reference, concepts, and examples.