"hello world" binary size increase in each release (original) (raw)
The binary size of "hello world" program increased in each release:
Detail table
Rust version | debug | debug - stripped | release | release - stripped |
---|---|---|---|---|
1.32.0 | 2382904 | 199096 | 2375720 | 199016 |
1.40.0 | 2595400 | 215464 | 2588264 | 215384 |
1.41.0 | 2637336 | 215464 | 2629832 | 215384 |
1.42.0 | 2659672 | 211368 | 2652488 | 211288 |
1.43.0 | 2729192 | 223584 | 2722128 | 223504 |
1.44.0 | 2584120 | 248160 | 2579144 | 248080 |
1.45.0 | 2847440 | 244064 | 2842464 | 243984 |
beta | 2848152 | 244064 | 2843168 | 243984 |
nightly | 3210208 | 293200 | 3203712 | 293112 |
main.rs
fn main() { println!("hello world"); }
Script to reproduce
rustup set profile minimal rustup toolchain install 1.{40..45}.0 beta nightly
RUST_DBG_FLAGS='-C debuginfo=1 -C panic=abort -C opt-level=0' RUST_REL_FLAGS='-C debuginfo=0 -C panic=abort -C opt-level=3'
mkdir -p build/debug mkdir -p build/release for ver in 1.{40..45}.0 beta nightly; do bin_dbg=build/debug/main-$ver bin_rel=build/release/main-$ver rustc +$ver RUSTDBGFLAGSmain.rs−oRUST_DBG_FLAGS main.rs -o RUSTDBGFLAGSmain.rs−obin_dbg echo "-- $ver" before=$(stat --printf="%s" $bin_dbg) strip $bin_dbg after=$(stat --printf="%s" $bin_dbg) printf " dbg: %d, stripped: %d\n" beforebefore beforeafter
rustc +$ver <span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>R</mi><mi>U</mi><mi>S</mi><msub><mi>T</mi><mi>R</mi></msub><mi>E</mi><msub><mi>L</mi><mi>F</mi></msub><mi>L</mi><mi>A</mi><mi>G</mi><mi>S</mi><mi>m</mi><mi>a</mi><mi>i</mi><mi>n</mi><mi mathvariant="normal">.</mi><mi>r</mi><mi>s</mi><mo>−</mo><mi>o</mi></mrow><annotation encoding="application/x-tex">RUST_REL_FLAGS main.rs -o </annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.8333em;vertical-align:-0.15em;"></span><span class="mord mathnormal" style="margin-right:0.00773em;">R</span><span class="mord mathnormal" style="margin-right:0.10903em;">U</span><span class="mord mathnormal" style="margin-right:0.05764em;">S</span><span class="mord"><span class="mord mathnormal" style="margin-right:0.13889em;">T</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3283em;"><span style="top:-2.55em;margin-left:-0.1389em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathnormal mtight" style="margin-right:0.00773em;">R</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mord mathnormal" style="margin-right:0.05764em;">E</span><span class="mord"><span class="mord mathnormal">L</span><span class="msupsub"><span class="vlist-t vlist-t2"><span class="vlist-r"><span class="vlist" style="height:0.3283em;"><span style="top:-2.55em;margin-left:0em;margin-right:0.05em;"><span class="pstrut" style="height:2.7em;"></span><span class="sizing reset-size6 size3 mtight"><span class="mord mathnormal mtight" style="margin-right:0.13889em;">F</span></span></span></span><span class="vlist-s"></span></span><span class="vlist-r"><span class="vlist" style="height:0.15em;"><span></span></span></span></span></span></span><span class="mord mathnormal">L</span><span class="mord mathnormal">A</span><span class="mord mathnormal" style="margin-right:0.05764em;">GS</span><span class="mord mathnormal">main</span><span class="mord">.</span><span class="mord mathnormal">rs</span><span class="mspace" style="margin-right:0.2222em;"></span><span class="mbin">−</span><span class="mspace" style="margin-right:0.2222em;"></span></span><span class="base"><span class="strut" style="height:0.4306em;"></span><span class="mord mathnormal">o</span></span></span></span>bin_rel
before=$(stat --printf="%s" $bin_rel)
strip $bin_rel
after=$(stat --printf="%s" $bin_rel)
printf " release: %d, stripped: %d\n" <span class="katex"><span class="katex-mathml"><math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mi>b</mi><mi>e</mi><mi>f</mi><mi>o</mi><mi>r</mi><mi>e</mi></mrow><annotation encoding="application/x-tex">before </annotation></semantics></math></span><span class="katex-html" aria-hidden="true"><span class="base"><span class="strut" style="height:0.8889em;vertical-align:-0.1944em;"></span><span class="mord mathnormal">b</span><span class="mord mathnormal">e</span><span class="mord mathnormal" style="margin-right:0.10764em;">f</span><span class="mord mathnormal">ore</span></span></span></span>after
done
rustup toolchain uninstall 1.{40..45}.0 beta nightly
Meta
beta:
rustc 1.46.0-beta.5 (cfbc6d4cf 2020-08-21)
binary: rustc
commit-hash: cfbc6d4cf1acbac5c025acf8ed68929caa551df3
commit-date: 2020-08-21
host: x86_64-unknown-linux-gnu
release: 1.46.0-beta.5
LLVM version: 10.0
nightly:
rustc 1.47.0-nightly (de521cbb3 2020-08-21)
binary: rustc
commit-hash: de521cbb303c08febd9fa3755caccd4f3e491ea3
commit-date: 2020-08-21
host: x86_64-unknown-linux-gnu
release: 1.47.0-nightly
LLVM version: 10.0