Wire_3d does not define another schema language. It takes exported schemas from Wire.Everparse, writes their .3d files, invokes EverParse, and generates C parser artifacts around the result.
The output directory contains a self-contained C library: EverParse.h, <Name>.h, <Name>.c, and a test.c that exercises the validators.
Typical usage (gen.ml):
let () = Wire_3d.main ~package:"clcw" [ Wire.Everparse.schema Clcw.codec ]
With a minimal dune that includes the generated rules:
everparse_name name returns the EverParse-normalized identifier for a struct name. EverParse 3D normalizes names that start with two or more consecutive uppercase letters by lowercasing the whole name and capitalizing only the first letter (e.g., CLCW becomes Clcw, TMFrame becomes Tmframe). Names with standard camelCase are preserved.
write_external_typedefs ~outdir schemas writes the default <Name>_ExternalTypedefs.h for each schema that uses the WireCtx contract, declaring WIRECTX as a forward reference to the matching <Name>Fields plug struct.
write_fields ~outdir schemas writes the default <Name>_Fields.{c,h} plug for each schema that uses the WireCtx contract: a typed struct (one member per named field) and the <Name>Set* switch dispatchers that populate it.
run ?quiet ~outdir schemas runs the full pipeline: writes .3d files, invokes EverParse, and produces C validators. The quiet flag is passed through to EverParse execution.