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
9 lines
307 B
TOML
9 lines
307 B
TOML
[target.'cfg(target_os = "linux")']
|
|
rustflags = ["-C", "link-args=-Wl,--disable-new-dtags,-rpath,$ORIGIN/../lib"]
|
|
|
|
[target.'cfg(all(target_os = "linux", target_env = "musl"))']
|
|
rustflags = ["-C", "target-feature=+crt-static"]
|
|
|
|
[target.aarch64-unknown-linux-musl]
|
|
rustflags = ["-C", "link-arg=-fuse-ld=lld"]
|