Skip to content

Tags: jilio/ebu

Tags

v0.17.0

Toggle v0.17.0's commit message
chore(release): v0.17.0

stores/sqlite/v0.17.0

Toggle stores/sqlite/v0.17.0's commit message
chore(release): record ebu v0.17.0 sums in sub-modules

stores/durablestream/v0.17.0

Toggle stores/durablestream/v0.17.0's commit message
chore(release): record ebu v0.17.0 sums in sub-modules

otel/v0.17.0

Toggle otel/v0.17.0's commit message
chore(release): record ebu v0.17.0 sums in sub-modules

v0.16.0

Toggle v0.16.0's commit message
chore(release): v0.16.0

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

v0.15.0

Toggle v0.15.0's commit message
fix: address library review — silent replay truncation, store contrac…

…ts, state hardening

Core:
- Replay treats an empty batch with an advancing offset as a gap to skip,
  not the tail; only a non-advancing offset ends the stream
- SubscribeWithReplay's replay passes take the Sequential() handler mutex,
  so live delivery can no longer overlap a replayed delivery
- Duplicate upcaster registration for the same source type is rejected
  instead of silently never running
- OffsetNewest resolves to the concrete current tail in MemoryStore
  (previously "$" sorted before all offsets and replayed from the start)

sqlite:
- streamBatch checks rows.Err(), so mid-iteration failures (incl. context
  cancellation) surface instead of ending a replay cleanly and early
- OffsetNewest resolves to MAX(position); per-row cancellation checks;
  prepared statement reused across batches

durablestream:
- Default HTTP client carries the configured timeout (WithTimeout was
  dead code in the pinned client; a hung remote wedged all publishers)
- Read advances past chunks with no decodable events, bounded by the
  server's UpToDate signal
- Cached stream writer detached from its creator's context; backoff capped;
  at-least-once append semantics documented (Seq-based dedup is unsafe
  with stream-global sequence tokens)

state (breaking):
- Store methods return errors; the materializer never advances LastOffset
  past a failed store write
- Apply routes by StoredEvent.Type; foreign events with a "headers" field
  no longer wedge replay or misfire as control messages
- Collections sharing one Store are scoped to their entityType/ prefix
- WithApplyErrorPolicy(ApplySkip) + ErrUndecodable for poison messages;
  strict mode reports unknown control values
- Pointer entity types with a TypeNamer no longer panic
- SaveSnapshotTo runs snapshot I/O outside the apply lock; concurrent
  savers serialized

otel:
- Explicit sub-millisecond duration buckets; spans carried via private
  context keys; error attribute on duration records; no SetStatus(Ok)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

v0.14.0

Toggle v0.14.0's commit message
fix: reject dead interface registrations, harden SubscribeWithReplay,…

… add ReplayErrorPolicy

Reviewed the bus end to end; this release closes the sharp edges found:

- Subscribe/SubscribeContext/SubscribeWithReplay/RegisterUpcast reject
  interface types that could never fire (publish routes by concrete type).
- SubscribeWithReplay runs ALL validation (nil bus/handler/options, filter
  shape) before the replay pass; a failing call delivers nothing and saves
  no offsets. Options are applied exactly once via a shared
  buildHandler/addHandler chokepoint.
- WithFilter now applies to replayed events exactly like live delivery.
- New WithReplayErrorPolicy(ReplaySkip): durable, reported skip of poison
  events so one undecodable event cannot wedge a subscription or spam the
  error handler on every restart.
- Documented the WithAsyncHandlerLimit re-entrant publish deadlock.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

v0.13.0

Toggle v0.13.0's commit message
chore(release): release review fixes as v0.13.0

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

v0.12.0

Toggle v0.12.0's commit message
chore(release): release fixes as v0.12.0

The Gitea remote already carries a v0.11.0 tag (cut locally before these
fixes, never pushed to GitHub), so the fix release becomes v0.12.0 to keep
published tags immutable. Sub-module requires bumped accordingly.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

stores/sqlite/v0.16.0

Toggle stores/sqlite/v0.16.0's commit message
chore(release): record ebu v0.16.0 sums in sub-modules

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>