Skip to content

Releases: ccamel/erlang-event-sourcing-xp

v2.0.0

Choose a tag to compare

@ccamel ccamel released this 09 May 20:15
b210357

2.0.0 (2026-05-09)

⚠ BREAKING CHANGES

  • kernel: change event store behavior to return result tuples
  • kernel: rename domain to aggregate_type (everywhere)
  • kernel: use aggregate_id instead of stream_id
  • kernel: rename command key() to target() for clarity
  • kernel: refine command, event and snapshot keys
  • kernel: route all commands through a singleton aggregate manager
  • kernel: remove manager behaviour (used for routing)
  • kernel: remove lifecycle management from kernel layer
  • kernel: turn the kernel into a plain OTP app

Features

  • contract: add contain/2 to the range ADT (0f3eb9e)
  • contract: add difference/2 to the range ADT (cadf54a)
  • contract: add equal/2 to the range ADT (4a85896)
  • contract: add intersection/2 to the range ADT (31fb6c8)
  • contract: add lt/2 to the range ADT (439d82d)
  • contract: add overlap/2 to the range ADT (5542f1f)
  • contract: add projection checkpoint store behavior (61c3bc7)
  • core: refine store startup and validation (5ed9e55)
  • example: extract interactive bank account example into standalone script (5ea9e33)
  • kernel: add projection event log folding (7bb5ce7)
  • kernel: add projection runtime (9ee6ddd)
  • kernel: handle aggregate process failures in command dispatch (f9c8691)
  • kernel: introduce registry mapping aggregate_type to aggregate_module (0e2acc9)
  • kernel: make snapshot interval configurable (d4b0f57)
  • projection: add managed projection runners (1ccc6ae)
  • store_ets: add global event positions (b397992)
  • store_file: add File store backend (e16058b)
  • store_file: add global event index (19f5d73)
  • store_mnesia: add global event positions (0c09f08)
  • xp: improve xp (demo) application (32f777d)
  • xp: wire projection runtime into demo app (8c829cc)

Bug Fixes

  • contract: correct behavior of advance/2 to return empty range when beyond upper bound (4f7f60a)
  • contract: correct error tuple for invalid range creation (dff2608)
  • file: handle file:write_file error return type (1c6b31e)
  • kernel: add (missing) event_type/1 callback to aggregate behavior (97ec156)
  • kernel: add warning log for missing registry entry in init/1 (c67b810)
  • kernel: align manager dispatch specs with actual return types (95774e9)
  • kernel: make checkpoint ets startup race-safe (1c5e5db)
  • kernel: preserve event order in aggregate batches (59046e4)
  • xp: enforce positive withdraw amounts (813f7da)

Documentation

  • kernel: document projection runner failure mode (7e768e4)
  • kernel: tighten aggregate process documentation (ff3cea9)
  • README: add codecov badge (c1aa4e3)
  • README: add pull-based projection runtime and checkpointing details (2dde721)
  • README: clarify command payload and aggregate type resolution (19af86b)
  • README: describe file store backend (+ cosmetics) (dd9174a)
  • README: describe lint workflow (dialyzer, fmt) (9663a18)
  • README: document global event folding (fa2f543)
  • README: document kernel refactor and supervision tree (fdd21b4)
  • README: document managed projections (8cfdf16)
  • README: document projection app runtime (6a4de80)
  • README: include capabilities for each store (29bfe3c)
  • README: refresh feature overview (1eee3a9)
  • README: specify event store backend roadmap (e91c279)

Styles

  • contract: polish style (14990a8)
  • fix line length lint (8ee4e12)
  • kernel: make linter happy again (7f509bb)
  • kernel: simplify metadata and tags handling (0214388)

Refactors

  • apply es_ prefix to all modules (simplify naming) (8ceee1e)
  • contract: change fold callback to use interval as first-class parameter (6a020f2)
  • contract: rename interval ADT into range (c6c3056)
  • core: split store behaviours (a6022c2)
  • extract event sourcing contract into dedicated app (33241ee)
  • kernel: change event store behavior to return result tuples (8186b17)
  • kernel: configure store via OTP application environment (6fb6c45)
  • kernel: extract rehydration logic from aggregate init (60c7c70)
  • kernel: migrate es_kernel_aggregate_sup t...
Read more

v1.1.0

Choose a tag to compare

@ccamel ccamel released this 25 Oct 10:45
186e971

1.1.0 (2025-10-25)

Features

  • core: add ETS-based snapshot storage (c0813df)
  • core: add Mnesia-based snapshot storage (3917490)
  • core: introduce snapshot mechanism (cefcfb6)

v1.0.0

Choose a tag to compare

@ccamel ccamel released this 02 Apr 08:19
8a872fc

1.0.0 (2025-04-02)

Features

  • core: add core_mgr_aggregate implementation (d901a2f)
  • core: add dispatch/1 to aggregate to entirely hide gen_server (f3a39cc)
  • core: add ETS event store (8f08219)
  • core: add gen_server aggregate behaviour for event-sourced domain logic (59593d3)
  • core: add limit option to event retrieval function (cd27ea7)
  • core: handle conflicts and enfore atomicity in Mnesia persistence (cfd16de)
  • core: improve mnesia storage management (11985ab)
  • core: introduce configurable sequence and timestamp options (0598490)
  • core: introduce routing behaviour module (090bec2)
  • core: log persisted events (00ffe97)
  • core: switch to persist_events for event stream batch persistence (6373e32)
  • core: use cursor based limit queries for mnesia (af36aa8)
  • lib: implement persist_event/3 and retrieve_and_fold_events/4 (bc42558)
  • lib: scaffold event_sourcing_core lib (47edf82)
  • store: add helper function to easily retrieve events (15c0c73)

Bug Fixes

  • core: perform batch insert of events in ETS backend (6314d7c)