ZeroDDS IDL Compiler
zerodds-idlc is the OMG IDL 4.2 compiler. It parses
.idl schema files and generates language bindings plus the
matching XCDR codecs for seven targets — C, C++, C#, Java, Python, Rust
and TypeScript — from a single source of truth.
Install
cargo install zerodds-idlc
Pre-built binaries are published through the package managers
(Linux .deb/.rpm, macOS Homebrew, Windows
MSI/Scoop, multi-arch Docker).
Quickstart
zerodds-idlc generate schemas/sensor.idl --rust -o gen/rust
The generate sub-command compiles an IDL file into one
or more backends. A flat form without the sub-command is also accepted
for build-script use: zerodds-idlc schemas/sensor.idl --rust -o gen.
#include, #define and #ifdef are
expanded by the built-in preprocessor; -I adds include
paths and -D defines macros.
Sub-commands
generate— emit language stubs.check— parse and validate, no code generation.dump-ast— print the parsed AST.dump-typeobject— print each type's XTypes MinimalTypeObject, dependencies first.print-deps— Make-style dependency line for build glue.
Backends
One .idl file, seven targets — pick any combination of
--c, --cpp, --rust,
--ts, --csharp, --java and
--python, or --all to emit every backend in a
single run. --out-<lang> overrides the output
directory per backend. Add --corba with C++/C#/Java/Rust
to also emit OMG CORBA 3.3 Annex-A.1 service stubs.
zerodds-idlc generate sensor.idl --all -o gen
Vendor key-pragmas (#pragma keylist,
DCPS_DATA_KEY) are honoured, and
--default-extensibility sets the extensibility of types
that carry no explicit @final/@appendable/@mutable.
XTypes TypeObject
Every backend file carries the XTypes 1.3 Minimal
TypeObject of each generated type — serialized and ready
for XTypes discovery and TypeLookup, the same way RTI Connext, Fast DDS
and Cyclone DDS emit it. On by default; --no-typeobject
suppresses it.
Project scaffolding
--scaffold additionally emits the idiomatic build file
for each backend — Cargo.toml, CMakeLists.txt,
pom.xml, a .csproj,
pyproject.toml or package.json — so the
generated stubs compile without hand-wiring.
Reference
- Operator manual:
documentation/04-idl/idlc-handbook.md. - Source:
tools/idlc/in the main repository. - Per-crate README:
tools/idlc/README.md. - Changelog:
tools/idlc/CHANGELOG.md.
Stability
CLI surface stable for 1.0.x. Additions are minor bumps; flag
removals require a major bump.
ZeroDDS IDL-Compiler
zerodds-idlc ist der OMG-IDL-4.2-Compiler. Er parst
.idl-Schema-Dateien und generiert Sprach-Bindings plus die
passenden XCDR-Codecs für sieben Targets — C, C++, C#, Java, Python, Rust
und TypeScript — aus einer einzigen Source of Truth.
Installation
cargo install zerodds-idlc
Vorgefertigte Binaries werden über die Paketmanager veröffentlicht
(Linux .deb/.rpm, macOS Homebrew, Windows
MSI/Scoop, Multi-Arch-Docker).
Quickstart
zerodds-idlc generate schemas/sensor.idl --rust -o gen/rust
Der Unterbefehl generate kompiliert eine IDL-Datei in ein
oder mehrere Backends. Eine Flat-Form ohne Unterbefehl wird für den
Build-Script-Einsatz ebenfalls akzeptiert: zerodds-idlc schemas/sensor.idl --rust -o gen.
#include, #define und #ifdef werden
vom eingebauten Präprozessor expandiert; -I fügt Include-
Pfade hinzu und -D definiert Makros.
Unterbefehle
generate— Sprach-Stubs emittieren.check— parsen und validieren, keine Code-Generierung.dump-ast— den geparsten AST ausgeben.dump-typeobject— das XTypes-Minimal-TypeObjectjedes Typs ausgeben, Abhängigkeiten zuerst.print-deps— Make-Style-Dependency-Zeile für Build-Glue.
Backends
Eine .idl-Datei, sieben Targets — beliebige Kombination aus
--c, --cpp, --rust,
--ts, --csharp, --java und
--python, oder --all, um in einem Lauf jedes
Backend zu emittieren. --out-<lang> überschreibt das
Ausgabe-Verzeichnis pro Backend. Mit --corba bei
C++/C#/Java/Rust werden zusätzlich OMG-CORBA-3.3-Annex-A.1-Service-Stubs
emittiert.
zerodds-idlc generate sensor.idl --all -o gen
Vendor-Key-Pragmas (#pragma keylist,
DCPS_DATA_KEY) werden berücksichtigt, und
--default-extensibility setzt die Extensibility von Typen
ohne explizites @final/@appendable/@mutable.
XTypes TypeObject
Jede Backend-Datei trägt das XTypes-1.3-Minimal-TypeObject
jedes generierten Typs — serialisiert und bereit für XTypes-Discovery und
TypeLookup, genauso wie RTI Connext, Fast DDS und Cyclone DDS es
emittieren. Standardmäßig an; --no-typeobject unterdrückt es.
Projekt-Scaffolding
--scaffold emittiert zusätzlich die idiomatische Build-Datei
für jedes Backend — Cargo.toml, CMakeLists.txt,
pom.xml, eine .csproj,
pyproject.toml oder package.json — sodass die
generierten Stubs ohne Hand-Wiring kompilieren.
Referenz
- Bedienungshandbuch:
documentation/04-idl/idlc-handbook.md. - Quelle:
tools/idlc/im Haupt-Repository. - Pro-Crate-README:
tools/idlc/README.md. - Changelog:
tools/idlc/CHANGELOG.md.
Stabilität
CLI-Oberfläche stabil für 1.0.x. Ergänzungen sind Minor-Bumps;
Flag-Entfernungen erfordern einen Major-Bump.