Skip to content

Releases: ArchiveBox/abxbus

v2.4.29

01 May 20:57
3ad9fd0

Choose a tag to compare

Highlights

This release rolls up everything shipped on main since the last published GitHub release, v2.4.15, through v2.4.29.

  • OpenTelemetry tracing is now much more complete across runtimes. The OTEL middleware work tightened root span parenting, preserved nanosecond timing, aligned Python/TypeScript tracing behavior, added stronger TypeScript coverage, and documented the integration path for both runtimes.
  • Optional integrations and package exports are cleaner. Root imports stay lightweight, peer-backed integrations stay opt-in, TypeScript now supports direct source imports via abxbus/source and abxbus/source/*, and the runtime export surface is better aligned across Python and TypeScript.
  • Cross-runtime metadata/serialization got tighter. Event result serialization, handler naming, handler metadata, and optional export behavior were aligned so forwarded/rehydrated events behave more consistently between Python and TypeScript.
  • Immediate execution docs now cover parallel fan-out. The RPC-style immediate execution page now shows how to combine event_concurrency='parallel' with racing child events in both TypeScript and Python, and the pattern is covered by mirrored regression tests.
  • Python and TypeScript package versions are both bumped to 2.4.29.

Example Snippets

OTEL middleware setup

import { EventBus } from 'abxbus'
import { OtelTracingMiddleware } from 'abxbus/OtelTracingMiddleware'

const bus = new EventBus('AppBus', {
  middlewares: [new OtelTracingMiddleware()],
})

Immediate-execution parallel fan-out

const settled = await Promise.allSettled([
  event.emit(SomeChildEvent1({})).done(),
  event.emit(SomeChildEvent2({})).done(),
  event.emit(SomeChildEvent3({})).done(),
])

The Python equivalent is documented with asyncio.gather(..., return_exceptions=True) in the immediate-execution guide.

Resources

Validation

  • main CI for 3ad9fd0 completed successfully:
    • Dependency Graph
    • Release State
    • pre-commit-hooks
    • test-py
    • test-ts
  • Local packaging/build verification:
    • uv build
    • pnpm run build

v2.4.15

27 Apr 09:02
cc0ae52

Choose a tag to compare

Highlights

  • event.emit(child) now records event_parent_id and handler lineage immediately without making the child block parent completion by default.
  • Awaiting that emitted child from the same handler upgrades it to event_blocks_parent_completion: true, preserving explicit RPC-style ownership semantics.
  • Un-awaited event.emit(...) children now behave as linked background work: lineage is retained, parent completion is not held open, and parent timeout cancellation does not cascade into them.
  • Python and TypeScript package versions are both bumped to 2.4.15.

Validation

  • Python parent-tracking regression suite: 18 passed
  • TypeScript parent-tracking regression suite: 22 passed
  • TypeScript timeout regression suite: 27 passed
  • TypeScript event-result regression suite: 13 passed

Notes

This release tightens parent-completion semantics around intent: emit for lineage, await for ownership.

v2.4.14

26 Apr 04:53

Choose a tag to compare

Release v2.4.14

  • Remove implicit parent-linking from plain bus.emit() in both TypeScript and Python.
  • Keep explicit child lineage on event.emit(...), including event_children attribution and parent-completion blocking.
  • Prefer uv-managed Python for TS cross-runtime tests.

Validation:

  • uv run pytest
  • pnpm run typecheck
  • pnpm test
  • pnpm run build
  • uv build

2.4.13

24 Apr 03:53
f4b9ac0

Choose a tag to compare

Highlights

Event ownership and parent completion

  • Added event_blocks_parent_completion metadata across Python and TypeScript so parent/child ancestry no longer implies parent completion blocking.
  • Added and standardized event.emit(child) as the explicit owned-child API; children emitted this way block parent completion.
  • Kept direct bus.emit(child) / event.event_bus.emit(child) detached-by-default while preserving automatic parent ancestry from handler context.
  • Awaited bus emissions now block parent completion only when the await originates from the emitting handler context.
  • Fixed TypeScript detached-child promotion so outside observers such as bus.find(...).done(), external child.done(), and external child.eventCompleted() cannot make parent completion depend on observer behavior.
  • Verified the Python paths already use ContextVar-scoped current event/handler checks and do not need the same runtime fix.
  • Renamed the TypeScript event runtime context from event.bus to event.event_bus with no compatibility alias, matching Python.

Retry and cross-runtime coordination

  • Added cross-runtime multiprocess semaphore support for retry locking in Python and TypeScript.
  • Added retry multiprocess worker/test coverage and made ordering assertions more robust.

Full Changelog: 2.4.7...2.4.13

2.4.11

24 Apr 03:38
0ab5196

Choose a tag to compare

Highlights

Event ownership and parent completion

  • Added event_blocks_parent_completion metadata across Python and TypeScript so parent/child ancestry no longer implies parent completion blocking.
  • Added and standardized event.emit(child) as the explicit owned-child API; children emitted this way block parent completion.
  • Kept direct bus.emit(child) detached-by-default while preserving automatic parent ancestry from handler context; awaited bus emissions block parent completion when possible.
  • Renamed the TypeScript event runtime context from event.bus to event.event_bus with no compatibility alias, matching Python.

Retry and cross-runtime coordination

  • Added cross-runtime multiprocess semaphore support for retry locking in Python and TypeScript.
  • Added retry multiprocess worker/test coverage and made ordering assertions more robust.

Release and repository operations

  • Reworked release automation around the unified bin/release.sh.
  • Configured npm/PyPI release credentials through the release workflow.
  • Added bin/setup_monorepo.sh for local monorepo setup.
  • Updated uv/pre-commit configuration.

Docs and examples

  • Updated README and docs for parent-child tracking, immediate execution, timeouts, retry, and event ownership semantics.
  • Updated TypeScript examples/tests to recommend event.emit(...) for owned child work and event.event_bus.emit(...) only for explicit detached/background emissions.
  • Fixed prose, capitalization, and grammar issues across docs.

Validation

  • uv run prek run --all-files
  • pnpm --dir abxbus-ts run build
  • uv build
  • PR #15 CI passed for Python, TypeScript, examples, coverage, performance, and Cubic checks.

Full Changelog: 2.4.7...2.4.11

2.4.7

22 Mar 10:41
bbd2573

Choose a tag to compare

Full Changelog: 2.4.6...2.4.7

2.4.6

22 Mar 10:25
4517446

Choose a tag to compare

Full Changelog: 2.4.2...2.4.6

2.4.2

20 Mar 22:41
c0884f6

Choose a tag to compare

What's Changed

  • 🐍 Published the Python package as abxbus==2.4.2 and finalized renamed Repository, Issue Tracker, PyPI, and NPM metadata in pyproject.toml.
  • 📚 Refreshed the docs and homepage copy around concurrency, parent/child flows, return values, and quickstart examples to match the renamed package surfaces.
  • ✅ Tightened TS-side release metadata and EventResult coverage while aligning the docs site, README badges, and DeepWiki links with ArchiveBox/abxbus.
  • 🔗 This is mainly a Python/docs/metadata release, with npm staying on 2.4.1 while the docs and package identity catch up.
pip install abxbus==2.4.2

Docs: Home · Quickstart · Parent-Child Tracking

Full Changelog: 2.4.1...2.4.2

2.4.1

20 Mar 11:12
2d6710d

Choose a tag to compare

What's Changed

  • 🔁 Completed the bubusabxbus rename across Python and TypeScript package names, modules, docs, examples, CI, tests, bridges, and UI assets.
  • 📦 Added dual-runtime TS packaging with require exports plus new build:cjs and build:cjs:types scripts alongside the existing ESM build.
  • 🧯 Tightened done() / first() / timeout behavior so the first handler error is re-raised consistently during nested execution.
  • 🛡️ Added Python recursion-depth option max_handler_recursion_depth and safer Node runtime loading for AsyncLocalStorage and optional bridge dependencies.
const { EventBus } = require("abxbus");

const bus = new EventBus();

Docs: Quickstart · Bridges · Timeouts

Full Changelog: 2.3.3...2.4.1

2.3.3

20 Mar 22:41
bdffd9c

Choose a tag to compare

What's Changed

  • 📦 Added CommonJS package outputs via build:cjs, build:cjs:types, and new require exports in bubus-ts/package.json.
  • 🧯 Tightened done({ raise_if_any }) / first() error propagation, safer AsyncLocalStorage loading, and clearer optional-dependency detection in TS.
  • 🧪 Expanded TS base-event, timeout, error-handling, typed-result, and Python-side tests/test_eventbus.py coverage while moving the UI app under examples/ui/.
const { EventBus } = require("bubus");

Docs: Supported Runtimes · Timeouts · Quickstart

Full Changelog: 2.3.2...2.3.3