diff options
| author | user <user@clank> | 2026-08-08 20:46:53 +0200 |
|---|---|---|
| committer | user <user@clank> | 2026-08-08 20:46:53 +0200 |
| commit | 0d9540e848135ea46531e57c2d16bc28a645230d (patch) | |
| tree | f215c55dc832ec2229b8a743f60bc8e96133388f /Cargo.toml | |
| parent | sl0p: blank the padding ring too, fixing remaining resize ghosting (diff) | |
| download | sl0ppij-0d9540e848135ea46531e57c2d16bc28a645230d.tar.gz sl0ppij-0d9540e848135ea46531e57c2d16bc28a645230d.tar.xz sl0ppij-0d9540e848135ea46531e57c2d16bc28a645230d.zip | |
sl0p: add fastdev build profile + SPEED.md (60x faster iteration)
Building this fork for local use took ~3 minutes per one-line change:
[profile.release] sets lto = true and codegen-units = 1, so every rebuild
redid whole-program optimization on a single core. That is right for a
shipped artifact and pure waste for a binary we just want to look at in a
terminal - zellij is bound on a human, not on codegen.
[profile.fastdev] inherits release, keeps opt-level 3, drops LTO, uses 16
codegen units and keeps the incremental cache:
cargo build --profile fastdev -p zellij ~2.8s incremental (was ~3min)
[profile.release] is deliberately untouched, so shipping/benchmarking builds
are unchanged.
.fastfeedback/SPEED.md records the narrow commands, measured timings, the
deploy loop, and - importantly - the PRE-EXISTING test failure baselines
(30 in zellij-server, 5 in zellij-utils) so a future session does not waste
time chasing failures it did not cause.
Rejected: the gold linker (rustc warns it is deprecated with known Rust
bugs) and clang+lld (no lld binary installed). Dropping LTO removed the
dominant cost anyway.
Diffstat (limited to 'Cargo.toml')
| -rw-r--r-- | Cargo.toml | 21 |
1 files changed, 21 insertions, 0 deletions
@@ -135,6 +135,27 @@ lto = true strip = true codegen-units = 1 +# sl0p: fast iteration profile for locally-deployed builds. +# +# `release` is tuned for shipping: fat LTO plus codegen-units = 1 means every +# rebuild redoes whole-program optimization on a single core, which costs ~3 +# minutes per one-line change. For a build we are only going to look at in a +# terminal that is pure waste - zellij is I/O bound on a human, not on codegen. +# +# This keeps opt-level 3 (so it still feels like a real build) but drops LTO, +# parallelises codegen across cores, and keeps the incremental cache. +# +# cargo build --profile fastdev -p zellij -> target/fastdev/zellij +# +# Use `--release` for anything you actually ship or benchmark. +[profile.fastdev] +inherits = "release" +lto = false +codegen-units = 16 +strip = false +incremental = true +debug = false + [package.metadata.deb] depends = "$auto" license-file = ["LICENSE.md", "4"] |
