ziglang / zig

General-purpose programming language and toolchain for maintaining robust, optimal, and reusable software.
https://ziglang.org
MIT License
34.59k stars 2.53k forks source link

HelloWorld binary size increased a lot in recent Zig versions #20711

Open hronro opened 3 months ago

hronro commented 3 months ago

Zig Version

0.13.0

Steps to Reproduce and Observed Behavior

Say we want to build a very simple HelloWorld program in x86_64 Linux:

const std = @import("std");

pub fn main() !void {
    std.debug.print("Hello World\n", .{});
}

Let's try to build them in different versions of Zig with different modes (all of them have enabled exe.strip = true; in build.zig), and here are the binary sizes of them:

Zig Version ReleaseFast ReleaseSmall
0.9.1 4.6K 4.6K
0.10.1 13K 8.5K
0.11.0 13K 8.7K
0.12.1 11K 9.0K
0.13.0 13K 13K

Expected Behavior

Binary size should not increase much compared to v0.9.1, at least in ReleaseSmall mode.

linusg commented 3 months ago

Possibly related: #20468

dotdot0 commented 2 months ago

Can I work on this one?

pavelverigo commented 2 months ago
Currently on 0.14.0-dev.1002+71a27ebd8: ReleaseFast ReleaseSmall
5.1K 3.6K
ar-qun commented 1 month ago

Maybe it would make sense to check the binary size as part of regression testing?