aboutsummaryrefslogtreecommitdiffstats
path: root/Cargo.toml
diff options
context:
space:
mode:
authoruser <user@clank>2026-08-08 20:46:53 +0200
committeruser <user@clank>2026-08-08 20:46:53 +0200
commit0d9540e848135ea46531e57c2d16bc28a645230d (patch)
treef215c55dc832ec2229b8a743f60bc8e96133388f /Cargo.toml
parentsl0p: blank the padding ring too, fixing remaining resize ghosting (diff)
downloadsl0ppij-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.toml21
1 files changed, 21 insertions, 0 deletions
diff --git a/Cargo.toml b/Cargo.toml
index fa783344..42772834 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -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"]