- Most time: the gate’s whole-package
tests/compiler run at both settings (it ran the whole package because a check_*.nika changed). Second came one extra build of the unfixed binary, needed to show the new test fails there: the previous builder’s binary already had the fix baked in, even though the tree was clean. The reduction itself was cheap, because the stopped builder’s test program already reproduced it.
- Looked up:
- That
check_test on a file inside tests/compiler checks the whole project. I wrote the .stderr from a scratch copy instead.
- How an optional prints in
Ty (as T?).
- The name of the plain-call NK2105 function, to verify
Found:.
- What an ordinary call does when it reuses
t. That decided refuse-versus-lend, and the brief could have stated it: NK2105, “Nikaia never copies behind your back”.
- Checks run:
- Unfixed versus fixed probes: the stopped builder’s program, two variants, a
t?.clone() case and a plain call. The variant with a label the callee doesn’t keep was the useful one: it showed the cause is “kept”, not “optional”.
- One build plus one rebuild cycle, the gate, and the
yaml package gate.
- Wasted: the in-project
check call (wrong output), and two greps for the gate’s per-test lines, which it doesn’t print.
- Change that would have saved the most: when a brief hands over a stopped builder’s partial work, it should say whether
target/fast/nikaia was built with that work in it, and it should keep an unfixed binary next to the saved diff. That would have saved a build, and the brief wouldn’t have needed to ask for “failed on the unfixed binary” to be proven again. builder.md should also note that scripts/gate.nika prints only per-step lines, so a builder doesn’t hunt for test names in its output.
This site is open source.
Improve this page.