Expand description
§rusteron-code-gen
rusteron-code-gen is an internal code generation tool used within the Rusteron project.
It automates the creation of Rust bindings from Aeron’s C APIs, reducing manual effort and ensuring consistent wrapper interfaces across the rusteron-* crates.
§Purpose
Aeron’s C APIs follow predictable structural patterns. This tool parses those C headers and uses templates to emit Rust wrappers around the raw FFI layer. It is primarily used to generate:
rusteron-clientrusteron-archiverusteron-media-driver
By automating this step, we reduce maintenance cost and improve reliability when tracking upstream changes in Aeron.
Note: This crate is not intended for standalone use outside the Rusteron project.
§Sponsored by GSR
Rusteron is proudly sponsored and maintained by GSR, a global leader in algorithmic trading and market making in digital assets.
It powers mission-critical infrastructure in GSR’s real-time trading stack and is now developed under the official GSR GitHub organization as part of our commitment to open-source excellence and community collaboration.
We welcome contributions, feedback, and discussions. If you’re interested in integrating or contributing, please open an issue or reach out directly.
§Features
- Automated Code Generation – Converts Aeron C headers into Rust-safe APIs.
- Pattern-Based Templating – Leverages Aeron’s consistent structure to minimize boilerplate.
- Integration-Friendly – Output is directly used in production modules of the Rusteron stack.
§Usage
This crate is used via internal tooling (e.g. in just scripts or CI pipelines) and is not meant to be added as a dependency in consumer projects.
§Safety Considerations
Generated code includes unsafe blocks where necessary to interface with Aeron’s low-level constructs.
While much of the generation is automated, occasional manual review and patching may be required to ensure correctness, especially when Aeron introduces API changes.
§License & Acknowledgments
Dual-licensed under MIT or Apache-2.0. See the root README.
Special thanks to:
- @mimran1980, a core low-latency developer at GSR and the original creator of Rusteron - your work made this possible!
- @bspeice for the original
libaeron-sys - The Aeron community for open protocol excellence
Modules§
Structs§
- AeronC
Error - Represents an Aeron-specific error with a code and an optional message.
- Arg
- CBinding
- CHandler
- CWrapper
- Channel
Uri - Represents the Aeron URI parser and handler.
- Handler
- Handler
- Handlers
- Utility method for setting empty handlers
- ManagedC
Resource - A custom struct for managing C resources with automatic cleanup.
- Method
- Return
Type
Enums§
- Aeron
Error Type - ArgProcessing
- CResource
- Control
Mode - Enum for control modes.
- Media
- Enum for media types.
Constants§
- AERON_
DIR_ PROP_ NAME - AERON_
IPC_ MEDIA - AERON_
UDP_ MEDIA - ARCHIVE_
BINDINGS - CLIENT_
BINDINGS - COMMON_
CODE - CUSTOM_
AERON_ CODE - DRIVER_
TIMEOUT_ MS_ DEFAULT - MEDIA_
DRIVER_ BINDINGS - SPY_
PREFIX - TAG_
PREFIX
Traits§
Functions§
- append_
to_ file - find_
unused_ udp_ port - format_
token_ stream - format_
with_ rustfmt - generate_
handlers - generate_
rust_ code - get_
possible_ wrappers - is_
udp_ port_ available - parse_
bindings - parse_
custom_ methods - Parse
aeron_custom.rssource and return a map ofClassName -> {method_names}for everyimpl ClassName { fn method_name ... }block found. This lets the generator skip auto-generating methods that have hand-written overrides. - snake_
to_ pascal_ case