authorgravatar for sertonix@posteo.netSertonix <sertonix@posteo.net> 2026-04-23 10:34:08+02:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2026-05-26 09:43:39-07:00
log8455563ed86ddb1fc3157e1bf74dc77c1e6aa6bb
treef71b4ae9cd25ece159a29abd51638465de016a86
parent0ff175b69ef806f421820d33dade7a8163fe3f16

Fix build script compilation when usize is u32

On 32-bit systems usize is not u64 but it was assumed in multiple places of the build script. Sometimes using u64 instead of usize since available and used memory can exceed usize on 32-bit systems (just like totalSystemMemory) Example errors: lib/compiler/build_runner.zig:508:26: error: expected type 'usize', found 'u64' .available_rss = max_rss, ^~~~~~~ lib/compiler/build_runner.zig:508:26: note: unsigned 32-bit int cannot represent all possible unsigned 64-bit values referenced by: callMain [inlined]: lib/std/start.zig:699:88 callMainWithArgs [inlined]: lib/std/start.zig:638:20 posixCallMainAndExit: lib/std/start.zig:590:38 2 reference(s) hidden; use '-freference-trace=5' to see all references lib/std/Build/WebServer.zig:849:38: error: expected type 'usize', found 'u64' const buf = gpa.realloc(old_buf, new_len) catch @panic("out of memory"); ^~~~~~~ lib/std/Build/WebServer.zig:849:38: note: unsigned 32-bit int cannot represent all possible unsigned 64-bit values lib/std/mem/Allocator.zig:399:58: note: parameter type declared here pub fn realloc(self: Allocator, old_mem: anytype, new_n: usize) Error!@TypeOf(old_mem) { ^~~~~ build.zig:548:10: error: type 'usize' cannot represent integer value '9300000000' .max_rss = 9_300_000_000, ~^~~~~~~~~~~~~~~~~~~~~~~ build.zig:778:10: error: type 'usize' cannot represent integer value '8000000000' .max_rss = 8_000_000_000, ~^~~~~~~~~~~~~~~~~~~~~~~

7 files changed, 15 insertions(+), 15 deletions(-)

lib/compiler/Maker/WebServer.zig+2-2
......@@ -876,8 +876,8 @@ pub fn updateTimeReportRunTest(
876876 assert(tests.names.len == ns_per_test.len);
877877 const tests_len: u32 = @intCast(tests.names.len);
878878
879 const new_len: u64 = len: {
880 var names_len: u64 = 0;
879 const new_len: usize = len: {
880 var names_len: usize = 0;
881881 for (0..tests_len) |i| {
882882 names_len += tests.testName(@intCast(i)).len + 1;
883883 }
lib/std/Build.zig+5-5
......@@ -692,7 +692,7 @@ pub const ExecutableOptions = struct {
692692 root_module: *Module,
693693 version: ?std.SemanticVersion = null,
694694 linkage: ?std.builtin.LinkMode = null,
695 max_rss: usize = 0,
695 max_rss: u64 = 0,
696696 use_llvm: ?bool = null,
697697 use_lld: ?bool = null,
698698 zig_lib_dir: ?LazyPath = null,
......@@ -722,7 +722,7 @@ pub fn addExecutable(b: *Build, options: ExecutableOptions) *Step.Compile {
722722pub const ObjectOptions = struct {
723723 name: []const u8,
724724 root_module: *Module,
725 max_rss: usize = 0,
725 max_rss: u64 = 0,
726726 use_llvm: ?bool = null,
727727 use_lld: ?bool = null,
728728 zig_lib_dir: ?LazyPath = null,
......@@ -745,7 +745,7 @@ pub const LibraryOptions = struct {
745745 name: []const u8,
746746 root_module: *Module,
747747 version: ?std.SemanticVersion = null,
748 max_rss: usize = 0,
748 max_rss: u64 = 0,
749749 use_llvm: ?bool = null,
750750 use_lld: ?bool = null,
751751 zig_lib_dir: ?LazyPath = null,
......@@ -778,7 +778,7 @@ pub fn addLibrary(b: *Build, options: LibraryOptions) *Step.Compile {
778778pub const TestOptions = struct {
779779 name: []const u8 = "test",
780780 root_module: *Module,
781 max_rss: usize = 0,
781 max_rss: u64 = 0,
782782 filters: []const []const u8 = &.{},
783783 test_runner: ?Step.Compile.TestRunner = null,
784784 use_llvm: ?bool = null,
......@@ -819,7 +819,7 @@ pub const AssemblyOptions = struct {
819819 /// `host` field of the package's `Build` instance.
820820 target: ResolvedTarget,
821821 optimize: std.builtin.OptimizeMode,
822 max_rss: usize = 0,
822 max_rss: u64 = 0,
823823 zig_lib_dir: ?LazyPath = null,
824824};
825825
lib/std/Build/Step.zig+2-2
......@@ -30,7 +30,7 @@ dependencies: std.ArrayList(*Step),
3030/// max_rss value that does not exceed the `max_total_rss` value of the build
3131/// runner. This value is configurable on the command line, and defaults to the
3232/// total system memory available.
33max_rss: usize,
33max_rss: u64,
3434
3535/// The return address associated with creation of this step that can be useful
3636/// to print along with debugging messages.
......@@ -87,7 +87,7 @@ pub const StepOptions = struct {
8787 name: []const u8,
8888 owner: *Build,
8989 first_ret_addr: ?usize = null,
90 max_rss: usize = 0,
90 max_rss: u64 = 0,
9191};
9292
9393pub fn init(options: StepOptions) Step {
lib/std/Build/Step/Compile.zig+1-1
......@@ -269,7 +269,7 @@ pub const Options = struct {
269269 kind: Kind,
270270 linkage: ?std.builtin.LinkMode = null,
271271 version: ?std.SemanticVersion = null,
272 max_rss: usize = 0,
272 max_rss: u64 = 0,
273273 filters: []const []const u8 = &.{},
274274 test_runner: ?TestRunner = null,
275275 use_llvm: ?bool = null,
lib/std/elf.zig+2-2
......@@ -873,8 +873,8 @@ pub const ProgramHeaderBufferIterator = struct {
873873 if (it.index >= it.phnum) return null;
874874 defer it.index += 1;
875875
876 const size: u64 = if (it.is_64) @sizeOf(Elf64_Phdr) else @sizeOf(Elf32_Phdr);
877 const offset = it.phoff + size * it.index;
876 const size: usize = if (it.is_64) @sizeOf(Elf64_Phdr) else @sizeOf(Elf32_Phdr);
877 const offset = @as(usize, @intCast(it.phoff)) + size * it.index;
878878 var reader = Io.Reader.fixed(it.buf[offset..]);
879879
880880 return try takeProgramHeader(&reader, it.is_64, it.endian);
test/src/Libc.zig+1-1
......@@ -11,7 +11,7 @@ pub const Options = struct {
1111 test_filters: []const []const u8,
1212 test_target_filters: []const []const u8,
1313 skip_wasm: bool,
14 max_rss: usize,
14 max_rss: u64,
1515};
1616
1717const TestCase = struct {
test/tests.zig+2-2
......@@ -2467,7 +2467,7 @@ pub const ModuleTestOptions = struct {
24672467 skip_linux: bool,
24682468 skip_llvm: bool,
24692469 skip_libc: bool,
2470 max_rss: usize = 0,
2470 max_rss: u64 = 0,
24712471 no_builtin: bool = false,
24722472 sanitize_thread: ?bool = null,
24732473 build_options: ?*Step.Options = null,
......@@ -2795,7 +2795,7 @@ const CAbiTestOptions = struct {
27952795 skip_darwin: bool,
27962796 skip_linux: bool,
27972797 skip_llvm: bool,
2798 max_rss: usize = 0,
2798 max_rss: u64 = 0,
27992799};
28002800
28012801pub fn addCAbiTests(b: *std.Build, options: CAbiTestOptions) *Step {