Decisions made while building clj-zig, newest-numbered last. Each record is one screenful: context, decision, consequences, alternatives. A decision stands until a later record supersedes it by name.
ADR 01-17 are the founding decisions, migrated from the dossier; the
design principles they serve remain in
../07-design-principles-and-decisions.md.
Later ADRs capture decisions made during development. Written via the
record-decision skill.
| ADR | Decision |
|---|---|
| 01 | Name the experiment Zigar |
| 02 | Build clj-zig as a Clojure library, not a new language |
| 03 | defnz is the primary function form |
| 04 | Zig-aware defining forms use a z suffix |
| 05 | Return type lives in the signature vector |
| 06 | :ret is required and final |
| 07 | Built-in Zig types are keywords |
| 08 | Compound types are vector data |
| 09 | The boundary contract does not model Zig internals |
| 10 | Start with one-directional interop |
| 11 | Keep the last good implementation after a compile failure |
| 12 | Generated artifacts are content-addressed |
| 13 | Destructuring happens on the Clojure side |
| 14 | Records require explicit bridge definitions |
| 15 | Public specs remain ordinary data |
| 16 | Functional core, imperative shell |
| 17 | Explicit boundary contracts over data marshalling |
| 18 | Boundary carriers and the unsigned-return policy |
| 19 | Error-union boundary semantics |
| 20 | Enum boundary semantics |
| 21 | Owned and borrowed slice returns copy into Clojure |
| 22 | Handles are opaque tagged pointers the caller frees |
| 23 | Generative and exhaustive testing over the example suite |
| 24 | Every compiled library links libc |
| 25 | Rename the project to clj-zig |
| 26 | A defnz body may be sourced from a Zig file |
| 27 | Compile options carry C-interop flags |
| 28 | A Clojure namespace is a Zig namespace |
| 29 | Multi-file Zig imports copy the import closure into the build |
| 30 | Bootstrap the Zig toolchain |
| 31 | Distribute precompiled artifacts, bake the cache |
| 32 | Generate Zig source, not a lower IR |
| 33 | Compile out of process, warm the compiler rather than embed it |
Can you improve this documentation?Edit on GitHub
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |