Repository navigation
Add initial functionality - #1
Conversation
There was a problem hiding this comment.
Codex review
This review was performed by Codex against commit bd8dbf113be80e796499373d9ebd9d6002bf903f.
-
[P2] Namespace files can silently overwrite each other. Siblings named
Sensorsandsensorspass validation but resolve to the same files on case-insensitive filesystems. Reproduced on macOS: generation succeeds, but the loaded module has onlysensors. Detect path collisions before writing. src/julia.jl:187 -
[P2] An enum named
Tproduces unloadable Julia code.EnumSpec("T", "uint8", ["ready" => 0])passes validation, but EnumX's internal typeTconflicts with its enclosing module. Loading fails withcannot declare T.T public; it is already declared exported. ReserveTfor enum declarations as well as enum members. src/definitions.jl:130 -
[P3] Julia's special identifiers escape validation. Fields named
ccallorcglobalpassBase.isidentifier, but the emitted constructors fail to load because these are invalid argument names. Reject them before writing output. src/definitions.jl:103
|
Fixed those things. It's ready again. |
Summary
GradientMicroIDL generates matching Julia and C++ message types for interfaces such as Julia simulations calling C++ through
ccall. Generation happens in a separate build step, leaving consumers with ordinary Julia source files and C++ headers.See the readme.md.
Design
File readers support relative namespace includes and reject recursive includes and duplicate keys. Callers explicitly load
YAMLorJSONto enable the corresponding reader.Validation
All 348 tests pass, covering specification and file inputs, validation, generated Julia types, compiled C++ layout checks, and mutation through
ccall. The README's native specification example also runs successfully.