From 87d3b5fdfd1555b7b05e80bd42050058da724305 Mon Sep 17 00:00:00 2001 From: Kirill Bulatov Date: Fri, 18 Sep 2026 10:49:35 +0000 Subject: [PATCH] Disable share generics to reduce the binary size more (#64335) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit After the new macOS nightly with https://github.com/zed-industries/zed/pull/64260 arrived, I've noticed that the binary had actually bloated back — run some bisecting and build comparison, and seems that the shared generics are the culprit. Platform / executable | Sharing enabled | Sharing disabled/default | Reduction | |---|---:|---:|---:| | macOS ARM64 editor | 304,794,488 bytes | 266,242,792 bytes | **38,551,696 bytes / 12.65%** | | Linux x86_64 editor | 334,001,336 bytes | 325,916,104 bytes | **8,085,232 bytes / 2.42%** | | Linux x86_64 remote server | 123,618,032 bytes | 106,211,592 bytes | **17,406,440 bytes / 14.08%** Each pair uses the same checkout and Rust **1.98.1**, was built with the bundling script: - macOS: `e0590874fd`, measured after `strip -x`. - Linux: `b664a4004269`, measured after `llvm-objcopy --strip-debug --discard-all`. The Linux section changes when disabling sharing are: | Component | Editor | Remote server | |---|---:|---:| | Retained `.symtab` + `.strtab` | **−47,560,049 bytes** | **−17,733,989 bytes** | | Allocated file-backed sections | +39,475,120 bytes | +327,448 bytes | | Headers, padding, and other bytes | −303 bytes | +101 bytes | | **Total** | **−8,085,232 bytes** | **−17,406,440 bytes** | Release Notes: - N/A --- .cargo/bundle-config.toml | 6 ------ 1 file changed, 6 deletions(-) diff --git a/.cargo/bundle-config.toml b/.cargo/bundle-config.toml index c3f18fb955..0fc6a68ff9 100644 --- a/.cargo/bundle-config.toml +++ b/.cargo/bundle-config.toml @@ -1,9 +1,3 @@ -[env] -RUSTC_BOOTSTRAP = "1" - -[target.'cfg(all())'] -rustflags = ["-Z", "share-generics=y"] - [target.'cfg(target_os = "linux")'] rustflags = ["-C", "link-args=-Wl,--disable-new-dtags,-rpath,$ORIGIN/../lib"]