rust-build-times
Rust build time optimization skill for reducing slow compilation. Use when using cargo-timings to profile builds, configuring sccache for Rust, using the Cranelift backend, splitting workspaces for parallelism, choosing between thin LTO and fat LTO, or using the mold linker with Rust. Activates on queries about slow Rust compilation, cargo-timings, sccache Rust, cranelift backend, Rust workspace splitting, LTO tradeoffs, or mold linker with Rust.
What this skill does
# Rust Build Times ## Purpose Guide agents through diagnosing and improving Rust compilation speed: `cargo-timings` for build profiling, `sccache` for caching, the Cranelift codegen backend for faster dev builds, workspace crate splitting, LTO configuration trade-offs, and fast linkers (mold/lld). ## Triggers - "My Rust project takes too long to compile" - "How do I profile which crates are slow to build?" - "How do I set up sccache for Rust?" - "What is the Cranelift backend and how does it help?" - "Should I use thin LTO or fat LTO?" - "How do I use the mold linker with Rust?" ## Workflow ### 1. Diagnose with cargo-timings ```bash # Build with timing report cargo build --timings # Opens build/cargo-timings/cargo-timing.html # Shows: crate compilation timeline, parallelism, bottlenecks # For release builds cargo build --release --timings # Key things to look for in the timing report: # - Long sequential chains (no parallelism) # - Individual crates taking > 10s (candidates for optimization) # - Proc-macro crates blocking everything downstream ``` ```bash # cargo-llvm-lines — count LLVM IR lines per function (monomorphization) cargo install cargo-llvm-lines cargo llvm-lines --release | head -20 # Shows functions generating the most LLVM IR (template explosion) ``` ### 2. sccache — compilation caching for Rust ```bash # Install cargo install sccache # or: brew install sccache # Configure for Rust builds export RUSTC_WRAPPER=sccache # Add to .cargo/config.toml (project or global) # ~/.cargo/config.toml [build] rustc-wrapper = "sccache" # Check cache stats sccache --show-stats # S3 backend for CI teams export SCCACHE_BUCKET=my-rust-cache export SCCACHE_REGION=us-east-1 export AWS_ACCESS_KEY_ID=xxx export AWS_SECRET_ACCESS_KEY=yyy sccache --start-server # GitHub Actions with sccache # - uses: mozilla-actions/[email protected] ``` ### 3. Cranelift codegen backend Cranelift is a fast codegen backend (vs LLVM) — produces slower code but compiles much faster. Ideal for development builds: ```bash # Install nightly (Cranelift requires nightly for now) rustup toolchain install nightly rustup component add rustc-codegen-cranelift-preview --toolchain nightly # Use Cranelift for dev builds only # .cargo/config.toml [unstable] codegen-backend = true [profile.dev] codegen-backend = "cranelift" ``` ```bash # Use per-build CARGO_PROFILE_DEV_CODEGEN_BACKEND=cranelift \ RUSTFLAGS="-Zunstable-options" \ cargo +nightly build ``` Cranelift vs LLVM trade-off: - Dev builds: 20–40% faster compilation with Cranelift - Runtime performance: LLVM-compiled code is faster (Cranelift skips many optimizations) - Release builds: always use LLVM ### 4. Workspace splitting for parallelism A single large crate compiles sequentially. Split into smaller crates to enable Cargo parallelism: ```toml # Before: one giant crate [package] name = "monolith" # everything in one crate = sequential compile # After: workspace with parallel crates [workspace] members = [ "core", # compiled in parallel "networking", # no deps on ui → parallel with ui "ui", # no deps on networking → parallel "server", # depends on core + networking "cli", # depends on core + ui ] ``` ```bash # Visualize dependency graph cargo tree | head -30 cargo tree --graph | dot -Tsvg > deps.svg # visual graph # Check how many crates compile in parallel cargo build -j$(nproc) --timings # maximize parallelism ``` Rules for effective workspace splitting: - Break circular dependencies first - Separate proc-macros into their own crate (they block everything) - Keep frequently-changed code isolated (less invalidation) ### 5. LTO configuration LTO improves runtime performance but increases link time: ```toml # Cargo.toml profile configuration [profile.release] lto = "thin" # thin LTO: good performance, much faster than "fat" codegen-units = 1 # needed for best optimization (but disables parallelism) [profile.release-fast] inherits = "release" lto = "fat" # full LTO: maximum performance, very slow link [profile.dev] lto = "off" # never use LTO in dev (compilation speed) codegen-units = 16 # maximize parallel codegen in dev ``` LTO comparison: | Setting | Link time | Runtime perf | Use when | |---------|-----------|-------------|---------| | `lto = false` | Fast | Baseline | Dev builds | | `lto = "thin"` | Moderate | +5–15% | Most release builds | | `lto = "fat"` | Slow | +15–30% | Maximum performance | | `codegen-units = 1` | Slowest | Best | With LTO for release | ### 6. Fast linkers The linker is often the bottleneck for large Rust projects: ```bash # mold — fastest general-purpose linker (Linux) sudo apt-get install mold # .cargo/config.toml [target.x86_64-unknown-linux-gnu] linker = "clang" rustflags = ["-C", "link-arg=-fuse-ld=mold"] # Or use cargo-zigbuild (uses zig cc as linker) cargo install cargo-zigbuild cargo zigbuild --release # lld — LLVM's linker (faster than GNU ld, available everywhere) # .cargo/config.toml [target.x86_64-unknown-linux-gnu] rustflags = ["-C", "link-arg=-fuse-ld=lld"] # On macOS: zld or the default lld [target.x86_64-apple-darwin] rustflags = ["-C", "link-arg=-fuse-ld=/usr/local/bin/zld"] ``` Linker speed comparison (large project, typical): - GNU ld: baseline - lld: ~2× faster - mold: ~5–10× faster - gold: ~1.5× faster ### 7. Other quick wins ```bash # Reduce debug info level (faster but less debuggable) # Cargo.toml [profile.dev] debug = 1 # 0=off, 1=line tables, 2=full (default) # debug=1 saves 20-40% on debug build time # Split debug info (reduces linker input) [profile.dev] split-debuginfo = "unpacked" # macOS: equivalent of gsplit-dwarf # Disable incremental compilation (sometimes faster for full rebuilds) CARGO_INCREMENTAL=0 cargo build # Reduce proc-macro compile time (pin heavy proc-macro deps) # Heavy proc-macros: serde, tokio, axum — keep versions stable ``` ## Related skills - Use `skills/rust/cargo-workflows` for Cargo workspace and profile configuration - Use `skills/build-systems/build-acceleration` for C/C++ equivalent build acceleration - Use `skills/debuggers/dwarf-debug-format` for debug info size/split-dwarf tradeoffs - Use `skills/binaries/linkers-lto` for LTO internals
Related in Backend & APIs
jfrog
IncludedInteract with the JFrog Platform via the JFrog CLI and REST/GraphQL APIs. Use this skill when the user wants to manage Artifactory repositories, upload or download artifacts, manage builds, configure permissions, manage users and groups, work with access tokens, configure JFrog CLI servers, search artifacts, manage properties, set up replication, manage JFrog Projects, run security audits or scans, look up CVE details, query exposures scan results from JFrog Advanced Security, manage release bundles and lifecycle operations, aggregate or export platform data, or perform any JFrog Platform administration task. Also use when the user mentions jf, jfrog, artifactory, xray, distribution, evidence, apptrust, onemodel, graphql, workers, mission control, curation, advanced security, exposures, or any JFrog product name.
cupynumeric-migration-readiness
IncludedPre-migration readiness assessor for porting NumPy to cuPyNumeric. Use BEFORE substantial porting work begins when the user asks whether code will scale on GPU, whether they should migrate to cuPyNumeric, which NumPy patterns transfer cleanly, what must be refactored before porting, or mentions pre-port assessment, scaling analysis, or refactor planning. Inspect the user's source code, look up NumPy usage, cross-reference the cuPyNumeric API support manifest, and distinguish distributed-scaling-friendly patterns from blockers such as unsupported APIs, scalar synchronization, host round-trips, Python/object-heavy control flow, shape/data-dependent branching, and in-place mutation hazards. Produce a verdict of READY, LIGHT REFACTOR, SIGNIFICANT REFACTOR, or NOT RECOMMENDED, with concrete refactor pointers.
alibabacloud-data-agent-skill
IncludedInvoke Alibaba Cloud Apsara Data Agent for Analytics via CLI to perform natural language-driven data analysis on enterprise databases. Data Agent for Analytics is an intelligent data analysis agent developed by Alibaba Cloud Database team for enterprise users. It automatically completes requirement analysis, data understanding, analysis insights, and report generation based on natural language descriptions. This tool supports: discovering data resources (instances/databases/tables) managed in DMS, initiating query or deep analysis sessions, real-time progress tracking, and retrieving analysis conclusions and generated reports. Use this Skill when users need to query databases, analyze data trends, generate data reports, ask questions in natural language, or mention "Data Agent", "data analysis", "database query", "SQL analysis", "data insights".
token-optimizer
IncludedReduce OpenClaw token usage and API costs through smart model routing, heartbeat optimization, budget tracking, and native 2026.2.15 features (session pruning, bootstrap size limits, cache TTL alignment). Use when token costs are high, API rate limits are being hit, or hosting multiple agents at scale. The 4 executable scripts (context_optimizer, model_router, heartbeat_optimizer, token_tracker) are local-only — no network requests, no subprocess calls, no system modifications. Reference files (PROVIDERS.md, config-patches.json) document optional multi-provider strategies that require external API keys and network access if you choose to use them. See SECURITY.md for full breakdown.
resend-cli
IncludedUse this skill when the task is specifically about operating Resend from an AI agent, terminal session, or CI job via the official resend CLI: installing/authenticating the CLI, sending/listing/updating/cancelling emails, batch sends, domains and DNS, webhooks and local listeners, inbound receiving, contacts, topics, segments, broadcasts, templates, API keys, profiles, or debugging Resend CLI/API failures. Trigger on mentions of Resend CLI, `resend`, `resend doctor`, `resend emails send`, `resend domains`, `resend webhooks listen`, `resend emails receiving`, or agent-friendly terminal automation.
alibabacloud-odps-maxframe-coding
IncludedUse this skill for MaxFrame SDK development and documentation navigation on Alibaba Cloud MaxCompute (ODPS). Helps answer MaxFrame API, concept, official example, and supported pandas API questions; create data processing programs; read/write MaxCompute tables; debug jobs (remote or local); and build custom DPE runtime images. Trigger when users mention MaxFrame, MaxCompute with MaxFrame, ODPS table processing, DPE runtime, MaxFrame docs/examples, DataFrame/Tensor operations, or GPU runtime setup. Works for both English and Chinese queries about Alibaba Cloud data processing with MaxFrame.