[workspace] resolver = "2" members = [ "crates/quicksearch-core", "crates/quicksearch-gui", ] # The `vendor/` crates are deliberately NOT members: they are third-party code which we patched exclude = ["vendor/pdf-extract", "vendor/rtf-parser"] [patch.crates-io] pdf-extract = { path = "vendor/pdf-extract" } # Patched unbounded reads which could blow up on malformed files rtf-parser = { path = "vendor/rtf-parser" } # Patched a parsing error which occurs on UTF-16 characters [workspace.package] version = "1.1.5" edition = "2021" license = "GPL-3.0-or-later" authors = ["Jeremy "] repository = "https://code.karsttech.com/jeremy/quick_search.git" # Fat LTO + cgu=1: -14% stripped size (24.3 MB vs 28.2 MB), search within noise # (read as "3-4% faster or even"), +127 s on a clean CI build. Measure CLEAN — # an incremental rebuild is nearly all link and made LTO look ~20x worse than # it is. `lto = "thin"` alone is worth nothing (0.1%); cgu=1 alone is worth # 2.3 MB. Deliberately unset: `strip` (packaging/CI strip the staged copy, # keeping target/release symbolised); `panic = "abort"` (extract/pdf.rs needs # catch_unwind for malformed PDFs, and it forces a full second dependency # rebuild under `cargo test --release`); non-PIE (ASLR — this parses untrusted # PDFs). The vendored OpenSSL's ~1.3 MB is unreachable by any profile knob. [profile.release] lto = "fat" codegen-units = 1