aboutsummaryrefslogtreecommitdiffstats
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
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.
-rw-r--r--.fastfeedback/SPEED.md81
-rw-r--r--.fastfeedback/fastdev-cold.cmd1
-rw-r--r--.fastfeedback/fastdev-cold.exit1
-rw-r--r--.fastfeedback/fastdev-cold.log800
-rw-r--r--.fastfeedback/fastdev-cold.pid1
-rw-r--r--Cargo.toml21
6 files changed, 905 insertions, 0 deletions
diff --git a/.fastfeedback/SPEED.md b/.fastfeedback/SPEED.md
new file mode 100644
index 00000000..4643370f
--- /dev/null
+++ b/.fastfeedback/SPEED.md
@@ -0,0 +1,81 @@
+# SPEED — zellij (sl0p fork)
+
+_Read this BEFORE running anything slow._
+
+The single biggest trap in this repo: **`cargo build --release` takes ~3 minutes for a
+one-line change.** `[profile.release]` sets `lto = true` + `codegen-units = 1`, so every
+rebuild redoes whole-program optimization on one core. That is correct for shipping and
+absurd for iteration.
+
+Use the `fastdev` profile instead. Same `opt-level = 3`, no LTO, 16 codegen units,
+incremental cache kept.
+
+---
+
+## Commands
+
+```bash
+# cheap gate — ALWAYS before test/build
+cargo check -p zellij-server # ~7s incremental
+
+# narrow test — DEFAULT RUNG
+cargo test -p zellij-server --lib ui::pane_boundaries_frame # ~5s incremental
+cargo test -p zellij-utils --lib gap_and_padding_tests # ~5s incremental
+
+# deployable binary for looking at it in a terminal
+cargo build --profile fastdev -p zellij # ~3s incremental -> target/fastdev/zellij
+
+# real release (shipping / benchmarking only)
+cargo build --release -p zellij # ~3min <-- BACKGROUND ONLY
+
+# full suite — BACKGROUND ONLY, once, at the gate
+bgrun run suite -- cargo test -p zellij-server --lib
+bgrun check suite
+```
+
+## Measured timings
+
+| command | time | notes |
+|---|---|---|
+| `cargo build --profile fastdev -p zellij` (incremental) | **2.8s** | zellij-server edit + relink |
+| `cargo build --profile fastdev -p zellij` (cold) | 2m29s | one-time, per profile |
+| `cargo build --release -p zellij` (incremental) | **~3min** | LTO + codegen-units=1. Avoid in the loop. |
+| `cargo test -p zellij-server --lib <filter>` (incremental) | 4.8s | compile dominates; run is ~0.0s |
+| `cargo test -p zellij-server --lib` (full) | ~7s run | after compile; **30 pre-existing failures** |
+| `cargo test -p zellij-utils --lib` (full) | ~0.3s run | **5 pre-existing failures** |
+
+## Deploy loop (what we actually do)
+
+```bash
+cargo build --profile fastdev -p zellij \
+ && rm -f ~/bin/zellij \
+ && cp target/fastdev/zellij ~/bin/zellij # rm first: "Text file busy" if running
+```
+Then start a **new session** — a running server keeps its old inode. Config-only changes
+(`gap`/`padding`/`title_alignment`) hot-reload; renderer changes do not.
+
+## KNOWN-PRE-EXISTING FAILURES (not regressions — do not chase)
+
+- `zellij-server --lib`: **30 failures** on a pristine tree (mostly
+ `tab::tab_integration_tests::*`, `screen::screen_tests::*`).
+- `zellij-utils --lib`: **5 failures** (`setup::setup_test::*` snapshot tests).
+
+Always compare against baseline before believing you broke something:
+```bash
+git stash && cargo test -p zellij-server --lib 2>&1 | tail -3 && git stash pop
+```
+
+## SLOW TRAPS
+
+- `cargo build --release` in the inner loop — 60x slower than `fastdev` for no benefit.
+- `cargo clean` — forfeits the incremental cache; never without evidence of a stale artifact.
+- `cargo check --workspace --all-targets` — fails on missing **debug-profile** wasm plugin
+ assets (`target/wasm32-wasip1/debug/*.wasm`). Not a real error. Use `-p <crate> --all-targets`.
+- The gold linker "works" but rustc warns it is deprecated with known Rust bugs. `lld` is
+ NOT installed (only `rust-lld` inside the toolchain, which needs nightly flags to use).
+ Not worth it — dropping LTO already removed the dominant cost.
+
+## Fork context
+
+Branch `sl0p/base`. `main` tracks upstream and is left clean.
+Custom options live in `ui { pane_frames { title_alignment, gap, padding } }`.
diff --git a/.fastfeedback/fastdev-cold.cmd b/.fastfeedback/fastdev-cold.cmd
new file mode 100644
index 00000000..24eb5bb4
--- /dev/null
+++ b/.fastfeedback/fastdev-cold.cmd
@@ -0,0 +1 @@
+cargo build --profile fastdev -p zellij
diff --git a/.fastfeedback/fastdev-cold.exit b/.fastfeedback/fastdev-cold.exit
new file mode 100644
index 00000000..573541ac
--- /dev/null
+++ b/.fastfeedback/fastdev-cold.exit
@@ -0,0 +1 @@
+0
diff --git a/.fastfeedback/fastdev-cold.log b/.fastfeedback/fastdev-cold.log
new file mode 100644
index 00000000..130a84d7
--- /dev/null
+++ b/.fastfeedback/fastdev-cold.log
@@ -0,0 +1,800 @@
+ Compiling proc-macro2 v1.0.107
+ Compiling quote v1.0.47
+ Compiling unicode-ident v1.0.1
+ Compiling libc v0.2.176
+ Compiling cfg-if v1.0.0
+ Compiling shlex v1.3.0
+ Compiling find-msvc-tools v0.1.9
+ Compiling once_cell v1.21.3
+ Compiling log v0.4.33
+ Compiling memchr v2.7.6
+ Compiling bitflags v2.11.0
+ Compiling pin-project-lite v0.2.14
+ Compiling bytes v1.11.1
+ Compiling autocfg v1.1.0
+ Compiling futures-core v0.3.31
+ Compiling version_check v0.9.4
+ Compiling itoa v1.0.14
+ Compiling pkg-config v0.3.25
+ Compiling thiserror v1.0.61
+ Compiling rustix v1.1.2
+ Compiling fnv v1.0.7
+ Compiling futures-io v0.3.31
+ Compiling linux-raw-sys v0.11.0
+ Compiling smallvec v1.13.2
+ Compiling tracing-core v0.1.33
+ Compiling stable_deref_trait v1.2.1
+ Compiling typenum v1.20.1
+ Compiling futures-sink v0.3.31
+ Compiling vcpkg v0.2.15
+ Compiling ppv-lite86 v0.2.16
+ Compiling slab v0.4.6
+ Compiling simd-adler32 v0.3.10
+ Compiling crossbeam-utils v0.8.15
+ Compiling serde_core v1.0.228
+ Compiling rustix v0.38.44
+ Compiling adler2 v2.0.1
+ Compiling syn v2.0.96
+ Compiling jobserver v0.1.31
+ Compiling syn v3.0.3
+ Compiling miniz_oxide v0.8.9
+ Compiling http v1.3.1
+ Compiling serde v1.0.228
+ Compiling cc v1.2.57
+ Compiling object v0.37.3
+ Compiling linux-raw-sys v0.4.15
+ Compiling thiserror v2.0.19
+ Compiling anyhow v1.0.95
+ Compiling getrandom v0.3.1
+ Compiling mio v1.0.3
+ Compiling signal-hook-registry v1.4.0
+ Compiling socket2 v0.5.7
+ Compiling openssl-src v300.5.4+3.5.4
+ Compiling heck v0.5.0
+ Compiling io-lifetimes v2.0.3
+ Compiling gimli v0.32.3
+ Compiling cmake v0.1.54
+ Compiling openssl-sys v0.9.111
+ Compiling libz-sys v1.1.8
+ Compiling libnghttp2-sys v0.1.8+1.55.1
+ Compiling futures-channel v0.3.31
+ Compiling generic-array v0.14.5
+ Compiling rustc-demangle v0.1.28
+ Compiling equivalent v1.0.1
+ Compiling writeable v0.6.2
+ Compiling fs_extra v1.3.0
+ Compiling litemap v0.8.1
+ Compiling dunce v1.0.5
+ Compiling aws-lc-sys v0.39.0
+ Compiling getrandom v0.2.10
+ Compiling synstructure v0.13.2
+ Compiling icu_properties_data v2.1.2
+ Compiling percent-encoding v2.3.1
+ Compiling zeroize v1.8.1
+ Compiling httparse v1.10.1
+ Compiling io-extras v0.18.4
+ Compiling icu_normalizer_data v2.1.1
+ Compiling zerocopy v0.8.17
+ Compiling scopeguard v1.1.0
+ Compiling rand_core v0.6.3
+ Compiling addr2line v0.25.1
+ Compiling thiserror-impl v2.0.19
+ Compiling curl-sys v0.4.68+curl-8.4.0
+ Compiling cap-primitives v3.4.4
+ Compiling ambient-authority v0.0.2
+ Compiling zerofrom-derive v0.1.6
+ Compiling tracing-attributes v0.1.28
+ Compiling tokio-macros v2.5.0
+ Compiling thiserror-impl v1.0.61
+ Compiling yoke-derive v0.8.1
+ Compiling tokio v1.44.2
+ Compiling zerovec-derive v0.11.2
+ Compiling zerofrom v0.1.6
+ Compiling tracing v0.1.41
+ Compiling displaydoc v0.2.5
+ Compiling serde_derive v1.0.228
+ Compiling backtrace v0.3.76
+ Compiling yoke v0.8.1
+ Compiling futures-macro v0.3.31
+ Compiling rand_chacha v0.3.1
+ Compiling zerotrie v0.2.3
+ Compiling fs-set-times v0.20.1
+ Compiling zerovec v0.11.5
+ Compiling form_urlencoded v1.2.1
+ Compiling rustix-linux-procfs v0.1.1
+ Compiling http-body v1.0.1
+ Compiling ahash v0.8.11
+ Compiling lock_api v0.4.11
+ Compiling memoffset v0.6.5
+ Compiling ipnet v2.9.0
+ Compiling leb128 v0.2.5
+ Compiling aws-lc-rs v1.16.2
+ Compiling tinystr v0.8.2
+ Compiling potential_utf v0.1.4
+ Compiling hashbrown v0.17.1
+ Compiling pin-utils v0.1.0
+ Compiling icu_locale_core v2.1.1
+ Compiling icu_collections v2.1.1
+ Compiling iana-time-zone v0.1.60
+ Compiling unicode-width v0.1.14
+ Compiling allocator-api2 v0.2.21
+ Compiling parking_lot_core v0.9.9
+ Compiling utf8parse v0.2.2
+ Compiling futures-task v0.3.31
+ Compiling maybe-owned v0.3.4
+ Compiling icu_provider v2.1.1
+ Compiling inotify-sys v0.1.8
+ Compiling tower-service v0.3.3
+ Compiling futures-util v0.3.31
+ Compiling icu_normalizer v2.1.1
+ Compiling icu_properties v2.1.2
+ Compiling anstyle-parse v1.0.0
+ Compiling indexmap v2.14.0
+ Compiling wast v35.0.2
+ Compiling tokio-util v0.7.15
+ Compiling rand v0.8.5
+ Compiling rand_core v0.9.0
+ Compiling block-buffer v0.10.4
+ Compiling crypto-common v0.1.6
+ Compiling rustls-pki-types v1.12.0
+ Compiling terminal_size v0.4.4
+ Compiling hybrid-array v0.4.13
+ Compiling num-traits v0.2.15
+ Compiling crossbeam-epoch v0.9.8
+ Compiling libm v0.2.15
+ Compiling atomic-waker v1.1.2
+ Compiling serde_json v1.0.140
+ Compiling colorchoice v1.0.5
+ Compiling zerocopy v0.7.34
+ Compiling anstyle v1.0.14
+ Compiling is_terminal_polyfill v1.70.2
+ Compiling anstyle-query v1.1.5
+ Compiling ryu v1.0.10
+ Compiling cap-std v3.4.4
+ Compiling syn v1.0.96
+ Compiling mime v0.3.17
+ Compiling anstream v1.0.0
+ Compiling witx v0.9.1
+ Compiling h2 v0.4.15
+ Compiling digest v0.10.7
+ Compiling rand_chacha v0.9.0
+ Compiling idna_adapter v1.2.1
+ Compiling pin-project-internal v1.1.3
+ Compiling libsqlite3-sys v0.27.0
+ Compiling concurrent-queue v2.2.0
+ Compiling either v1.17.0
+ Compiling wiggle-macro v36.0.12
+ Compiling clap_lex v1.1.0
+ Compiling cfg_aliases v0.2.2
+ Compiling crossbeam-queue v0.3.5
+ Compiling httpdate v1.0.3
+ Compiling lazy_static v1.4.0
+ Compiling cpufeatures v0.2.2
+ Compiling utf8_iter v1.0.4
+ Compiling signal-hook v0.3.18
+ Compiling curl v0.4.44
+ Compiling owo-colors v4.3.0
+ Compiling same-file v1.0.6
+ Compiling event-listener v2.5.2
+ Compiling tower-layer v0.3.3
+ Compiling strsim v0.11.1
+ Compiling async-channel v1.8.0
+ Compiling walkdir v2.5.0
+ Compiling wiggle-generate v36.0.12
+ Compiling idna v1.1.0
+ Compiling clap_builder v4.6.2
+ Compiling pin-project v1.1.3
+ Compiling sha1 v0.10.6
+ Compiling nix v0.30.1
+ Compiling itertools v0.10.5
+ Compiling parking_lot v0.12.1
+ Compiling inotify v0.11.4
+ Compiling rand v0.9.0
+ Compiling hashbrown v0.14.5
+ Compiling block-buffer v0.12.1
+ Compiling crypto-common v0.2.2
+ Compiling miette-derive v5.8.0
+ Compiling async-trait v0.1.80
+ Compiling hyper v1.11.0
+ Compiling clap_derive v4.6.4
+ Compiling socket2 v0.4.9
+ Compiling dirs-sys v0.3.7
+ Compiling aho-corasick v1.0.1
+ Compiling notify-types v2.1.0
+ Compiling base64 v0.22.1
+ Compiling arc-swap v1.5.0
+ Compiling regex-syntax v0.7.1
+ Compiling wasmparser v0.239.0
+ Compiling isahc v1.7.2
+ Compiling is_ci v1.2.0
+ Compiling minimal-lexical v0.2.1
+ Compiling rustls v0.23.27
+ Compiling openssl-probe v0.1.5
+ Compiling unicode-linebreak v0.1.5
+ Compiling utf-8 v0.7.6
+ Compiling fastrand v1.7.0
+ Compiling waker-fn v1.1.0
+ Compiling option-ext v0.2.0
+ Compiling cap-fs-ext v3.4.4
+ Compiling unicode-width v0.2.2
+ Compiling time-core v0.1.8
+ Compiling names v0.14.0
+ Compiling untrusted v0.9.0
+ Compiling system-interface v0.27.2
+ Compiling data-encoding v2.9.0
+ Compiling crc32fast v1.5.0
+ Compiling powerfmt v0.2.0
+ Compiling num-conv v0.2.0
+ Compiling sync_wrapper v1.0.2
+ Compiling parking v2.0.0
+ Compiling time-macros v0.2.27
+ Compiling tungstenite v0.28.0
+ Compiling futures-lite v1.13.0
+ Compiling deranged v0.5.8
+ Compiling regex v1.8.1
+ Compiling textwrap v0.16.2
+ Compiling dirs-sys v0.5.0
+ Compiling nom v7.1.1
+ Compiling supports-color v3.0.2
+ Compiling clap v4.6.4
+ Compiling notify v8.2.0
+ Compiling derivative v2.2.0
+ Compiling hyper-util v0.1.20
+ Compiling dirs v4.0.0
+ Compiling miette v5.8.0
+ Compiling digest v0.11.3
+ Compiling wasmi_core v1.1.0
+ Compiling hashlink v0.8.4
+ Compiling prost-derive v0.12.6
+ Compiling chrono v0.4.39
+ Compiling url v2.5.4
+ Compiling crossbeam-deque v0.8.1
+ Compiling tracing-futures v0.2.5
+ Compiling sluice v0.5.5
+ Compiling http-body-util v0.1.3
+ Compiling backtrace-ext v0.2.1
+ Compiling miette-derive v7.6.0
+ Compiling crossbeam-channel v0.5.4
+ Compiling polling v2.2.0
+ Compiling thread-id v4.0.0
+ Compiling include_dir_macros v0.7.3
+ Compiling http v0.2.9
+ Compiling cookie v0.18.1
+ Compiling vte v0.14.1
+ Compiling fs-err v3.1.0
+ Compiling encoding_rs v0.8.34
+ Compiling cpufeatures v0.3.0
+ Compiling subtle v2.6.1
+ Compiling arrayvec v0.7.6
+ Compiling fallible-streaming-iterator v0.1.9
+ Compiling castaway v0.1.2
+ Compiling supports-hyperlinks v3.2.0
+ Compiling supports-unicode v3.0.0
+ Compiling fallible-iterator v0.3.0
+ Compiling fastrand v2.1.0
+ Compiling log-mdc v0.1.0
+ Compiling doctest-file v1.0.0
+ Compiling lev_distance v0.1.1
+ Compiling time v0.3.47
+ Compiling interprocess v2.3.1
+ Compiling suggest v0.5.1
+ Compiling tempfile v3.10.1
+ Compiling log4rs v1.2.0
+ Compiling miette v7.6.0
+ Compiling sha2 v0.11.0
+ Compiling strip-ansi-escapes v0.2.1
+ Compiling include_dir v0.7.3
+ Compiling crossbeam v0.8.1
+ Compiling axum-core v0.5.6
+ Compiling prost v0.12.6
+ Compiling wiggle v36.0.12
+ Compiling wasmi_ir v1.1.0
+ Compiling kdl v4.5.0
+ Compiling shellexpand v3.0.0
+ Compiling clap_complete v4.6.8
+ Compiling directories v6.0.0
+ Compiling tokio-tungstenite v0.28.0
+ Compiling tower v0.5.2
+ Compiling serde_urlencoded v0.7.1
+ Compiling cap-rand v3.4.4
+ Compiling tokio-stream v0.1.18
+ Compiling uuid v1.16.0
+ Compiling serde_path_to_error v0.1.17
+ Compiling cap-time-ext v3.4.4
+ Compiling strum_macros v0.28.0
+ Compiling terminal_size v0.1.17
+ Compiling litrs v1.0.0
+ Compiling colorsys v0.6.5
+ Compiling foldhash v0.2.0
+ Compiling strum v0.28.0
+ Compiling matchit v0.8.4
+ Compiling wasmi_collections v1.1.0
+ Compiling spin v0.9.8
+ Compiling humantime v2.1.0
+ Compiling colored v3.1.1
+ Compiling axum v0.8.8
+ Compiling document-features v0.2.12
+ Compiling hashbrown v0.16.1
+ Compiling console v0.15.0
+ Compiling wasi-common v36.0.12
+ Compiling flate2 v1.1.9
+ Compiling sixel-tokenizer v0.1.0
+ Compiling signal-hook-mio v0.2.5
+ Compiling futures-executor v0.3.31
+ Compiling num_cpus v1.17.0
+ Compiling daemonix v0.1.0
+ Compiling fdeflate v0.3.7
+ Compiling wasmi v1.1.0
+ Compiling bitflags v1.3.2
+ Compiling shell-words v1.1.0
+ Compiling openssl-probe v0.2.1
+ Compiling file-id v0.2.2
+ Compiling rustls-native-certs v0.8.3
+ Compiling notify-debouncer-full v0.5.0
+ Compiling dialoguer v0.11.0
+ Compiling png v0.17.16
+ Compiling futures v0.3.31
+ Compiling crossterm v0.29.0
+ Compiling sixel-image v0.2.1
+ Compiling kasuari v0.4.12
+ Compiling axum-extra v0.12.5
+ Compiling vte v0.15.0
+ Compiling tower-http v0.6.4
+ Compiling rustls-pemfile v2.2.0
+ Compiling sysinfo v0.39.6
+ Compiling close_fds v0.3.2
+ Compiling urlencoding v2.1.3
+ Compiling highway v1.2.0
+ Compiling zellij v0.45.0 (/home/user/lol/zellij)
+ Compiling ansi_term v0.12.1
+ Compiling byteorder v1.4.3
+ Compiling wasmi_wasi v1.1.0
+ Compiling rustls-webpki v0.103.13
+ Compiling tokio-rustls v0.26.2
+ Compiling axum-server v0.8.0
+ Compiling rusqlite v0.30.0
+ Compiling zellij-utils v0.45.0 (/home/user/lol/zellij/zellij-utils)
+warning: use of deprecated associated function `plugin_api::generated_api::api::action::ActionName::from_i32`: Use the TryFrom<i32> implementation instead
+ --> zellij-utils/src/plugin_api/action.rs:105:35
+ |
+105 | match ProtobufActionName::from_i32(protobuf_action.name) {
+ | ^^^^^^^^
+ |
+ = note: `#[warn(deprecated)]` on by default
+
+warning: use of deprecated associated function `plugin_api::generated_api::api::input_mode::InputMode::from_i32`: Use the TryFrom<i32> implementation instead
+ --> zellij-utils/src/plugin_api/action.rs:134:44
+ |
+134 | ProtobufInputMode::from_i32(switch_to_mode_payload.input_mode)
+ | ^^^^^^^^
+
+warning: use of deprecated associated function `plugin_api::generated_api::api::input_mode::InputMode::from_i32`: Use the TryFrom<i32> implementation instead
+ --> zellij-utils/src/plugin_api/action.rs:147:48
+ |
+147 | ... ProtobufInputMode::from_i32(switch_to_mode_payload.input_mode)
+ | ^^^^^^^^
+
+warning: use of deprecated associated function `plugin_api::generated_api::api::resize::ResizeDirection::from_i32`: Use the TryFrom<i32> implementation instead
+ --> zellij-utils/src/plugin_api/action.rs:184:50
+ |
+184 | ProtobufResizeDirection::from_i32(move_focus_payload)
+ | ^^^^^^^^
+
+warning: use of deprecated associated function `plugin_api::generated_api::api::resize::ResizeDirection::from_i32`: Use the TryFrom<i32> implementation instead
+ --> zellij-utils/src/plugin_api/action.rs:194:50
+ |
+194 | ProtobufResizeDirection::from_i32(move_focus_or_tab_payload)
+ | ^^^^^^^^
+
+warning: use of deprecated associated function `plugin_api::generated_api::api::resize::ResizeDirection::from_i32`: Use the TryFrom<i32> implementation instead
+ --> zellij-utils/src/plugin_api/action.rs:205:64
+ |
+205 | .and_then(|d| ProtobufResizeDirection::from_i32(d))
+ | ^^^^^^^^
+
+warning: use of deprecated associated function `plugin_api::generated_api::api::pane_frame_style::PaneFrameStyle::from_i32`: Use the TryFrom<i32> implementation instead
+ --> zellij-utils/src/plugin_api/action.rs:313:51
+ |
+313 | match ProtobufPaneFrameStyle::from_i32(payload.pane_frame_style) {
+ | ^^^^^^^^
+
+warning: use of deprecated associated function `plugin_api::generated_api::api::resize::ResizeDirection::from_i32`: Use the TryFrom<i32> implementation instead
+ --> zellij-utils/src/plugin_api/action.rs:332:64
+ |
+332 | .and_then(|d| ProtobufResizeDirection::from_i32(d))
+ | ^^^^^^^^
+
+warning: use of deprecated associated function `plugin_api::generated_api::api::resize::ResizeDirection::from_i32`: Use the TryFrom<i32> implementation instead
+ --> zellij-utils/src/plugin_api/action.rs:350:64
+ |
+350 | .and_then(|d| ProtobufResizeDirection::from_i32(d))
+ | ^^^^^^^^
+
+warning: use of deprecated associated function `plugin_api::generated_api::api::resize::ResizeDirection::from_i32`: Use the TryFrom<i32> implementation instead
+ --> zellij-utils/src/plugin_api/action.rs:401:64
+ |
+401 | .and_then(|d| ProtobufResizeDirection::from_i32(d))
+ | ^^^^^^^^
+
+warning: use of deprecated associated function `plugin_api::generated_api::api::action::UnblockCondition::from_i32`: Use the TryFrom<i32> implementation instead
+ --> zellij-utils/src/plugin_api/action.rs:541:70
+ |
+541 | ... .and_then(|uc| ProtobufUnblockCondition::from_i32(uc))
+ | ^^^^^^^^
+
+warning: use of deprecated associated function `plugin_api::generated_api::api::action::MoveTabDirection::from_i32`: Use the TryFrom<i32> implementation instead
+ --> zellij-utils/src/plugin_api/action.rs:621:74
+ |
+621 | let direction: Direction = ProtobufMoveTabDirection::from_i32(move_tab_payload)
+ | ^^^^^^^^
+
+warning: use of deprecated associated function `plugin_api::generated_api::api::action::SearchDirection::from_i32`: Use the TryFrom<i32> implementation instead
+ --> zellij-utils/src/plugin_api/action.rs:788:57
+ |
+788 | direction: ProtobufSearchDirection::from_i32(search_direction)
+ | ^^^^^^^^
+
+warning: use of deprecated associated function `plugin_api::generated_api::api::action::SearchOption::from_i32`: Use the TryFrom<i32> implementation instead
+ --> zellij-utils/src/plugin_api/action.rs:798:59
+ |
+798 | ... option: ProtobufSearchOption::from_i32(search_option)
+ | ^^^^^^^^
+
+warning: use of deprecated associated function `plugin_api::generated_api::api::action::UnblockCondition::from_i32`: Use the TryFrom<i32> implementation instead
+ --> zellij-utils/src/plugin_api/action.rs:1054:66
+ |
+1054 | .and_then(|uc| ProtobufUnblockCondition::from_i32(uc))
+ | ^^^^^^^^
+
+warning: use of deprecated associated function `plugin_api::generated_api::api::resize::ResizeDirection::from_i32`: Use the TryFrom<i32> implementation instead
+ --> zellij-utils/src/plugin_api/action.rs:2108:52
+ |
+2108 | .and_then(|d| ProtobufResizeDirection::from_i32(d))
+ | ^^^^^^^^
+
+warning: use of deprecated associated function `plugin_api::generated_api::api::action::BareKey::from_i32`: Use the TryFrom<i32> implementation instead
+ --> zellij-utils/src/plugin_api/action.rs:2262:47
+ |
+2262 | let bare_key = match ProtobufBareKey::from_i32(protobuf_key.bare_key) {
+ | ^^^^^^^^
+
+warning: use of deprecated associated function `plugin_api::generated_api::api::action::KeyModifier::from_i32`: Use the TryFrom<i32> implementation instead
+ --> zellij-utils/src/plugin_api/action.rs:2311:59
+ |
+2311 | let key_modifier = match ProtobufKeyModifier::from_i32(modifier) {
+ | ^^^^^^^^
+
+warning: use of deprecated associated function `plugin_api::generated_api::api::action::UnblockCondition::from_i32`: Use the TryFrom<i32> implementation instead
+ --> zellij-utils/src/plugin_api/action.rs:2413:41
+ |
+2413 | match ProtobufUnblockCondition::from_i32(value) {
+ | ^^^^^^^^
+
+warning: use of deprecated associated function `plugin_api::generated_api::api::resize::ResizeDirection::from_i32`: Use the TryFrom<i32> implementation instead
+ --> zellij-utils/src/plugin_api/action.rs:2542:60
+ |
+2542 | .and_then(|d| ProtobufResizeDirection::from_i32(d))
+ | ^^^^^^^^
+
+warning: use of deprecated associated function `plugin_api::generated_api::api::action::LayoutConstraint::from_i32`: Use the TryFrom<i32> implementation instead
+ --> zellij-utils/src/plugin_api/action.rs:2708:57
+ |
+2708 | let constraint_type = ProtobufLayoutConstraint::from_i32(protobuf.constraint_type)
+ | ^^^^^^^^
+
+warning: use of deprecated associated function `plugin_api::generated_api::api::action::SplitDirection::from_i32`: Use the TryFrom<i32> implementation instead
+ --> zellij-utils/src/plugin_api/action.rs:3077:37
+ |
+3077 | ProtobufSplitDirection::from_i32(protobuf.children_split_direction)
+ | ^^^^^^^^
+
+warning: use of deprecated associated function `plugin_api::generated_api::api::event::EventType::from_i32`: Use the TryFrom<i32> implementation instead
+ --> zellij-utils/src/plugin_api/event.rs:65:34
+ |
+65 | match ProtobufEventType::from_i32(protobuf_event.name) {
+ | ^^^^^^^^
+
+warning: use of deprecated associated function `plugin_api::generated_api::api::event::CopyDestination::from_i32`: Use the TryFrom<i32> implementation instead
+ --> zellij-utils/src/plugin_api/event.rs:124:50
+ |
+124 | ProtobufCopyDestination::from_i32(copy_to_clipboard)
+ | ^^^^^^^^
+
+warning: use of deprecated associated function `plugin_api::generated_api::api::input_mode::InputMode::from_i32`: Use the TryFrom<i32> implementation instead
+ --> zellij-utils/src/plugin_api/event.rs:567:52
+ |
+567 | ... ProtobufInputMode::from_i32(imk.mode)?.try_into().ok()?;
+ | ^^^^^^^^
+
+warning: use of deprecated associated function `plugin_api::generated_api::api::event::HostTerminalThemeIndication::from_i32`: Use the TryFrom<i32> implementation instead
+ --> zellij-utils/src/plugin_api/event.rs:590:69
+ |
+590 | let mode = ProtobufHostTerminalThemeIndication::from_i32(p.mode)
+ | ^^^^^^^^
+
+warning: use of deprecated associated function `plugin_api::generated_api::api::event::MouseEventName::from_i32`: Use the TryFrom<i32> implementation instead
+ --> zellij-utils/src/plugin_api/event.rs:1653:31
+ |
+1653 | match MouseEventName::from_i32(mouse_event_payload.mouse_event_name) {
+ | ^^^^^^^^
+
+warning: use of deprecated associated function `plugin_api::generated_api::api::input_mode::InputMode::from_i32`: Use the TryFrom<i32> implementation instead
+ --> zellij-utils/src/plugin_api/event.rs:1956:32
+ |
+1956 | ProtobufInputMode::from_i32(protobuf_mode_update_payload.current_mode)
+ | ^^^^^^^^
+
+warning: use of deprecated associated function `plugin_api::generated_api::api::input_mode::InputMode::from_i32`: Use the TryFrom<i32> implementation instead
+ --> zellij-utils/src/plugin_api/event.rs:1961:48
+ |
+1961 | .and_then(|b_m| ProtobufInputMode::from_i32(b_m)?.try_into().ok());
+ | ^^^^^^^^
+
+warning: use of deprecated associated function `plugin_api::generated_api::api::input_mode::InputMode::from_i32`: Use the TryFrom<i32> implementation instead
+ --> zellij-utils/src/plugin_api/event.rs:1967:68
+ |
+1967 | let input_mode: InputMode = ProtobufInputMode::from_i32(k.mode)
+ | ^^^^^^^^
+
+warning: use of deprecated associated function `plugin_api::generated_api::api::event::WebSharing::from_i32`: Use the TryFrom<i32> implementation instead
+ --> zellij-utils/src/plugin_api/event.rs:1998:47
+ |
+1998 | .and_then(|w| ProtobufWebSharing::from_i32(w))
+ | ^^^^^^^^
+
+warning: use of deprecated associated function `plugin_api::generated_api::api::event::PaneFrameStyle::from_i32`: Use the TryFrom<i32> implementation instead
+ --> zellij-utils/src/plugin_api/event.rs:2020:51
+ |
+2020 | .and_then(|p| ProtobufPaneFrameStyle::from_i32(p))
+ | ^^^^^^^^
+
+warning: use of deprecated associated function `plugin_api::generated_api::api::event::EventType::from_i32`: Use the TryFrom<i32> implementation instead
+ --> zellij-utils/src/plugin_api/event.rs:2165:48
+ |
+2165 | .filter_map(|i| ProtobufEventType::from_i32(*i))
+ | ^^^^^^^^
+
+warning: use of deprecated associated function `plugin_api::generated_api::api::event::PaneType::from_i32`: Use the TryFrom<i32> implementation instead
+ --> zellij-utils/src/plugin_api/event.rs:3111:33
+ |
+3111 | match ProtobufPaneType::from_i32(protobuf_pane_id.pane_type) {
+ | ^^^^^^^^
+
+warning: use of deprecated associated function `plugin_api::generated_api::api::event::WebServerStatusIndication::from_i32`: Use the TryFrom<i32> implementation instead
+ --> zellij-utils/src/plugin_api/event.rs:3203:42
+ |
+3203 | match WebServerStatusIndication::from_i32(
+ | ^^^^^^^^
+
+warning: use of deprecated associated function `plugin_api::generated_api::api::input_mode::InputMode::from_i32`: Use the TryFrom<i32> implementation instead
+ --> zellij-utils/src/plugin_api/input_mode.rs:55:28
+ |
+55 | ProtobufInputMode::from_i32(protobuf_input_mode.input_mode)
+ | ^^^^^^^^
+
+warning: use of deprecated associated function `plugin_api::generated_api::api::key::key::NamedKey::from_i32`: Use the TryFrom<i32> implementation instead
+ --> zellij-utils/src/plugin_api/key.rs:19:45
+ |
+19 | let key = ProtobufNamedKey::from_i32(key_index).ok_or("invalid_key")?;
+ | ^^^^^^^^
+
+warning: use of deprecated associated function `plugin_api::generated_api::api::key::key::KeyModifier::from_i32`: Use the TryFrom<i32> implementation instead
+ --> zellij-utils/src/plugin_api/key.rs:90:38
+ |
+90 | ProtobufKeyModifier::from_i32(main_modifier)
+ | ^^^^^^^^
+
+warning: use of deprecated associated function `plugin_api::generated_api::api::key::key::KeyModifier::from_i32`: Use the TryFrom<i32> implementation instead
+ --> zellij-utils/src/plugin_api/key.rs:97:38
+ |
+97 | ProtobufKeyModifier::from_i32(key_modifier)
+ | ^^^^^^^^
+
+warning: use of deprecated associated function `plugin_api::generated_api::api::pipe_message::PipeSource::from_i32`: Use the TryFrom<i32> implementation instead
+ --> zellij-utils/src/plugin_api/pipe_message.rs:12:33
+ |
+12 | ProtobufPipeSource::from_i32(protobuf_pipe_message.source),
+ | ^^^^^^^^
+
+warning: use of deprecated associated function `plugin_api::generated_api::api::plugin_command::FixedOrPercent::from_i32`: Use the TryFrom<i32> implementation instead
+ --> zellij-utils/src/plugin_api/plugin_command.rs:176:61
+ |
+176 | .and_then(|x| match ProtobufFixedOrPercent::from_i32(x.r#type) {
+ | ^^^^^^^^
+
+warning: use of deprecated associated function `plugin_api::generated_api::api::plugin_command::FixedOrPercent::from_i32`: Use the TryFrom<i32> implementation instead
+ --> zellij-utils/src/plugin_api/plugin_command.rs:187:61
+ |
+187 | .and_then(|y| match ProtobufFixedOrPercent::from_i32(y.r#type) {
+ | ^^^^^^^^
+
+warning: use of deprecated associated function `plugin_api::generated_api::api::plugin_command::FixedOrPercent::from_i32`: Use the TryFrom<i32> implementation instead
+ --> zellij-utils/src/plugin_api/plugin_command.rs:197:47
+ |
+197 | match ProtobufFixedOrPercent::from_i32(width.r#type) {
+ | ^^^^^^^^
+
+warning: use of deprecated associated function `plugin_api::generated_api::api::plugin_command::FixedOrPercent::from_i32`: Use the TryFrom<i32> implementation instead
+ --> zellij-utils/src/plugin_api/plugin_command.rs:208:47
+ |
+208 | match ProtobufFixedOrPercent::from_i32(height.r#type) {
+ | ^^^^^^^^
+
+warning: use of deprecated associated function `plugin_api::generated_api::api::plugin_command::PaneType::from_i32`: Use the TryFrom<i32> implementation instead
+ --> zellij-utils/src/plugin_api/plugin_command.rs:302:33
+ |
+302 | match ProtobufPaneType::from_i32(protobuf_pane_id.pane_type) {
+ | ^^^^^^^^
+
+warning: use of deprecated associated function `plugin_api::generated_api::api::input_mode::InputMode::from_i32`: Use the TryFrom<i32> implementation instead
+ --> zellij-utils/src/plugin_api/plugin_command.rs:661:28
+ |
+661 | ProtobufInputMode::from_i32(key_to_rebind.input_mode)?
+ | ^^^^^^^^
+
+warning: use of deprecated associated function `plugin_api::generated_api::api::input_mode::InputMode::from_i32`: Use the TryFrom<i32> implementation instead
+ --> zellij-utils/src/plugin_api/plugin_command.rs:677:28
+ |
+677 | ProtobufInputMode::from_i32(key_to_unbind.input_mode)?
+ | ^^^^^^^^
+
+warning: use of deprecated associated function `plugin_api::generated_api::api::plugin_command::CommandName::from_i32`: Use the TryFrom<i32> implementation instead
+ --> zellij-utils/src/plugin_api/plugin_command.rs:687:28
+ |
+687 | match CommandName::from_i32(protobuf_plugin_command.name) {
+ | ^^^^^^^^
+
+warning: use of deprecated associated function `plugin_api::generated_api::api::input_mode::InputMode::from_i32`: Use the TryFrom<i32> implementation instead
+ --> zellij-utils/src/plugin_api/plugin_command.rs:897:46
+ |
+897 | match ProtobufInputMode::from_i32(switch_to_mode_payload.input_mode) {
+ | ^^^^^^^^
+
+warning: use of deprecated associated function `plugin_api::generated_api::api::pane_frame_style::PaneFrameStyle::from_i32`: Use the TryFrom<i32> implementation instead
+ --> zellij-utils/src/plugin_api/plugin_command.rs:1133:51
+ |
+1133 | match ProtobufPaneFrameStyle::from_i32(payload.pane_frame_style) {
+ | ^^^^^^^^
+
+warning: use of deprecated associated function `plugin_api::generated_api::api::plugin_permission::PermissionType::from_i32`: Use the TryFrom<i32> implementation instead
+ --> zellij-utils/src/plugin_api/plugin_command.rs:1294:69
+ |
+1294 | ... .filter_map(|p| ProtobufPermissionType::from_i32(*p))
+ | ^^^^^^^^
+
+warning: use of deprecated associated function `plugin_api::generated_api::api::plugin_command::HttpVerb::from_i32`: Use the TryFrom<i32> implementation instead
+ --> zellij-utils/src/plugin_api/plugin_command.rs:1402:56
+ |
+1402 | let verb = match ProtobufHttpVerb::from_i32(web_request_payload.verb) {
+ | ^^^^^^^^
+
+warning: use of deprecated associated function `plugin_api::generated_api::api::resize::ResizeAction::from_i32`: Use the TryFrom<i32> implementation instead
+ --> zellij-utils/src/plugin_api/resize.rs:15:29
+ |
+15 | match ResizeAction::from_i32(protobuf_resize.resize_action) {
+ | ^^^^^^^^
+
+warning: use of deprecated associated function `plugin_api::generated_api::api::resize::ResizeDirection::from_i32`: Use the TryFrom<i32> implementation instead
+ --> zellij-utils/src/plugin_api/resize.rs:41:44
+ |
+41 | .and_then(|r| ResizeDirection::from_i32(r))
+ | ^^^^^^^^
+
+warning: use of deprecated associated function `plugin_api::generated_api::api::resize::ResizeAction::from_i32`: Use the TryFrom<i32> implementation instead
+ --> zellij-utils/src/plugin_api/resize.rs:49:42
+ |
+49 | let resize = match ResizeAction::from_i32(protobuf_resize.resize_action) {
+ | ^^^^^^^^
+
+warning: use of deprecated associated function `plugin_api::generated_api::api::resize::ResizeDirection::from_i32`: Use the TryFrom<i32> implementation instead
+ --> zellij-utils/src/plugin_api/resize.rs:84:32
+ |
+84 | match ResizeDirection::from_i32(protobuf_move_direction.direction) {
+ | ^^^^^^^^
+
+warning: use of deprecated associated function `plugin_api::generated_api::api::style::ThemeHue::from_i32`: Use the TryFrom<i32> implementation instead
+ --> zellij-utils/src/plugin_api/style.rs:208:42
+ |
+208 | theme_hue: ProtobufThemeHue::from_i32(protobuf_palette.theme_hue)
+ | ^^^^^^^^
+
+warning: use of deprecated associated function `plugin_api::generated_api::api::style::ColorType::from_i32`: Use the TryFrom<i32> implementation instead
+ --> zellij-utils/src/plugin_api/style.rs:318:34
+ |
+318 | match ProtobufColorType::from_i32(protobuf_color.color_type) {
+ | ^^^^^^^^
+
+warning: use of deprecated associated function `client_server_contract::client_server_contract::BareKey::from_i32`: Use the TryFrom<i32> implementation instead
+ --> zellij-utils/src/ipc/enum_conversions.rs:127:23
+ |
+127 | ProtoBareKey::from_i32(value).ok_or_else(|| anyhow!("Invalid BareKey value: {}", value))?;
+ | ^^^^^^^^
+
+warning: use of deprecated associated function `client_server_contract::client_server_contract::KeyModifier::from_i32`: Use the TryFrom<i32> implementation instead
+ --> zellij-utils/src/ipc/enum_conversions.rs:136:44
+ |
+136 | let proto_modifier = ProtoKeyModifier::from_i32(value)
+ | ^^^^^^^^
+
+warning: use of deprecated associated function `client_server_contract::client_server_contract::ResizeCause::from_i32`: Use the TryFrom<i32> implementation instead
+ --> zellij-utils/src/ipc/protobuf_conversion.rs:217:47
+ |
+217 | let cause = ProtoResizeCause::from_i32(resize.cause)
+ | ^^^^^^^^
+
+warning: use of deprecated associated function `client_server_contract::client_server_contract::HostTerminalThemeIndication::from_i32`: Use the TryFrom<i32> implementation instead
+ --> zellij-utils/src/ipc/protobuf_conversion.rs:309:68
+ |
+309 | let proto_mode = ProtoHostTerminalThemeIndication::from_i32(msg.mode)
+ | ^^^^^^^^
+
+warning: use of deprecated associated function `client_server_contract::client_server_contract::ExitReason::from_i32`: Use the TryFrom<i32> implementation instead
+ --> zellij-utils/src/ipc/protobuf_conversion.rs:444:58
+ |
+444 | let proto_exit_reason = ProtoExitReason::from_i32(exit.exit_reason)
+ | ^^^^^^^^
+
+warning: use of deprecated associated function `client_server_contract::client_server_contract::OnForceClose::from_i32`: Use the TryFrom<i32> implementation instead
+ --> zellij-utils/src/ipc/protobuf_conversion.rs:864:51
+ |
+864 | .map(|o| match ProtoOnForceClose::from_i32(o) {
+ | ^^^^^^^^
+
+warning: use of deprecated associated function `client_server_contract::client_server_contract::Clipboard::from_i32`: Use the TryFrom<i32> implementation instead
+ --> zellij-utils/src/ipc/protobuf_conversion.rs:876:48
+ |
+876 | .map(|c| match ProtoClipboard::from_i32(c) {
+ | ^^^^^^^^
+
+warning: use of deprecated associated function `client_server_contract::client_server_contract::WebSharing::from_i32`: Use the TryFrom<i32> implementation instead
+ --> zellij-utils/src/ipc/protobuf_conversion.rs:901:49
+ |
+901 | .map(|w| match ProtoWebSharing::from_i32(w) {
+ | ^^^^^^^^
+
+warning: use of deprecated associated function `client_server_contract::client_server_contract::MobileLayout::from_i32`: Use the TryFrom<i32> implementation instead
+ --> zellij-utils/src/ipc/protobuf_conversion.rs:931:51
+ |
+931 | .map(|m| match ProtoMobileLayout::from_i32(m) {
+ | ^^^^^^^^
+
+warning: use of deprecated associated function `client_server_contract::client_server_contract::NestedSessionHandling::from_i32`: Use the TryFrom<i32> implementation instead
+ --> zellij-utils/src/ipc/protobuf_conversion.rs:948:60
+ |
+948 | .map(|n| match ProtoNestedSessionHandling::from_i32(n) {
+ | ^^^^^^^^
+
+warning: use of deprecated associated function `client_server_contract::client_server_contract::InputMode::from_i32`: Use the TryFrom<i32> implementation instead
+ --> zellij-utils/src/ipc/protobuf_conversion.rs:3307:27
+ |
+3307 | match ProtoInputMode::from_i32(i) {
+ | ^^^^^^^^
+
+warning: use of deprecated associated function `nested_session_contract::nested_session_contract::NestedCapability::from_i32`: Use the TryFrom<i32> implementation instead
+ --> zellij-utils/src/nested_session.rs:107:57
+ |
+107 | |capability| match proto::NestedCapability::from_i32(*capability) {
+ | ^^^^^^^^
+
+warning: use of deprecated associated function `nested_session_contract::nested_session_contract::NestedDirection::from_i32`: Use the TryFrom<i32> implementation instead
+ --> zellij-utils/src/nested_session.rs:128:35
+ |
+128 | match proto::NestedDirection::from_i32(direction) {
+ | ^^^^^^^^
+
+ Compiling zellij-client v0.45.0 (/home/user/lol/zellij/zellij-client)
+ Compiling zellij-server v0.45.0 (/home/user/lol/zellij/zellij-server)
+warning: field `stacked_pane_list` is never read
+ --> zellij-server/src/panes/tiled_panes/mod.rs:76:5
+ |
+67 | pub struct TiledPanes {
+ | ---------- field in this struct
+...
+76 | stacked_pane_list: Rc<RefCell<bool>>,
+ | ^^^^^^^^^^^^^^^^^
+ |
+ = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
+
+warning: `zellij-utils` (lib) generated 71 warnings
+warning: `zellij-server` (lib) generated 1 warning
+ Finished `fastdev` profile [optimized] target(s) in 2m 29s
diff --git a/.fastfeedback/fastdev-cold.pid b/.fastfeedback/fastdev-cold.pid
new file mode 100644
index 00000000..6d2b7cb5
--- /dev/null
+++ b/.fastfeedback/fastdev-cold.pid
@@ -0,0 +1 @@
+223126
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"]