Software Version 1.52.0 released
Aeron 1.52.0: container-aware CPU affinity, debug log rotation, a new LogInspector CLI, and lower latency in replay workloads. See what changed.
This release removes the long-standing Java-agent requirement for event logging, introduces more distinct thread naming for easier profiling and diagnostics, and gives C/C++ clients direct access to specific Archive error codes. This release contains breaking changes — see below before upgrading. For the full list of changes, see the release notes.
aeron-agent jar is removed (no -javaagent flag).Image.controlledPeek/position(long) and their C/C++ equivalents are removed.Aeron’s event logging previously relied on a Java agent (-javaagent:) using bytecode-weaving to attach itself at startup, with log messages encoded by hand and no formal schema — workable, but brittle, and prone to classpath conflicts (duplicate classes) in more advanced deployment topologies. 1.53 replaces this entirely: the aeron-agent jar is gone, and log messages are now encoded in a self-describing CBOR binary format. The result is a more robust encoding with fewer moving parts, and no agent flag required at startup. A new aeron.event.log.render.data option additionally allows the data portion of frame-in and frame-out messages to be printed, useful for deeper debugging. Note that dynamic enablement of logging (toggling it at runtime) is no longer supported, and some log message formats have changed as a result — check any downstream tooling that parses Aeron’s log output.
Thread names have historically been generic (sender, receiver, conductor), making it harder to distinguish components at a glance in profilers or thread dumps on busier systems. 1.53 introduces a new aeron.thread.naming system property with two modes: classic (default — unchanged behavior) and new, which switches to standardized, component-prefixed names like aeron-md-snd, aeron-md-rcv, and aeron-md-cnd. This applies consistently across the Media Driver (both Java and C), Archive, and Cluster. Existing setups are unaffected unless you opt in.
AERON_ARCHIVE_*_ERROR_CODE constants are available in the public API, and C++ exceptions now expose an errorCode() accessor. The C Archive and async clients also translate Archive-specific error codes into user-facing error codes automatically. Existing C/C++ code referencing the old ARCHIVE*_ERROR_CODE constants directly will need to be updated.Image controlledPeek removed:Image.controlledPeek/Image.position(long) (Java), aeron_image_controlled_peek/aeron_image_set_position (C), and Image::controlledPeek/Image::position (C++) have all been removed, as previously flagged for deprecation in 1.52.0.For detailed release notes on Aeron 1.53.0, please visit Github >>
Aeron 1.52.0: container-aware CPU affinity, debug log rotation, a new LogInspector CLI, and lower latency in replay workloads. See what changed.
Aeron 1.51.0 introduces Persistent Subscriptions, a new Aeron Archive feature, sponsored by Nonco, , that manages the transition between historical and live message streams for late-joining consumers.
This release includes Persistent Subscriptions for seamless live/historical streams, new C/C++ client APIs for async control, and stricter protocol and cluster reliability.
This release enhances trading technology's performance and observability. New IPC support for response channels, async counter creation, and improved client identification.