std.ArrayList: make unmanaged the default

This commit is contained in:
Andrew Kelley
2025-07-31 21:54:07 -07:00
parent d625158354
commit 749f10af49
161 changed files with 861 additions and 870 deletions

View File

@@ -1826,7 +1826,7 @@ test "assign to slice.len of global variable" {
const S = struct {
const allocator = std.testing.allocator;
var list = std.ArrayList(u32).init(allocator);
var list = std.array_list.Managed(u32).init(allocator);
};
S.list.items.len = 0;

View File

@@ -200,14 +200,14 @@ test "variadic functions" {
if (builtin.cpu.arch.isSPARC() and builtin.zig_backend == .stage2_llvm) return error.SkipZigTest; // https://github.com/ziglang/zig/issues/23718
const S = struct {
fn printf(list_ptr: *std.ArrayList(u8), format: [*:0]const u8, ...) callconv(.c) void {
fn printf(list_ptr: *std.array_list.Managed(u8), format: [*:0]const u8, ...) callconv(.c) void {
var ap = @cVaStart();
defer @cVaEnd(&ap);
vprintf(list_ptr, format, &ap);
}
fn vprintf(
list: *std.ArrayList(u8),
list: *std.array_list.Managed(u8),
format: [*:0]const u8,
ap: *std.builtin.VaList,
) callconv(.c) void {
@@ -225,7 +225,7 @@ test "variadic functions" {
}
};
var list = std.ArrayList(u8).init(std.testing.allocator);
var list = std.array_list.Managed(u8).init(std.testing.allocator);
defer list.deinit();
S.printf(&list, "dsd", @as(c_int, 1), @as([*:0]const u8, "hello"), @as(c_int, 5));
try std.testing.expectEqualStrings("1hello5", list.items);

View File

@@ -1,7 +1,15 @@
const Cases = @This();
const builtin = @import("builtin");
const std = @import("std");
const assert = std.debug.assert;
const Allocator = std.mem.Allocator;
const getExternalExecutor = std.zig.system.getExternalExecutor;
const ArrayList = std.ArrayList;
gpa: Allocator,
arena: Allocator,
cases: std.ArrayList(Case),
translate: std.ArrayList(Translate),
cases: std.array_list.Managed(Case),
translate: std.array_list.Managed(Translate),
pub const IncrementalCase = struct {
base_path: []const u8,
@@ -40,7 +48,7 @@ pub const Case = struct {
output_mode: std.builtin.OutputMode,
optimize_mode: std.builtin.OptimizeMode = .Debug,
files: std.ArrayList(File),
files: std.array_list.Managed(File),
case: ?union(enum) {
/// Check that it compiles with no errors.
Compile: void,
@@ -77,7 +85,7 @@ pub const Case = struct {
/// `lower_to_build_steps`. If null, file imports will assert.
import_path: ?[]const u8 = null,
deps: std.ArrayList(DepModule),
deps: std.array_list.Managed(DepModule),
pub fn addSourceFile(case: *Case, name: []const u8, src: [:0]const u8) void {
case.files.append(.{ .path = name, .src = src }) catch @panic("OOM");
@@ -148,7 +156,7 @@ pub fn addExe(
.files = .init(ctx.arena),
.case = null,
.output_mode = .Exe,
.deps = std.ArrayList(DepModule).init(ctx.arena),
.deps = std.array_list.Managed(DepModule).init(ctx.arena),
}) catch @panic("out of memory");
return &ctx.cases.items[ctx.cases.items.len - 1];
}
@@ -167,7 +175,7 @@ pub fn exeFromCompiledC(ctx: *Cases, name: []const u8, target_query: std.Target.
.files = .init(ctx.arena),
.case = null,
.output_mode = .Exe,
.deps = std.ArrayList(DepModule).init(ctx.arena),
.deps = std.array_list.Managed(DepModule).init(ctx.arena),
.link_libc = true,
}) catch @panic("out of memory");
return &ctx.cases.items[ctx.cases.items.len - 1];
@@ -197,7 +205,7 @@ pub fn addObjLlvm(ctx: *Cases, name: []const u8, target: std.Build.ResolvedTarge
.files = .init(ctx.arena),
.case = null,
.output_mode = .Obj,
.deps = std.ArrayList(DepModule).init(ctx.arena),
.deps = std.array_list.Managed(DepModule).init(ctx.arena),
.backend = .llvm,
.emit_bin = can_emit_bin,
.emit_asm = can_emit_asm,
@@ -216,7 +224,7 @@ pub fn addObj(
.files = .init(ctx.arena),
.case = null,
.output_mode = .Obj,
.deps = std.ArrayList(DepModule).init(ctx.arena),
.deps = std.array_list.Managed(DepModule).init(ctx.arena),
}) catch @panic("out of memory");
return &ctx.cases.items[ctx.cases.items.len - 1];
}
@@ -233,7 +241,7 @@ pub fn addTest(
.case = null,
.output_mode = .Exe,
.is_test = true,
.deps = std.ArrayList(DepModule).init(ctx.arena),
.deps = std.array_list.Managed(DepModule).init(ctx.arena),
}) catch @panic("out of memory");
return &ctx.cases.items[ctx.cases.items.len - 1];
}
@@ -258,7 +266,7 @@ pub fn addC(ctx: *Cases, name: []const u8, target: std.Build.ResolvedTarget) *Ca
.files = .init(ctx.arena),
.case = null,
.output_mode = .Obj,
.deps = std.ArrayList(DepModule).init(ctx.arena),
.deps = std.array_list.Managed(DepModule).init(ctx.arena),
}) catch @panic("out of memory");
return &ctx.cases.items[ctx.cases.items.len - 1];
}
@@ -364,7 +372,7 @@ fn addFromDirInner(
b: *std.Build,
) !void {
var it = try iterable_dir.walk(ctx.arena);
var filenames: std.ArrayListUnmanaged([]const u8) = .empty;
var filenames: ArrayList([]const u8) = .empty;
while (try it.next()) |entry| {
if (entry.kind != .file) continue;
@@ -428,7 +436,7 @@ fn addFromDirInner(
continue;
}
var cases = std.ArrayList(usize).init(ctx.arena);
var cases = std.array_list.Managed(usize).init(ctx.arena);
// Cross-product to get all possible test combinations
for (targets) |target_query| {
@@ -462,7 +470,7 @@ fn addFromDirInner(
.link_libc = link_libc,
.pic = pic,
.pie = pie,
.deps = std.ArrayList(DepModule).init(ctx.cases.allocator),
.deps = std.array_list.Managed(DepModule).init(ctx.cases.allocator),
.imports = imports,
.target = resolved_target,
});
@@ -495,8 +503,8 @@ fn addFromDirInner(
pub fn init(gpa: Allocator, arena: Allocator) Cases {
return .{
.gpa = gpa,
.cases = std.ArrayList(Case).init(gpa),
.translate = std.ArrayList(Translate).init(gpa),
.cases = std.array_list.Managed(Case).init(gpa),
.translate = std.array_list.Managed(Translate).init(gpa),
.arena = arena,
};
}
@@ -995,7 +1003,7 @@ const TestManifest = struct {
key: []const u8,
comptime T: type,
) ![]const T {
var out = std.ArrayList(T).init(allocator);
var out = std.array_list.Managed(T).init(allocator);
defer out.deinit();
var it = self.getConfigForKey(key, T);
while (try it.next()) |item| {
@@ -1018,7 +1026,7 @@ const TestManifest = struct {
}
fn trailingSplit(self: TestManifest, allocator: Allocator) error{OutOfMemory}![]const u8 {
var out = std.ArrayList(u8).init(allocator);
var out = std.array_list.Managed(u8).init(allocator);
defer out.deinit();
var trailing_it = self.trailing();
while (trailing_it.next()) |line| {
@@ -1032,7 +1040,7 @@ const TestManifest = struct {
}
fn trailingLines(self: TestManifest, allocator: Allocator) error{OutOfMemory}![]const []const u8 {
var out = std.ArrayList([]const u8).init(allocator);
var out = std.array_list.Managed([]const u8).init(allocator);
defer out.deinit();
var it = self.trailing();
while (it.next()) |line| {
@@ -1043,9 +1051,9 @@ const TestManifest = struct {
fn trailingLinesSplit(self: TestManifest, allocator: Allocator) error{OutOfMemory}![]const []const u8 {
// Collect output lines split by empty lines
var out = std.ArrayList([]const u8).init(allocator);
var out = std.array_list.Managed([]const u8).init(allocator);
defer out.deinit();
var buf = std.ArrayList(u8).init(allocator);
var buf = std.array_list.Managed(u8).init(allocator);
defer buf.deinit();
var it = self.trailing();
while (it.next()) |line| {
@@ -1119,13 +1127,6 @@ const TestManifest = struct {
}
};
const Cases = @This();
const builtin = @import("builtin");
const std = @import("std");
const assert = std.debug.assert;
const Allocator = std.mem.Allocator;
const getExternalExecutor = std.zig.system.getExternalExecutor;
fn resolveTargetQuery(query: std.Target.Query) std.Build.ResolvedTarget {
return .{
.query = query,

View File

@@ -15,7 +15,7 @@ const Special = enum {
const TestCase = struct {
name: []const u8,
sources: ArrayList(SourceFile),
sources: std.array_list.Managed(SourceFile),
expected_output: []const u8,
link_libc: bool,
special: Special,
@@ -41,7 +41,7 @@ const TestCase = struct {
pub fn createExtra(self: *CompareOutput, name: []const u8, source: []const u8, expected_output: []const u8, special: Special) TestCase {
var tc = TestCase{
.name = name,
.sources = ArrayList(TestCase.SourceFile).init(self.b.allocator),
.sources = std.array_list.Managed(TestCase.SourceFile).init(self.b.allocator),
.expected_output = expected_output,
.link_libc = false,
.special = special,
@@ -170,7 +170,6 @@ pub fn addCase(self: *CompareOutput, case: TestCase) void {
const CompareOutput = @This();
const std = @import("std");
const ArrayList = std.ArrayList;
const mem = std.mem;
const fs = std.fs;
const OptimizeMode = std.builtin.OptimizeMode;

View File

@@ -6,7 +6,7 @@ target: std.Build.ResolvedTarget,
const TestCase = struct {
name: []const u8,
sources: ArrayList(SourceFile),
sources: std.array_list.Managed(SourceFile),
expected_stdout: []const u8,
allow_warnings: bool,
@@ -34,7 +34,7 @@ pub fn create(
const tc = self.b.allocator.create(TestCase) catch unreachable;
tc.* = TestCase{
.name = name,
.sources = ArrayList(TestCase.SourceFile).init(self.b.allocator),
.sources = std.array_list.Managed(TestCase.SourceFile).init(self.b.allocator),
.expected_stdout = expected_stdout,
.allow_warnings = allow_warnings,
};
@@ -103,7 +103,6 @@ pub fn addCase(self: *RunTranslatedCContext, case: *const TestCase) void {
const RunTranslatedCContext = @This();
const std = @import("std");
const ArrayList = std.ArrayList;
const fmt = std.fmt;
const mem = std.mem;
const fs = std.fs;

View File

@@ -6,8 +6,8 @@ test_target_filters: []const []const u8,
const TestCase = struct {
name: []const u8,
sources: ArrayList(SourceFile),
expected_lines: ArrayList([]const u8),
sources: std.array_list.Managed(SourceFile),
expected_lines: std.array_list.Managed([]const u8),
allow_warnings: bool,
target: std.Target.Query = .{},
@@ -39,8 +39,8 @@ pub fn create(
const tc = self.b.allocator.create(TestCase) catch unreachable;
tc.* = TestCase{
.name = name,
.sources = ArrayList(TestCase.SourceFile).init(self.b.allocator),
.expected_lines = ArrayList([]const u8).init(self.b.allocator),
.sources = std.array_list.Managed(TestCase.SourceFile).init(self.b.allocator),
.expected_lines = std.array_list.Managed([]const u8).init(self.b.allocator),
.allow_warnings = allow_warnings,
};
@@ -125,7 +125,6 @@ pub fn addCase(self: *TranslateCContext, case: *const TestCase) void {
const TranslateCContext = @This();
const std = @import("std");
const ArrayList = std.ArrayList;
const fmt = std.fmt;
const mem = std.mem;
const fs = std.fs;

View File

@@ -24,7 +24,7 @@ pub fn main() !void {
// - replace function name with symbolic string when optimize_mode != .Debug
// - skip empty lines
const got: []const u8 = got_result: {
var buf = std.ArrayList(u8).init(arena);
var buf = std.array_list.Managed(u8).init(arena);
defer buf.deinit();
if (stderr.len != 0 and stderr[stderr.len - 1] == '\n') stderr = stderr[0 .. stderr.len - 1];
var it = mem.splitScalar(u8, stderr, '\n');

View File

@@ -41,7 +41,7 @@ pub fn main() !void {
std.debug.print("rand seed: {}\n", .{seed});
}
var cmd_line_w_buf = std.ArrayList(u16).init(allocator);
var cmd_line_w_buf = std.array_list.Managed(u16).init(allocator);
defer cmd_line_w_buf.deinit();
var i: u64 = 0;
@@ -84,7 +84,7 @@ fn randomCommandLineW(allocator: Allocator, rand: std.Random) ![:0]const u16 {
};
const choices = rand.uintAtMostBiased(u16, 256);
var buf = try std.ArrayList(u16).initCapacity(allocator, choices);
var buf = try std.array_list.Managed(u16).initCapacity(allocator, choices);
errdefer buf.deinit();
for (0..choices) |_| {

View File

@@ -17,7 +17,7 @@ fn testArgv(expected_args: []const [*:0]const u16) !void {
const allocator = arena_state.allocator();
const args = try std.process.argsAlloc(allocator);
var wtf8_buf = std.ArrayList(u8).init(allocator);
var wtf8_buf = std.array_list.Managed(u8).init(allocator);
var eql = true;
if (args.len != expected_args.len) eql = false;

View File

@@ -42,7 +42,7 @@ pub fn main() anyerror!void {
try tmp.dir.setAsCwd();
defer tmp.parent_dir.setAsCwd() catch {};
var buf = try std.ArrayList(u8).initCapacity(allocator, 128);
var buf = try std.array_list.Managed(u8).initCapacity(allocator, 128);
defer buf.deinit();
try buf.appendSlice("@echo off\n");
try buf.append('"');
@@ -80,7 +80,7 @@ fn testExec(allocator: std.mem.Allocator, args: []const []const u8, env: ?*std.p
}
fn testExecBat(allocator: std.mem.Allocator, bat: []const u8, args: []const []const u8, env: ?*std.process.EnvMap) !void {
var argv = try std.ArrayList([]const u8).initCapacity(allocator, 1 + args.len);
var argv = try std.array_list.Managed([]const u8).initCapacity(allocator, 1 + args.len);
defer argv.deinit();
argv.appendAssumeCapacity(bat);
argv.appendSliceAssumeCapacity(args);
@@ -121,7 +121,7 @@ fn randomArg(allocator: Allocator, rand: std.Random) ![]const u8 {
};
const choices = rand.uintAtMostBiased(u16, 256);
var buf = try std.ArrayList(u8).initCapacity(allocator, choices);
var buf = try std.array_list.Managed(u8).initCapacity(allocator, choices);
errdefer buf.deinit();
var last_codepoint: u21 = 0;

View File

@@ -16,7 +16,7 @@ pub fn main() anyerror!void {
try tmp.dir.setAsCwd();
defer tmp.parent_dir.setAsCwd() catch {};
var buf = try std.ArrayList(u8).initCapacity(allocator, 128);
var buf = try std.array_list.Managed(u8).initCapacity(allocator, 128);
defer buf.deinit();
try buf.appendSlice("@echo off\n");
try buf.append('"');
@@ -127,7 +127,7 @@ fn testExec(allocator: std.mem.Allocator, args: []const []const u8, env: ?*std.p
}
fn testExecBat(allocator: std.mem.Allocator, bat: []const u8, args: []const []const u8, env: ?*std.process.EnvMap) !void {
var argv = try std.ArrayList([]const u8).initCapacity(allocator, 1 + args.len);
var argv = try std.array_list.Managed([]const u8).initCapacity(allocator, 1 + args.len);
defer argv.deinit();
argv.appendAssumeCapacity(bat);
argv.appendSliceAssumeCapacity(args);