Skip to content

v2.5.0

Choose a tag to compare

@pirate pirate released this 13 May 09:57
c31ce4d

Highlights

This release brings the Python, TypeScript, Go, and Rust packages into sync at 2.5.0 and rolls up the cross-runtime event API work that landed since v2.4.29.

  • Unified event waiting and result APIs across all four runtimes. event.now(...), event.wait(...), event.event_result(...), and event.event_results_list(...) are now the recommended shapes, with aligned timeout, first_result, result filtering, error handling, queue-jump, and passive-wait behavior.
  • Rust and Go moved much closer to Python/TypeScript parity. The Rust typed event API now uses proper typed event.emit(...) patterns, preserves runtime fields through serialization roundtrips, and has expanded parity coverage. The Go runtime gained typed handler/payload fixes, stricter queue-jump and destroy semantics, and broader cross-runtime tests.
  • TypeScript event schemas now support full Zod object schemas. BaseEvent.extend(...) can keep full Zod event schema metadata while preserving the existing runtime event fields and result validation behavior.
  • Timeouts, slow warnings, destroy, and queue processing were hardened. Event-level and handler-level timeout behavior is aligned, now(timeout) limits the caller wait without dropping background processing, destroy is terminal and immediate, and queue-jump/parallel-event interactions have stronger regression coverage.
  • Docs and examples were refreshed for the new API shape. Existing snippets were updated to prefer typed events and event.emit(...), with Rust/Go/Python/TypeScript examples filled in across the docs.
  • Rust typed events now sync caller mutations back into live runtime state. Mutating a typed event returned from the bus and then calling helpers like to_json_value(), now(), wait(), or emit() no longer operates on stale inner event data.

Validation

Local checks run before publishing:

  • uv run pytest -> 540 passed
  • pnpm --dir abxbus-ts test -> 515 passed
  • go test ./tests -count=1 -timeout=180s -> passed
  • cargo test --locked --all-features -> passed, including Rust cross-runtime roundtrip tests
  • uv run prek run --all-files -> passed
  • uv build -> built abxbus-2.5.0 sdist and wheel
  • pnpm --dir abxbus-ts run build -> passed
  • cargo build --locked --all-features -> passed

Compare

Full compare: v2.4.29...v2.5.0