aboutsummaryrefslogtreecommitdiffstats
path: root/docs
diff options
context:
space:
mode:
authoruser <user@clank>2026-08-13 18:59:59 +0200
committeruser <user@clank>2026-08-13 18:59:59 +0200
commit92ffceaa5a4c39eab113b94272aa3cd13f634dcb (patch)
treebd6e03688acc4461febbe540f0cb1c2a7fd25d3b /docs
parentsl0p: make the split button visible, and clickable where it is drawn (diff)
downloadsl0ppi-92ffceaa5a4c39eab113b94272aa3cd13f634dcb.tar.gz
sl0ppi-92ffceaa5a4c39eab113b94272aa3cd13f634dcb.tar.xz
sl0ppi-92ffceaa5a4c39eab113b94272aa3cd13f634dcb.zip
build: cut the edit loop from 52s to 5s with more codegen units
zellij-server is one enormous crate and `fastdev` was building it in 16 codegen units, which is the granularity the incremental cache can skip work at: a one-line change re-optimised a sixteenth of the crate. Splitting the crates we actually edit into 256 units makes that a sliver instead. Measured on the same one-line change to pane_boundaries_frame.rs, `git checkout` of the file to a linked binary: codegen-units = 16 52s codegen-units = 256 6s, 4s on a second run + opt-level = 1 5s (rejected: not worth a slower binary) Ruled out on the way: linking the 69MB binary is ~2s, and rust-lld did not beat the default linker on it, so the linker was never the problem. Root crate codegen plus link is ~2s of the total. Costs one 80s rebuild when switching profiles, and the fastdev binary keeps opt-level 3. Verified with the full server/utils suites and make check-live.
Diffstat (limited to 'docs')
-rw-r--r--docs/roadmap.md11
1 files changed, 10 insertions, 1 deletions
diff --git a/docs/roadmap.md b/docs/roadmap.md
index 98c8949..cf7692c 100644
--- a/docs/roadmap.md
+++ b/docs/roadmap.md
@@ -264,9 +264,18 @@ rm sl0ppij/target && make build plugins
`sl0pstatus/target` is already a real directory (572M).
**Release builds are slow by design.** `make build` is 5m16s here (LTO,
-`codegen-units = 1`); `make dev` is the ~3s iteration loop. Do not put `make
+`codegen-units = 1`); `make dev` is the ~5s iteration loop. Do not put `make
build` in an edit cycle.
+That loop was 52s until the `fastdev` profile started splitting the crates we
+edit into 256 codegen units. zellij-server is one enormous crate, so with 16
+units a one-line change re-optimised a sixteenth of it; the incremental cache
+can only skip work at codegen-unit granularity. Measured on the same one-line
+change, checkout to linked binary: 52s at `codegen-units = 16`, 6s at 256, 5s
+at 256 plus `opt-level = 1` (not worth a slower binary). Linking the 69MB
+binary is only ~2s, and lld did not improve on it -- the linker is not the
+problem here, and neither is opt-level.
+
**pi version coupling.** `pi-ext/` targets pi's extension API, pinned at 0.84.1.
Bumping the pin is an integration test, not a version bump.