CoHDL
  1. Blog
  2. CoHDL 0.5.0

CoHDL 0.5.0: Native KiCad Boards
and a Live Schematic Explorer

The compiler now writes .kicad_pcb board files itself, a new explorer renders any checked design as a searchable, live-reloading schematic, dependencies resolve transitively, and the macOS binaries are signed and notarized by Apple.

The CoHDL mark: a diagonal slash of capsules and a dot on a soft teal tile

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

  • rotate accepts 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.
  • --emit is 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.