com.leifericf/clj-zig
2026.06.27-alpha1
cljdoc
leifericf/clj-zig
Liking cljdoc? Tell your friends :D
Articles
Readme
01 - Vision Brief
02 - Interface Design
03 - Boundary Contract
04 - REPL and Execution Model
05 - Composability and Builders
06 - Proof-of-Concept Plan
07 - Design Principles and Decisions
08 - Test Strategy
Installation and Distribution
Design and plan: multi-value returns (result records with owned fields)
ADR 01: Name the experiment Zigar
ADR 02: Build clj-zig as a Clojure library, not a new language
ADR 03: defnz is the primary function form
ADR 04: Zig-aware defining forms use a z suffix
ADR 05: Return type lives in the signature vector
ADR 06: :ret is required and final
ADR 07: Built-in Zig types are keywords
ADR 08: Compound types are vector data
ADR 09: The boundary contract does not model Zig internals
ADR 10: Start with one-directional interop
ADR 11: Keep the last good implementation after a compile failure
ADR 12: Generated artifacts are content-addressed
ADR 13: Destructuring happens on the Clojure side
ADR 14: Records require explicit bridge definitions
ADR 15: Public specs remain ordinary data
ADR 16: Functional core, imperative shell
ADR 17: Explicit boundary contracts over data marshalling
ADR 18: Boundary carriers and the unsigned-return policy
ADR 19: Error-union boundary semantics
ADR 20: Enum boundary semantics
ADR 21: Owned and borrowed slice returns copy into Clojure
ADR 22: Handles are opaque tagged pointers the caller frees
ADR 23: Generative and exhaustive testing over the example suite
ADR 24: Every compiled library links libc
ADR 25: Rename the project to clj-zig
ADR 26: A defnz body may be sourced from a Zig file
ADR 27: Compile options carry C-interop flags
ADR 28: A Clojure namespace is a Zig namespace
ADR 29: Multi-file Zig imports copy the import closure into the build
ADR 30: Bootstrap the Zig toolchain
ADR 31: Distribute precompiled artifacts, bake the cache
ADR 32: Generate Zig source, not a lower IR
ADR 33: Compile out of process, warm the compiler rather than embed it
ADR 34: Depend on external Zig modules by name
ADR 35: Give Zig a persistent global cache directory
ADR 36: A pinned module reference may carry a local checkout
ADR 37: A foreign-function toolkit for prebuilt libraries
ADR 38: Synchronous upcall stubs are a supported primitive
ADR 39: A scalar-only hot-path call mode for defnz
Architecture Decision Records
Retrospective: boundary-completeness
Namespaces
clj-zig
bake
cache
compile
core
diagnostics
ffm
fileref
foreign
fs
imports
infer
inspect
layout
signature
source
spec
toolchain
type
cljdoc
builds & hosts documentation for Clojure/Script libraries
Keyboard shortcuts
Ctrl
+
k
Jump to recent docs
←
Move to previous article
→
Move to next article
Ctrl
+
/
Jump to the search field
Raise an issue
Browse cljdoc source
Chat on Slack
× close