CoHDL 0.5.0 is out. If you already have the compiler,
cohdl self-update gets you there; otherwise the one-liner
installs the right binary for your platform:
curl -fsSL https://raw.githubusercontent.com/conol-ai/cohdl/main/install.sh | sh
The compiler writes the board file now
Until this release, turning a checked design into an actual KiCad board
meant driving KiCad’s own Python API with a script: export an
intermediate document, feed it to pcbnew, and hope the
versions lined up. That worked, but it put a scripting runtime and a
desktop application in the middle of a pipeline whose whole point is
deterministic, byte-stable artifacts.
cohdl build --emit kicad_pcb now writes
out/<name>.kicad_pcb directly from the compiler’s
IR: a KiCad 10 board with every footprint embedded and net-bound, the
board outline on Edge.Cuts, placements exactly where the source put them,
and back-side parts encoded the way KiCad itself writes them — pinned
empirically against boards pcbnew generated, down to the
flipped pad geometry and mirrored text. Footprint geometry comes from the
same derivation that produces the .kicad_mod library files, so
the two can never drift. UUIDs are derived from content hashes, so the same
source produces the same bytes, every time, with no KiCad installation
anywhere in the loop.
Open the file in KiCad, route it, and keep the routed copy outside
out/ — the build directory belongs to the compiler.
A live schematic explorer
A CoHDL design is text, which is the point — but sometimes you want to look at the circuit. The new explorer renders any checked design as an interactive schematic-style board: every instance, net, and pin the compiler resolved, searchable and traceable, with datasheets and to-scale footprint previews in a side panel.
It is a read-only projection with a live loop: edit any
.cohdl file and the view re-extracts and refreshes in about
half a second. A source that stops compiling keeps the last good view and
overlays the diagnostics at their exact spans, so the picture never goes
blank mid-edit. Layout and wire routing are deterministic code — the
same source always draws the same board. The only thing an AI writes is the
partition file that names the page tabs and groups parts into regions; a
bad one changes grouping, never topology.
On macOS you don’t need the source tree at all: a signed, notarized CoHDL Explorer app ships as a universal DMG — drag it to Applications, open it, and pick a project folder.
Dependencies of dependencies
Package resolution now walks the full transitive closure: every resolved
package’s own [dependencies] joins the compile, and
cohdl.lock records the whole closure with content hashes. Your
project’s manifest stays the single authority — its pin wins
over any dependency’s — and when two dependencies disagree with
no root pin to settle it, the compiler stops and tells you to pin at the
root rather than guessing. check and build stay
fully offline; cohdl install fetches whatever the closure
needs.
Signed and notarized macOS builds
Both macOS binaries — Apple silicon and Intel — are now signed
with a Developer ID certificate under the hardened runtime and
notarized by Apple as part of the release pipeline. However the binary
reaches your machine, Gatekeeper can verify who built it and that Apple has
scanned it. Nothing about the artifacts changed otherwise: same archive
names, same checksums file, same self-update.
Also in this release
-
rotateaccepts any whole degree, on placements and on pads — exact fixed-point trigonometry keeps emitted coordinates byte-stable across platforms, and the four cardinal angles still emit bit-identical output to earlier releases. - The registry gained a component request workflow, so missing parts can be asked for in the open.
-
--emitis repeatable: one build can produce the KiCad board and the IPC-2581 handoff document together.
The full source, including every design document and RFC behind these features, is at github.com/conol-ai/cohdl.