v2.5.0
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(...), andevent.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(), oremit()no longer operates on stale inner event data.
Validation
Local checks run before publishing:
uv run pytest-> 540 passedpnpm --dir abxbus-ts test-> 515 passedgo test ./tests -count=1 -timeout=180s-> passedcargo test --locked --all-features-> passed, including Rust cross-runtime roundtrip testsuv run prek run --all-files-> passeduv build-> builtabxbus-2.5.0sdist and wheelpnpm --dir abxbus-ts run build-> passedcargo build --locked --all-features-> passed
Compare
Full compare: v2.4.29...v2.5.0