Read-only mirrors. Development, issues and pull requests are on GitHub.

summaryrefslogtreecommitdiffhomepage
path: root/api
diff options
context:
space:
mode:
authorLeitwolf112026-11-12 22:40:35 +0300
committerLeitwolf112026-11-12 22:40:35 +0300
commitd73260a011d463f492448bc2e29aa46fba657326 (patch)
tree838f7b44bd0853b1cd7c5ff82aa9a49f8ff61217 /api
parent86214c96285f73d352f934b0da33d231150898f0 (diff)
downloadtazel-feature/action-level-incremental.tar.gz
Make builds incremental per action, by contentfeature/action-level-incremental
Every compile, archive, link and Zig build is now an action: a command line with its directory and environment, the files it reads and the files it writes. ActionCache keeps a record beside the first output of each action, with the digest of the action and the SHA-256 of every input and output. An action runs again only when: - its command line, directory or environment changed, - a file it read has other content: the declared inputs, and what the compiler included, from the depfile it wrote, - or an output is gone or no longer what the action wrote. Files are compared by content, not by time. Touching a file reruns nothing; a translation unit recompiled to the same object (a comment in a header, say) reruns neither the archive nor the program that use it. Digests are kept per build by size and modification time, so each file is read once. - Zig writes no depfile, so every .zig file beside and below the root file, and the libraries it links, are the inputs of a Zig build. It no longer runs on every build. - Staged headers and data files are copied only when their bytes differ. - The .cmd records and the time comparisons of UpToDate are gone. Tests: the action cache (command, environment, touched, changed and restored inputs, altered outputs, forgotten records) and, with the C compiler of the machine, a touch that runs nothing, a comment in a header that recompiles two units but does not archive or link, and a change of code that recompiles, archives and relinks.
Diffstat (limited to 'api')
0 files changed, 0 insertions, 0 deletions