authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2026-10-24 23:06:14+02:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2026-10-24 23:06:14+02:00
log935a3b9c757283b4eaaf78b417e34d7d0fbc8737
treef3cf92627b6b28d3e2a13811174f9347599e2909
parent09ee89a89ce3e2a04021695e92893fc4e507c7e6
parent7370daf9b90505ca664791b22404095a06e948b8

Merge pull request 'std: update more ArrayList usages to unmanaged' (#37362) from masabence/zig:more-arraylist-unmanaged into master

Reviewed-on: https://codeberg.org/ziglang/zig/pulls/37362 Reviewed-by: Andrew Kelley <andrew@ziglang.org>

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

lib/std/debug/Dwarf.zig+3-3
...@@ -571,8 +571,8 @@ fn scanAllCompileUnits(di: *Dwarf, gpa: Allocator, endian: Endian) ScanError!voi...@@ -571,8 +571,8 @@ fn scanAllCompileUnits(di: *Dwarf, gpa: Allocator, endian: Endian) ScanError!voi
571 var fr: Reader = .fixed(di.section(.debug_info).?);571 var fr: Reader = .fixed(di.section(.debug_info).?);
572 var this_unit_offset: u64 = 0;572 var this_unit_offset: u64 = 0;
573573
574 var attrs_buf = std.array_list.Managed(Die.Attr).init(gpa);574 var attrs_buf: std.ArrayList(Die.Attr) = .empty;
575 defer attrs_buf.deinit();575 defer attrs_buf.deinit(gpa);
576576
577 while (this_unit_offset < fr.buffer.len) {577 while (this_unit_offset < fr.buffer.len) {
578 fr.seek = @intCast(this_unit_offset);578 fr.seek = @intCast(this_unit_offset);
...@@ -603,7 +603,7 @@ fn scanAllCompileUnits(di: *Dwarf, gpa: Allocator, endian: Endian) ScanError!voi...@@ -603,7 +603,7 @@ fn scanAllCompileUnits(di: *Dwarf, gpa: Allocator, endian: Endian) ScanError!voi
603 for (abbrev_table.abbrevs) |abbrev| {603 for (abbrev_table.abbrevs) |abbrev| {
604 max_attrs = @max(max_attrs, abbrev.attrs.len);604 max_attrs = @max(max_attrs, abbrev.attrs.len);
605 }605 }
606 try attrs_buf.resize(max_attrs);606 try attrs_buf.resize(gpa, max_attrs);
607607
608 var compile_unit_die = (try parseDie(608 var compile_unit_die = (try parseDie(
609 &fr,609 &fr,
lib/std/hash_map.zig+7-7
...@@ -1802,15 +1802,15 @@ test "put and remove loop in random order" {...@@ -1802,15 +1802,15 @@ test "put and remove loop in random order" {
1802 var map = AutoHashMap(u32, u32).init(std.testing.allocator);1802 var map = AutoHashMap(u32, u32).init(std.testing.allocator);
1803 defer map.deinit();1803 defer map.deinit();
18041804
1805 var keys = std.array_list.Managed(u32).init(std.testing.allocator);1805 var keys: std.ArrayList(u32) = .empty;
1806 defer keys.deinit();1806 defer keys.deinit(std.testing.allocator);
18071807
1808 const size = 32;1808 const size = 32;
1809 const iterations = 100;1809 const iterations = 100;
18101810
1811 var i: u32 = 0;1811 var i: u32 = 0;
1812 while (i < size) : (i += 1) {1812 while (i < size) : (i += 1) {
1813 try keys.append(i);1813 try keys.append(std.testing.allocator, i);
1814 }1814 }
1815 var prng = std.Random.DefaultPrng.init(std.testing.random_seed);1815 var prng = std.Random.DefaultPrng.init(std.testing.random_seed);
1816 const random = prng.random();1816 const random = prng.random();
...@@ -1833,15 +1833,15 @@ test "put and remove loop in random order" {...@@ -1833,15 +1833,15 @@ test "put and remove loop in random order" {
1833test "remove many elements in random order" {1833test "remove many elements in random order" {
1834 const Map = AutoHashMap(u32, u32);1834 const Map = AutoHashMap(u32, u32);
1835 const n = 1000 * 100;1835 const n = 1000 * 100;
1836 var map = Map.init(std.heap.page_allocator);1836 var map = Map.init(std.testing.allocator);
1837 defer map.deinit();1837 defer map.deinit();
18381838
1839 var keys = std.array_list.Managed(u32).init(std.heap.page_allocator);1839 var keys: std.ArrayList(u32) = .empty;
1840 defer keys.deinit();1840 defer keys.deinit(std.testing.allocator);
18411841
1842 var i: u32 = 0;1842 var i: u32 = 0;
1843 while (i < n) : (i += 1) {1843 while (i < n) : (i += 1) {
1844 keys.append(i) catch unreachable;1844 keys.append(std.testing.allocator, i) catch unreachable;
1845 }1845 }
18461846
1847 var prng = std.Random.DefaultPrng.init(std.testing.random_seed);1847 var prng = std.Random.DefaultPrng.init(std.testing.random_seed);
lib/std/priority_dequeue.zig+4-4
...@@ -1020,16 +1020,16 @@ fn fuzzTestMinMax(rng: std.Random, queue_size: usize) !void {...@@ -1020,16 +1020,16 @@ fn fuzzTestMinMax(rng: std.Random, queue_size: usize) !void {
1020}1020}
10211021
1022fn generateRandomSlice(allocator: std.mem.Allocator, rng: std.Random, size: usize) ![]u32 {1022fn generateRandomSlice(allocator: std.mem.Allocator, rng: std.Random, size: usize) ![]u32 {
1023 var array = std.array_list.Managed(u32).init(allocator);1023 var array: std.ArrayList(u32) = .empty;
1024 try array.ensureTotalCapacity(size);1024 try array.ensureTotalCapacity(allocator, size);
10251025
1026 var i: usize = 0;1026 var i: usize = 0;
1027 while (i < size) : (i += 1) {1027 while (i < size) : (i += 1) {
1028 const elem = rng.int(u32);1028 const elem = rng.int(u32);
1029 try array.append(elem);1029 try array.append(allocator, elem);
1030 }1030 }
10311031
1032 return array.toOwnedSlice();1032 return array.toOwnedSlice(allocator);
1033}1033}
10341034
1035fn contextLessThanComparison(context: []const u32, a: usize, b: usize) Order {1035fn contextLessThanComparison(context: []const u32, a: usize, b: usize) Order {
lib/std/zig.zig+12-12
...@@ -900,10 +900,10 @@ pub fn parseTargetQueryOrReportFatalError(...@@ -900,10 +900,10 @@ pub fn parseTargetQueryOrReportFatalError(
900 return std.Target.Query.parse(opts_with_diags) catch |err| switch (err) {900 return std.Target.Query.parse(opts_with_diags) catch |err| switch (err) {
901 error.UnknownCpuModel => {901 error.UnknownCpuModel => {
902 help: {902 help: {
903 var help_text = std.array_list.Managed(u8).init(allocator);903 var help_text: std.ArrayList(u8) = .empty;
904 defer help_text.deinit();904 defer help_text.deinit(allocator);
905 for (diags.arch.?.allCpuModels()) |cpu| {905 for (diags.arch.?.allCpuModels()) |cpu| {
906 help_text.print(" {s}\n", .{cpu.name}) catch break :help;906 help_text.print(allocator, " {s}\n", .{cpu.name}) catch break :help;
907 }907 }
908 log.info("available CPUs for architecture '{s}':\n{s}", .{908 log.info("available CPUs for architecture '{s}':\n{s}", .{
909 @tagName(diags.arch.?), help_text.items,909 @tagName(diags.arch.?), help_text.items,
...@@ -913,10 +913,10 @@ pub fn parseTargetQueryOrReportFatalError(...@@ -913,10 +913,10 @@ pub fn parseTargetQueryOrReportFatalError(
913 },913 },
914 error.UnknownCpuFeature => {914 error.UnknownCpuFeature => {
915 help: {915 help: {
916 var help_text = std.array_list.Managed(u8).init(allocator);916 var help_text: std.ArrayList(u8) = .empty;
917 defer help_text.deinit();917 defer help_text.deinit(allocator);
918 for (diags.arch.?.allFeaturesList()) |feature| {918 for (diags.arch.?.allFeaturesList()) |feature| {
919 help_text.print(" {s}: {s}\n", .{ feature.name, feature.description }) catch break :help;919 help_text.print(allocator, " {s}: {s}\n", .{ feature.name, feature.description }) catch break :help;
920 }920 }
921 log.info("available CPU features for architecture '{s}':\n{s}", .{921 log.info("available CPU features for architecture '{s}':\n{s}", .{
922 @tagName(diags.arch.?), help_text.items,922 @tagName(diags.arch.?), help_text.items,
...@@ -926,10 +926,10 @@ pub fn parseTargetQueryOrReportFatalError(...@@ -926,10 +926,10 @@ pub fn parseTargetQueryOrReportFatalError(
926 },926 },
927 error.UnknownObjectFormat => {927 error.UnknownObjectFormat => {
928 help: {928 help: {
929 var help_text = std.array_list.Managed(u8).init(allocator);929 var help_text: std.ArrayList(u8) = .empty;
930 defer help_text.deinit();930 defer help_text.deinit(allocator);
931 inline for (@typeInfo(std.Target.ObjectFormat).@"enum".field_names) |field_name| {931 inline for (@typeInfo(std.Target.ObjectFormat).@"enum".field_names) |field_name| {
932 help_text.print(" {s}\n", .{field_name}) catch break :help;932 help_text.print(allocator, " {s}\n", .{field_name}) catch break :help;
933 }933 }
934 log.info("available object formats:\n{s}", .{help_text.items});934 log.info("available object formats:\n{s}", .{help_text.items});
935 }935 }
...@@ -937,10 +937,10 @@ pub fn parseTargetQueryOrReportFatalError(...@@ -937,10 +937,10 @@ pub fn parseTargetQueryOrReportFatalError(
937 },937 },
938 error.UnknownArchitecture => {938 error.UnknownArchitecture => {
939 help: {939 help: {
940 var help_text = std.array_list.Managed(u8).init(allocator);940 var help_text: std.ArrayList(u8) = .empty;
941 defer help_text.deinit();941 defer help_text.deinit(allocator);
942 inline for (@typeInfo(std.Target.Cpu.Arch).@"enum".field_names) |field_name| {942 inline for (@typeInfo(std.Target.Cpu.Arch).@"enum".field_names) |field_name| {
943 help_text.print(" {s}\n", .{field_name}) catch break :help;943 help_text.print(allocator, " {s}\n", .{field_name}) catch break :help;
944 }944 }
945 log.info("available architectures:\n{s} native\n", .{help_text.items});945 log.info("available architectures:\n{s} native\n", .{help_text.items});
946 }946 }
lib/std/zig/AstGen.zig+3-3
...@@ -1802,13 +1802,13 @@ fn structInitExpr(...@@ -1802,13 +1802,13 @@ fn structInitExpr(
1802 while (it.next()) |entry| {1802 while (it.next()) |entry| {
1803 const record = entry.value_ptr.*;1803 const record = entry.value_ptr.*;
1804 if (record.items.len > 1) {1804 if (record.items.len > 1) {
1805 var error_notes = std.array_list.Managed(u32).init(astgen.arena);1805 var error_notes: std.ArrayList(u32) = .empty;
18061806
1807 for (record.items[1..]) |duplicate| {1807 for (record.items[1..]) |duplicate| {
1808 try error_notes.append(try astgen.errNoteTok(duplicate, "duplicate name here", .{}));1808 try error_notes.append(astgen.arena, try astgen.errNoteTok(duplicate, "duplicate name here", .{}));
1809 }1809 }
18101810
1811 try error_notes.append(try astgen.errNoteNode(node, "struct declared here", .{}));1811 try error_notes.append(astgen.arena, try astgen.errNoteNode(node, "struct declared here", .{}));
18121812
1813 try astgen.appendErrorTokNotes(1813 try astgen.appendErrorTokNotes(
1814 record.items[0],1814 record.items[0],
lib/std/zig/LibCDirs.zig+2-2
...@@ -96,7 +96,7 @@ pub fn detect(...@@ -96,7 +96,7 @@ pub fn detect(
96}96}
9797
98fn detectFromInstallation(arena: Allocator, target: *const std.Target, lci: *const LibCInstallation) !LibCDirs {98fn detectFromInstallation(arena: Allocator, target: *const std.Target, lci: *const LibCInstallation) !LibCDirs {
99 var list = try std.array_list.Managed([]const u8).initCapacity(arena, 5);99 var list: std.ArrayList([]const u8) = try .initCapacity(arena, 5);
100100
101 list.appendAssumeCapacity(lci.include_dir.?);101 list.appendAssumeCapacity(lci.include_dir.?);
102102
...@@ -133,7 +133,7 @@ fn detectFromInstallation(arena: Allocator, target: *const std.Target, lci: *con...@@ -133,7 +133,7 @@ fn detectFromInstallation(arena: Allocator, target: *const std.Target, lci: *con
133 };133 };
134 for (subdirs) |subdir| {134 for (subdirs) |subdir| {
135 const path = try std.fs.path.join(arena, &[_][]const u8{ include_dir_path, subdir });135 const path = try std.fs.path.join(arena, &[_][]const u8{ include_dir_path, subdir });
136 try list.append(path);136 try list.append(arena, path);
137 }137 }
138 }138 }
139139
lib/std/zig/llvm/Builder.zig+16-16
...@@ -95,8 +95,8 @@ fn subArchName(target: *const std.Target, comptime family: std.Target.Cpu.Arch.F...@@ -95,8 +95,8 @@ fn subArchName(target: *const std.Target, comptime family: std.Target.Cpu.Arch.F
95}95}
9696
97pub fn tripleForTarget(allocator: Allocator, target: *const std.Target) ![]const u8 {97pub fn tripleForTarget(allocator: Allocator, target: *const std.Target) ![]const u8 {
98 var llvm_triple = std.array_list.Managed(u8).init(allocator);98 var llvm_triple: std.ArrayList(u8) = .empty;
99 defer llvm_triple.deinit();99 defer llvm_triple.deinit(allocator);
100100
101 const llvm_arch = switch (target.cpu.arch) {101 const llvm_arch = switch (target.cpu.arch) {
102 .arm => "arm",102 .arm => "arm",
...@@ -168,7 +168,7 @@ pub fn tripleForTarget(allocator: Allocator, target: *const std.Target) ![]const...@@ -168,7 +168,7 @@ pub fn tripleForTarget(allocator: Allocator, target: *const std.Target) ![]const
168 => unreachable, // Gated by hasLlvmSupport().168 => unreachable, // Gated by hasLlvmSupport().
169 };169 };
170170
171 try llvm_triple.appendSlice(llvm_arch);171 try llvm_triple.appendSlice(allocator, llvm_arch);
172172
173 const llvm_sub_arch: ?[]const u8 = switch (target.cpu.arch) {173 const llvm_sub_arch: ?[]const u8 = switch (target.cpu.arch) {
174 .arm, .armeb, .thumb, .thumbeb => subArchName(target, .arm, .{174 .arm, .armeb, .thumb, .thumbeb => subArchName(target, .arm, .{
...@@ -237,10 +237,10 @@ pub fn tripleForTarget(allocator: Allocator, target: *const std.Target) ![]const...@@ -237,10 +237,10 @@ pub fn tripleForTarget(allocator: Allocator, target: *const std.Target) ![]const
237 else => null,237 else => null,
238 };238 };
239239
240 if (llvm_sub_arch) |sub| try llvm_triple.appendSlice(sub);240 if (llvm_sub_arch) |sub| try llvm_triple.appendSlice(allocator, sub);
241 try llvm_triple.append('-');241 try llvm_triple.append(allocator, '-');
242242
243 try llvm_triple.appendSlice(switch (target.os.tag) {243 try llvm_triple.appendSlice(allocator, switch (target.os.tag) {
244 .driverkit,244 .driverkit,
245 .ios,245 .ios,
246 .maccatalyst,246 .maccatalyst,
...@@ -262,7 +262,7 @@ pub fn tripleForTarget(allocator: Allocator, target: *const std.Target) ![]const...@@ -262,7 +262,7 @@ pub fn tripleForTarget(allocator: Allocator, target: *const std.Target) ![]const
262 => "mesa",262 => "mesa",
263 else => "unknown",263 else => "unknown",
264 });264 });
265 try llvm_triple.append('-');265 try llvm_triple.append(allocator, '-');
266266
267 const llvm_os = switch (target.os.tag) {267 const llvm_os = switch (target.os.tag) {
268 .dragonfly => "dragonfly",268 .dragonfly => "dragonfly",
...@@ -312,28 +312,28 @@ pub fn tripleForTarget(allocator: Allocator, target: *const std.Target) ![]const...@@ -312,28 +312,28 @@ pub fn tripleForTarget(allocator: Allocator, target: *const std.Target) ![]const
312 .ashetos,312 .ashetos,
313 => "unknown",313 => "unknown",
314 };314 };
315 try llvm_triple.appendSlice(llvm_os);315 try llvm_triple.appendSlice(allocator, llvm_os);
316316
317 switch (target.os.versionRange()) {317 switch (target.os.versionRange()) {
318 .none,318 .none,
319 .windows,319 .windows,
320 => {},320 => {},
321 .semver => |ver| if (target.os.tag == .wasi and ver.min.major == 0) {321 .semver => |ver| if (target.os.tag == .wasi and ver.min.major == 0) {
322 try llvm_triple.print("p{d}", .{ver.min.minor});322 try llvm_triple.print(allocator, "p{d}", .{ver.min.minor});
323 } else if (target.os.tag != .amdhsa) {323 } else if (target.os.tag != .amdhsa) {
324 try llvm_triple.print("{d}.{d}.{d}", .{324 try llvm_triple.print(allocator, "{d}.{d}.{d}", .{
325 ver.min.major,325 ver.min.major,
326 ver.min.minor,326 ver.min.minor,
327 ver.min.patch,327 ver.min.patch,
328 });328 });
329 },329 },
330 inline .linux, .hurd => |ver| try llvm_triple.print("{d}.{d}.{d}", .{330 inline .linux, .hurd => |ver| try llvm_triple.print(allocator, "{d}.{d}.{d}", .{
331 ver.range.min.major,331 ver.range.min.major,
332 ver.range.min.minor,332 ver.range.min.minor,
333 ver.range.min.patch,333 ver.range.min.patch,
334 }),334 }),
335 }335 }
336 try llvm_triple.append('-');336 try llvm_triple.append(allocator, '-');
337337
338 const llvm_abi = switch (target.abi) {338 const llvm_abi = switch (target.abi) {
339 .none => if (target.os.tag == .maccatalyst) "macabi" else "unknown",339 .none => if (target.os.tag == .maccatalyst) "macabi" else "unknown",
...@@ -371,7 +371,7 @@ pub fn tripleForTarget(allocator: Allocator, target: *const std.Target) ![]const...@@ -371,7 +371,7 @@ pub fn tripleForTarget(allocator: Allocator, target: *const std.Target) ![]const
371 .ohos, .ohoseabi => "ohos",371 .ohos, .ohoseabi => "ohos",
372 .call0 => "unknown",372 .call0 => "unknown",
373 };373 };
374 try llvm_triple.appendSlice(llvm_abi);374 try llvm_triple.appendSlice(allocator, llvm_abi);
375375
376 switch (target.os.versionRange()) {376 switch (target.os.versionRange()) {
377 .none,377 .none,
...@@ -379,17 +379,17 @@ pub fn tripleForTarget(allocator: Allocator, target: *const std.Target) ![]const...@@ -379,17 +379,17 @@ pub fn tripleForTarget(allocator: Allocator, target: *const std.Target) ![]const
379 .windows,379 .windows,
380 => {},380 => {},
381 inline .hurd, .linux => |ver| if (target.abi.isGnu()) {381 inline .hurd, .linux => |ver| if (target.abi.isGnu()) {
382 try llvm_triple.print("{d}.{d}.{d}", .{382 try llvm_triple.print(allocator, "{d}.{d}.{d}", .{
383 ver.glibc.major,383 ver.glibc.major,
384 ver.glibc.minor,384 ver.glibc.minor,
385 ver.glibc.patch,385 ver.glibc.patch,
386 });386 });
387 } else if (@TypeOf(ver) == std.Target.Os.LinuxVersionRange and target.abi.isAndroid()) {387 } else if (@TypeOf(ver) == std.Target.Os.LinuxVersionRange and target.abi.isAndroid()) {
388 try llvm_triple.print("{d}", .{ver.android});388 try llvm_triple.print(allocator, "{d}", .{ver.android});
389 },389 },
390 }390 }
391391
392 return llvm_triple.toOwnedSlice();392 return llvm_triple.toOwnedSlice(allocator);
393}393}
394394
395pub const DataLayout = struct {395pub const DataLayout = struct {