dk

a Windows-friendly, incremental, remote cacheable build system

dk is Diskuv's development kit for building and distributing software. With dk your users clone your project and run one command on Windows, macOS or Linux. dk fetches, builds, and runs the software locally or remotely. Start with the documentation below.

Why dk?

Windows is first-class
Build on the OS your users actually use: Windows, with macOS and Linux too.
Remote builds
No beefy PC or laptop needed. dk1 remote compiles on a remote build machine.
Caches and incremental builds
Pull prebuilt binary caches with dk1 add, and rebuild only what changed with dk1 restore.
Write-once, read-many distros
Package once and distribute everywhere, with checksums and signatures baked in.

Which dk?

Three implementations share one build engine, so every one produces byte-identical results. Reach for dk1 day to day; dk0 is the single-threaded reference implementation, and dkjs builds JavaScript and web projects on Node.js.

dk0 dk1 dkjs
Runtime Native, single-threaded Native, multi-threaded JavaScript on Node.js
Install Signed native binary Signed native binary JavaScript bundle, no native binary
Parallelism Serial -j (default: CPU count) -j (default: 1)
Best for The reference implementation and cross-language emulation target Fast day-to-day local and remote builds Building JavaScript and web projects (js_nodejs / js_web)
Build output Byte-identical Byte-identical Byte-identical

Commands

get-object Fetch a prebuilt object (a tool, library, or binary) from the registry.
remote Build on a remote GitHub Actions machine instead of your own.
add Add a GitHub release verified with a SLSA-2 attestation to your workspace.
restore Rebuild only what changed: fast, incremental builds.
run-object Run a built object locally or remote.
distribute Package a build into a signed, checksummed distribution.

Full command reference →