Files
qbz/scripts/slint-dev.sh
T
vicrodh ec4b10fcb6 chore(slint): faster dev builds — mold linker + debug fast script
Add scripts/slint-dev-fast.sh: a DEBUG (non-release) build for quick visual
iteration — opt-level 0 so the giant Slint-generated module skips the heavy
LLVM passes, plus the mold linker, no debuginfo, and the nightly parallel
frontend. It builds into target/debug, separate from the release cache.

slint-dev.sh (release, kept for perf measurement) gains the mold linker and
bumps the frontend threads 8 -> 16 — both only cut compile time, the optimised
binary is unchanged.

cc
2026-06-02 11:32:01 -06:00

26 lines
1.4 KiB
Bash
Executable File

#!/usr/bin/env bash
# QBZ Slint — standard dev build/run.
#
# Builds + runs qbz-slint in RELEASE mode (release runtime performance is
# the whole reason we moved from Tauri to Slint — we always test at release
# perf so a regression never hides behind "it's just dev mode"), but uses
# the nightly rustc PARALLEL FRONTEND (-Z threads) so the serial compile of
# the giant Slint-generated module is split across cores. The produced
# binary is the SAME optimized release binary as `cargo build --release`;
# only compile time improves. We deliberately do NOT use cranelift — it
# would lower runtime performance.
#
# RUSTFLAGS must re-list the AES-NI/SSSE3 features from .cargo/config.toml,
# because setting RUSTFLAGS *overrides* (does not merge) the config's
# [target.'cfg(target_arch = "x86_64")'] rustflags. Keep these in sync with
# .cargo/config.toml (the AES-NI path keeps offline CMAF decrypt fast).
#
# Usage: ./scripts/slint-dev.sh [extra cargo args]
# THREADS=16 ./scripts/slint-dev.sh # override frontend threads
set -euo pipefail
cd "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/.."
# `mold` (faster linker) + more frontend threads only cut COMPILE time — they
# don't change the optimised binary, so release perf measurements stay valid.
export RUSTFLAGS="-C target-feature=+aes,+ssse3 -C link-arg=-fuse-ld=mold -Z threads=${THREADS:-16}"
exec cargo +nightly run --release --manifest-path crates/Cargo.toml -p qbz-slint "$@"