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 Minimal TypeObject, 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

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-TypeObject jedes 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

Stabilität

CLI-Oberfläche stabil für 1.0.x. Ergänzungen sind Minor-Bumps; Flag-Entfernungen erfordern einen Major-Bump.