authorgravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2025-07-15 10:05:00-07:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2025-07-15 10:05:00-07:00
log87be80f6e9d1aa95cb55a8d7ef95808ca4aba44b
tree18732ce77a5dcc8848a701bdc29fcfeb5acfc807
parentac8f757cb371f25472db7c9674b3e2958d86f9ec
parent0cb558ba3abb0ac7b48c1a30c9a13c924f950172

Merge remote-tracking branch 'origin/master' into wrangle-writer-buffering


10 files changed, 87 insertions(+), 174 deletions(-)

doc/langref/defer_unwind.zig+2-3
...@@ -1,8 +1,7 @@...@@ -1,8 +1,7 @@
1const std = @import("std");1const std = @import("std");
2const expect = std.testing.expect;
3const print = std.debug.print;2const print = std.debug.print;
43
5test "defer unwinding" {4pub fn main() void {
6 print("\n", .{});5 print("\n", .{});
76
8 defer {7 defer {
...@@ -19,4 +18,4 @@ test "defer unwinding" {...@@ -19,4 +18,4 @@ test "defer unwinding" {
19 }18 }
20}19}
2120
22// test21// exe=succeed
doc/langref/inline_call.zig+5-2
...@@ -1,11 +1,14 @@...@@ -1,11 +1,14 @@
1test "inline function call" {1const std = @import("std");
2
3pub fn main() void {
2 if (foo(1200, 34) != 1234) {4 if (foo(1200, 34) != 1234) {
3 @compileError("bad");5 @compileError("bad");
4 }6 }
5}7}
68
7inline fn foo(a: i32, b: i32) i32 {9inline fn foo(a: i32, b: i32) i32 {
10 std.debug.print("runtime a = {} b = {}", .{ a, b });
8 return a + b;11 return a + b;
9}12}
1013
11// test14// exe=succeed
lib/std/Io/Reader.zig+67-37
...@@ -1096,33 +1096,41 @@ pub inline fn takeInt(r: *Reader, comptime T: type, endian: std.builtin.Endian)...@@ -1096,33 +1096,41 @@ pub inline fn takeInt(r: *Reader, comptime T: type, endian: std.builtin.Endian)
1096 return std.mem.readInt(T, try r.takeArray(n), endian);1096 return std.mem.readInt(T, try r.takeArray(n), endian);
1097}1097}
10981098
1099/// Asserts the buffer was initialized with a capacity at least `@bitSizeOf(T) / 8`.
1100pub inline fn peekInt(r: *Reader, comptime T: type, endian: std.builtin.Endian) Error!T {
1101 const n = @divExact(@typeInfo(T).int.bits, 8);
1102 return std.mem.readInt(T, try r.peekArray(n), endian);
1103}
1104
1099/// Asserts the buffer was initialized with a capacity at least `n`.1105/// Asserts the buffer was initialized with a capacity at least `n`.
1100pub fn takeVarInt(r: *Reader, comptime Int: type, endian: std.builtin.Endian, n: usize) Error!Int {1106pub fn takeVarInt(r: *Reader, comptime Int: type, endian: std.builtin.Endian, n: usize) Error!Int {
1101 assert(n <= @sizeOf(Int));1107 assert(n <= @sizeOf(Int));
1102 return std.mem.readVarInt(Int, try r.take(n), endian);1108 return std.mem.readVarInt(Int, try r.take(n), endian);
1103}1109}
11041110
1105/// Asserts the buffer was initialized with a capacity at least `@sizeOf(T)`.1111/// Obtains an unaligned pointer to the beginning of the stream, reinterpreted
1112/// as a pointer to the provided type, advancing the seek position.
1106///1113///
1107/// Advances the seek position.1114/// Asserts the buffer was initialized with a capacity at least `@sizeOf(T)`.
1108///1115///
1109/// See also:1116/// See also:
1110/// * `peekStruct`1117/// * `peekStructReference`
1111/// * `takeStructEndian`1118/// * `takeStruct`
1112pub fn takeStruct(r: *Reader, comptime T: type) Error!*align(1) T {1119pub fn takeStructReference(r: *Reader, comptime T: type) Error!*align(1) T {
1113 // Only extern and packed structs have defined in-memory layout.1120 // Only extern and packed structs have defined in-memory layout.
1114 comptime assert(@typeInfo(T).@"struct".layout != .auto);1121 comptime assert(@typeInfo(T).@"struct".layout != .auto);
1115 return @ptrCast(try r.takeArray(@sizeOf(T)));1122 return @ptrCast(try r.takeArray(@sizeOf(T)));
1116}1123}
11171124
1118/// Asserts the buffer was initialized with a capacity at least `@sizeOf(T)`.1125/// Obtains an unaligned pointer to the beginning of the stream, reinterpreted
1126/// as a pointer to the provided type, without advancing the seek position.
1119///1127///
1120/// Does not advance the seek position.1128/// Asserts the buffer was initialized with a capacity at least `@sizeOf(T)`.
1121///1129///
1122/// See also:1130/// See also:
1123/// * `takeStruct`1131/// * `takeStructReference`
1124/// * `peekStructEndian`1132/// * `peekStruct`
1125pub fn peekStruct(r: *Reader, comptime T: type) Error!*align(1) T {1133pub fn peekStructReference(r: *Reader, comptime T: type) Error!*align(1) T {
1126 // Only extern and packed structs have defined in-memory layout.1134 // Only extern and packed structs have defined in-memory layout.
1127 comptime assert(@typeInfo(T).@"struct".layout != .auto);1135 comptime assert(@typeInfo(T).@"struct".layout != .auto);
1128 return @ptrCast(try r.peekArray(@sizeOf(T)));1136 return @ptrCast(try r.peekArray(@sizeOf(T)));
...@@ -1134,12 +1142,23 @@ pub fn peekStruct(r: *Reader, comptime T: type) Error!*align(1) T {...@@ -1134,12 +1142,23 @@ pub fn peekStruct(r: *Reader, comptime T: type) Error!*align(1) T {
1134/// when `endian` is comptime-known and matches the host endianness.1142/// when `endian` is comptime-known and matches the host endianness.
1135///1143///
1136/// See also:1144/// See also:
1137/// * `takeStruct`1145/// * `takeStructReference`
1138/// * `peekStructEndian`1146/// * `peekStruct`
1139pub inline fn takeStructEndian(r: *Reader, comptime T: type, endian: std.builtin.Endian) Error!T {1147pub inline fn takeStruct(r: *Reader, comptime T: type, endian: std.builtin.Endian) Error!T {
1140 var res = (try r.takeStruct(T)).*;1148 switch (@typeInfo(T)) {
1141 if (native_endian != endian) std.mem.byteSwapAllFields(T, &res);1149 .@"struct" => |info| switch (info.layout) {
1142 return res;1150 .auto => @compileError("ill-defined memory layout"),
1151 .@"extern" => {
1152 var res = (try r.takeStructReference(T)).*;
1153 if (native_endian != endian) std.mem.byteSwapAllFields(T, &res);
1154 return res;
1155 },
1156 .@"packed" => {
1157 return takeInt(r, info.backing_integer.?, endian);
1158 },
1159 },
1160 else => @compileError("not a struct"),
1161 }
1143}1162}
11441163
1145/// Asserts the buffer was initialized with a capacity at least `@sizeOf(T)`.1164/// Asserts the buffer was initialized with a capacity at least `@sizeOf(T)`.
...@@ -1148,12 +1167,23 @@ pub inline fn takeStructEndian(r: *Reader, comptime T: type, endian: std.builtin...@@ -1148,12 +1167,23 @@ pub inline fn takeStructEndian(r: *Reader, comptime T: type, endian: std.builtin
1148/// when `endian` is comptime-known and matches the host endianness.1167/// when `endian` is comptime-known and matches the host endianness.
1149///1168///
1150/// See also:1169/// See also:
1151/// * `takeStructEndian`1170/// * `takeStruct`
1152/// * `peekStruct`1171/// * `peekStructReference`
1153pub inline fn peekStructEndian(r: *Reader, comptime T: type, endian: std.builtin.Endian) Error!T {1172pub inline fn peekStruct(r: *Reader, comptime T: type, endian: std.builtin.Endian) Error!T {
1154 var res = (try r.peekStruct(T)).*;1173 switch (@typeInfo(T)) {
1155 if (native_endian != endian) std.mem.byteSwapAllFields(T, &res);1174 .@"struct" => |info| switch (info.layout) {
1156 return res;1175 .auto => @compileError("ill-defined memory layout"),
1176 .@"extern" => {
1177 var res = (try r.peekStructReference(T)).*;
1178 if (native_endian != endian) std.mem.byteSwapAllFields(T, &res);
1179 return res;
1180 },
1181 .@"packed" => {
1182 return peekInt(r, info.backing_integer.?, endian);
1183 },
1184 },
1185 else => @compileError("not a struct"),
1186 }
1157}1187}
11581188
1159pub const TakeEnumError = Error || error{InvalidEnumTag};1189pub const TakeEnumError = Error || error{InvalidEnumTag};
...@@ -1519,43 +1549,43 @@ test takeVarInt {...@@ -1519,43 +1549,43 @@ test takeVarInt {
1519 try testing.expectError(error.EndOfStream, r.takeVarInt(u16, .little, 1));1549 try testing.expectError(error.EndOfStream, r.takeVarInt(u16, .little, 1));
1520}1550}
15211551
1522test takeStruct {1552test takeStructReference {
1523 var r: Reader = .fixed(&.{ 0x12, 0x00, 0x34, 0x56 });1553 var r: Reader = .fixed(&.{ 0x12, 0x00, 0x34, 0x56 });
1524 const S = extern struct { a: u8, b: u16 };1554 const S = extern struct { a: u8, b: u16 };
1525 switch (native_endian) {1555 switch (native_endian) {
1526 .little => try testing.expectEqual(@as(S, .{ .a = 0x12, .b = 0x5634 }), (try r.takeStruct(S)).*),1556 .little => try testing.expectEqual(@as(S, .{ .a = 0x12, .b = 0x5634 }), (try r.takeStructReference(S)).*),
1527 .big => try testing.expectEqual(@as(S, .{ .a = 0x12, .b = 0x3456 }), (try r.takeStruct(S)).*),1557 .big => try testing.expectEqual(@as(S, .{ .a = 0x12, .b = 0x3456 }), (try r.takeStructReference(S)).*),
1528 }1558 }
1529 try testing.expectError(error.EndOfStream, r.takeStruct(S));1559 try testing.expectError(error.EndOfStream, r.takeStructReference(S));
1530}1560}
15311561
1532test peekStruct {1562test peekStructReference {
1533 var r: Reader = .fixed(&.{ 0x12, 0x00, 0x34, 0x56 });1563 var r: Reader = .fixed(&.{ 0x12, 0x00, 0x34, 0x56 });
1534 const S = extern struct { a: u8, b: u16 };1564 const S = extern struct { a: u8, b: u16 };
1535 switch (native_endian) {1565 switch (native_endian) {
1536 .little => {1566 .little => {
1537 try testing.expectEqual(@as(S, .{ .a = 0x12, .b = 0x5634 }), (try r.peekStruct(S)).*);1567 try testing.expectEqual(@as(S, .{ .a = 0x12, .b = 0x5634 }), (try r.peekStructReference(S)).*);
1538 try testing.expectEqual(@as(S, .{ .a = 0x12, .b = 0x5634 }), (try r.peekStruct(S)).*);1568 try testing.expectEqual(@as(S, .{ .a = 0x12, .b = 0x5634 }), (try r.peekStructReference(S)).*);
1539 },1569 },
1540 .big => {1570 .big => {
1541 try testing.expectEqual(@as(S, .{ .a = 0x12, .b = 0x3456 }), (try r.peekStruct(S)).*);1571 try testing.expectEqual(@as(S, .{ .a = 0x12, .b = 0x3456 }), (try r.peekStructReference(S)).*);
1542 try testing.expectEqual(@as(S, .{ .a = 0x12, .b = 0x3456 }), (try r.peekStruct(S)).*);1572 try testing.expectEqual(@as(S, .{ .a = 0x12, .b = 0x3456 }), (try r.peekStructReference(S)).*);
1543 },1573 },
1544 }1574 }
1545}1575}
15461576
1547test takeStructEndian {1577test takeStruct {
1548 var r: Reader = .fixed(&.{ 0x12, 0x00, 0x34, 0x56 });1578 var r: Reader = .fixed(&.{ 0x12, 0x00, 0x34, 0x56 });
1549 const S = extern struct { a: u8, b: u16 };1579 const S = extern struct { a: u8, b: u16 };
1550 try testing.expectEqual(@as(S, .{ .a = 0x12, .b = 0x3456 }), try r.takeStructEndian(S, .big));1580 try testing.expectEqual(@as(S, .{ .a = 0x12, .b = 0x3456 }), try r.takeStruct(S, .big));
1551 try testing.expectError(error.EndOfStream, r.takeStructEndian(S, .little));1581 try testing.expectError(error.EndOfStream, r.takeStruct(S, .little));
1552}1582}
15531583
1554test peekStructEndian {1584test peekStruct {
1555 var r: Reader = .fixed(&.{ 0x12, 0x00, 0x34, 0x56 });1585 var r: Reader = .fixed(&.{ 0x12, 0x00, 0x34, 0x56 });
1556 const S = extern struct { a: u8, b: u16 };1586 const S = extern struct { a: u8, b: u16 };
1557 try testing.expectEqual(@as(S, .{ .a = 0x12, .b = 0x3456 }), try r.peekStructEndian(S, .big));1587 try testing.expectEqual(@as(S, .{ .a = 0x12, .b = 0x3456 }), try r.peekStruct(S, .big));
1558 try testing.expectEqual(@as(S, .{ .a = 0x12, .b = 0x5634 }), try r.peekStructEndian(S, .little));1588 try testing.expectEqual(@as(S, .{ .a = 0x12, .b = 0x5634 }), try r.peekStruct(S, .little));
1559}1589}
15601590
1561test takeEnum {1591test takeEnum {
lib/std/Io/Writer.zig+3-8
...@@ -796,16 +796,9 @@ pub inline fn writeInt(w: *Writer, comptime T: type, value: T, endian: std.built...@@ -796,16 +796,9 @@ pub inline fn writeInt(w: *Writer, comptime T: type, value: T, endian: std.built
796 return w.writeAll(&bytes);796 return w.writeAll(&bytes);
797}797}
798798
799pub fn writeStruct(w: *Writer, value: anytype) Error!void {
800 // Only extern and packed structs have defined in-memory layout.
801 comptime assert(@typeInfo(@TypeOf(value)).@"struct".layout != .auto);
802 return w.writeAll(std.mem.asBytes(&value));
803}
804
805/// The function is inline to avoid the dead code in case `endian` is799/// The function is inline to avoid the dead code in case `endian` is
806/// comptime-known and matches host endianness.800/// comptime-known and matches host endianness.
807/// TODO: make sure this value is not a reference type801pub inline fn writeStruct(w: *Writer, value: anytype, endian: std.builtin.Endian) Error!void {
808pub inline fn writeStructEndian(w: *Writer, value: anytype, endian: std.builtin.Endian) Error!void {
809 switch (@typeInfo(@TypeOf(value))) {802 switch (@typeInfo(@TypeOf(value))) {
810 .@"struct" => |info| switch (info.layout) {803 .@"struct" => |info| switch (info.layout) {
811 .auto => @compileError("ill-defined memory layout"),804 .auto => @compileError("ill-defined memory layout"),
...@@ -2446,12 +2439,14 @@ pub const Allocating = struct {...@@ -2446,12 +2439,14 @@ pub const Allocating = struct {
24462439
2447 pub fn toOwnedSlice(a: *Allocating) error{OutOfMemory}![]u8 {2440 pub fn toOwnedSlice(a: *Allocating) error{OutOfMemory}![]u8 {
2448 var list = a.toArrayList();2441 var list = a.toArrayList();
2442 defer a.setArrayList(list);
2449 return list.toOwnedSlice(a.allocator);2443 return list.toOwnedSlice(a.allocator);
2450 }2444 }
24512445
2452 pub fn toOwnedSliceSentinel(a: *Allocating, comptime sentinel: u8) error{OutOfMemory}![:sentinel]u8 {2446 pub fn toOwnedSliceSentinel(a: *Allocating, comptime sentinel: u8) error{OutOfMemory}![:sentinel]u8 {
2453 const gpa = a.allocator;2447 const gpa = a.allocator;
2454 var list = toArrayList(a);2448 var list = toArrayList(a);
2449 defer a.setArrayList(list);
2455 return list.toOwnedSliceSentinel(gpa, sentinel);2450 return list.toOwnedSliceSentinel(gpa, sentinel);
2456 }2451 }
24572452
lib/std/Target.zig+2-2
...@@ -507,7 +507,7 @@ pub const Os = struct {...@@ -507,7 +507,7 @@ pub const Os = struct {
507 .freebsd => .{507 .freebsd => .{
508 .semver = .{508 .semver = .{
509 .min = blk: {509 .min = blk: {
510 const default_min: std.SemanticVersion = .{ .major = 13, .minor = 4, .patch = 0 };510 const default_min: std.SemanticVersion = .{ .major = 14, .minor = 0, .patch = 0 };
511511
512 for (std.zig.target.available_libcs) |libc| {512 for (std.zig.target.available_libcs) |libc| {
513 if (libc.arch != arch or libc.os != tag or libc.abi != abi) continue;513 if (libc.arch != arch or libc.os != tag or libc.abi != abi) continue;
...@@ -525,7 +525,7 @@ pub const Os = struct {...@@ -525,7 +525,7 @@ pub const Os = struct {
525 .netbsd => .{525 .netbsd => .{
526 .semver = .{526 .semver = .{
527 .min = blk: {527 .min = blk: {
528 const default_min: std.SemanticVersion = .{ .major = 9, .minor = 4, .patch = 0 };528 const default_min: std.SemanticVersion = .{ .major = 10, .minor = 1, .patch = 0 };
529529
530 for (std.zig.target.available_libcs) |libc| {530 for (std.zig.target.available_libcs) |libc| {
531 if (libc.arch != arch or libc.os != tag or libc.abi != abi) continue;531 if (libc.arch != arch or libc.os != tag or libc.abi != abi) continue;
lib/std/posix/test.zig+5
...@@ -1001,6 +1001,11 @@ test "sigset_t bits" {...@@ -1001,6 +1001,11 @@ test "sigset_t bits" {
1001 if (native_os == .wasi or native_os == .windows)1001 if (native_os == .wasi or native_os == .windows)
1002 return error.SkipZigTest;1002 return error.SkipZigTest;
10031003
1004 if (true) {
1005 // https://github.com/ziglang/zig/issues/24380
1006 return error.SkipZigTest;
1007 }
1008
1004 const S = struct {1009 const S = struct {
1005 var expected_sig: i32 = undefined;1010 var expected_sig: i32 = undefined;
1006 var handler_called_count: u32 = 0;1011 var handler_called_count: u32 = 0;
src/Zcu.zig+1-1
...@@ -2809,7 +2809,7 @@ pub fn loadZirCache(gpa: Allocator, cache_file: std.fs.File) !Zir {...@@ -2809,7 +2809,7 @@ pub fn loadZirCache(gpa: Allocator, cache_file: std.fs.File) !Zir {
2809 var buffer: [2000]u8 = undefined;2809 var buffer: [2000]u8 = undefined;
2810 var file_reader = cache_file.reader(&buffer);2810 var file_reader = cache_file.reader(&buffer);
2811 return result: {2811 return result: {
2812 const header = file_reader.interface.takeStruct(Zir.Header) catch |err| break :result err;2812 const header = file_reader.interface.takeStructReference(Zir.Header) catch |err| break :result err;
2813 break :result loadZirCacheBody(gpa, header.*, &file_reader.interface);2813 break :result loadZirCacheBody(gpa, header.*, &file_reader.interface);
2814 } catch |err| switch (err) {2814 } catch |err| switch (err) {
2815 error.ReadFailed => return file_reader.err.?,2815 error.ReadFailed => return file_reader.err.?,
src/Zcu/PerThread.zig+1-1
...@@ -349,7 +349,7 @@ fn loadZirZoirCache(...@@ -349,7 +349,7 @@ fn loadZirZoirCache(
349 const cache_br = &cache_fr.interface;349 const cache_br = &cache_fr.interface;
350350
351 // First we read the header to determine the lengths of arrays.351 // First we read the header to determine the lengths of arrays.
352 const header = (cache_br.takeStruct(Header) catch |err| switch (err) {352 const header = (cache_br.takeStructReference(Header) catch |err| switch (err) {
353 error.ReadFailed => return cache_fr.err.?,353 error.ReadFailed => return cache_fr.err.?,
354 // This can happen if Zig bails out of this function between creating354 // This can happen if Zig bails out of this function between creating
355 // the cached file and writing it.355 // the cached file and writing it.
src/main.zig+1
...@@ -334,6 +334,7 @@ fn mainArgs(gpa: Allocator, arena: Allocator, args: []const []const u8) !void {...@@ -334,6 +334,7 @@ fn mainArgs(gpa: Allocator, arena: Allocator, args: []const []const u8) !void {
334 return jitCmd(gpa, arena, cmd_args, .{334 return jitCmd(gpa, arena, cmd_args, .{
335 .cmd_name = "std",335 .cmd_name = "std",
336 .root_src_path = "std-docs.zig",336 .root_src_path = "std-docs.zig",
337 .windows_libs = &.{"ws2_32"},
337 .prepend_zig_lib_dir_path = true,338 .prepend_zig_lib_dir_path = true,
338 .prepend_zig_exe_path = true,339 .prepend_zig_exe_path = true,
339 .prepend_global_cache_path = true,340 .prepend_global_cache_path = true,
test/tests.zig-120
...@@ -104,12 +104,6 @@ const test_targets = blk: {...@@ -104,12 +104,6 @@ const test_targets = blk: {
104 .target = .{104 .target = .{
105 .cpu_arch = .aarch64,105 .cpu_arch = .aarch64,
106 .os_tag = .freebsd,106 .os_tag = .freebsd,
107 // Remove this when we bump our baseline to 14.0.0.
108 .os_version_min = .{ .semver = .{
109 .major = 14,
110 .minor = 0,
111 .patch = 0,
112 } },
113 .abi = .none,107 .abi = .none,
114 },108 },
115 .link_libc = true,109 .link_libc = true,
...@@ -119,12 +113,6 @@ const test_targets = blk: {...@@ -119,12 +113,6 @@ const test_targets = blk: {
119 .target = .{113 .target = .{
120 .cpu_arch = .arm,114 .cpu_arch = .arm,
121 .os_tag = .freebsd,115 .os_tag = .freebsd,
122 // Remove this when we bump our baseline to 14.0.0.
123 .os_version_min = .{ .semver = .{
124 .major = 14,
125 .minor = 0,
126 .patch = 0,
127 } },
128 .abi = .eabihf,116 .abi = .eabihf,
129 },117 },
130 .link_libc = true,118 .link_libc = true,
...@@ -136,12 +124,6 @@ const test_targets = blk: {...@@ -136,12 +124,6 @@ const test_targets = blk: {
136 .target = .{124 .target = .{
137 .cpu_arch = .powerpc64,125 .cpu_arch = .powerpc64,
138 .os_tag = .freebsd,126 .os_tag = .freebsd,
139 // Remove this when we bump our baseline to 14.0.0.
140 .os_version_min = .{ .semver = .{
141 .major = 14,
142 .minor = 0,
143 .patch = 0,
144 } },
145 .abi = .none,127 .abi = .none,
146 },128 },
147 .link_libc = true,129 .link_libc = true,
...@@ -151,12 +133,6 @@ const test_targets = blk: {...@@ -151,12 +133,6 @@ const test_targets = blk: {
151 .target = .{133 .target = .{
152 .cpu_arch = .powerpc64le,134 .cpu_arch = .powerpc64le,
153 .os_tag = .freebsd,135 .os_tag = .freebsd,
154 // Remove this when we bump our baseline to 14.0.0.
155 .os_version_min = .{ .semver = .{
156 .major = 14,
157 .minor = 0,
158 .patch = 0,
159 } },
160 .abi = .none,136 .abi = .none,
161 },137 },
162 .link_libc = true,138 .link_libc = true,
...@@ -166,12 +142,6 @@ const test_targets = blk: {...@@ -166,12 +142,6 @@ const test_targets = blk: {
166 .target = .{142 .target = .{
167 .cpu_arch = .riscv64,143 .cpu_arch = .riscv64,
168 .os_tag = .freebsd,144 .os_tag = .freebsd,
169 // Remove this when we bump our baseline to 14.0.0.
170 .os_version_min = .{ .semver = .{
171 .major = 14,
172 .minor = 0,
173 .patch = 0,
174 } },
175 .abi = .none,145 .abi = .none,
176 },146 },
177 .link_libc = true,147 .link_libc = true,
...@@ -181,12 +151,6 @@ const test_targets = blk: {...@@ -181,12 +151,6 @@ const test_targets = blk: {
181 .target = .{151 .target = .{
182 .cpu_arch = .x86_64,152 .cpu_arch = .x86_64,
183 .os_tag = .freebsd,153 .os_tag = .freebsd,
184 // Remove this when we bump our baseline to 14.0.0.
185 .os_version_min = .{ .semver = .{
186 .major = 14,
187 .minor = 0,
188 .patch = 0,
189 } },
190 .abi = .none,154 .abi = .none,
191 },155 },
192 .link_libc = true,156 .link_libc = true,
...@@ -1236,12 +1200,6 @@ const test_targets = blk: {...@@ -1236,12 +1200,6 @@ const test_targets = blk: {
1236 .target = .{1200 .target = .{
1237 .cpu_arch = .aarch64,1201 .cpu_arch = .aarch64,
1238 .os_tag = .netbsd,1202 .os_tag = .netbsd,
1239 // Remove this when we bump our baseline to 10.1.0.
1240 .os_version_min = .{ .semver = .{
1241 .major = 10,
1242 .minor = 1,
1243 .patch = 0,
1244 } },
1245 .abi = .none,1203 .abi = .none,
1246 },1204 },
1247 .link_libc = true,1205 .link_libc = true,
...@@ -1251,12 +1209,6 @@ const test_targets = blk: {...@@ -1251,12 +1209,6 @@ const test_targets = blk: {
1251 .target = .{1209 .target = .{
1252 .cpu_arch = .aarch64_be,1210 .cpu_arch = .aarch64_be,
1253 .os_tag = .netbsd,1211 .os_tag = .netbsd,
1254 // Remove this when we bump our baseline to 10.1.0.
1255 .os_version_min = .{ .semver = .{
1256 .major = 10,
1257 .minor = 1,
1258 .patch = 0,
1259 } },
1260 .abi = .none,1212 .abi = .none,
1261 },1213 },
1262 .link_libc = true,1214 .link_libc = true,
...@@ -1266,12 +1218,6 @@ const test_targets = blk: {...@@ -1266,12 +1218,6 @@ const test_targets = blk: {
1266 .target = .{1218 .target = .{
1267 .cpu_arch = .arm,1219 .cpu_arch = .arm,
1268 .os_tag = .netbsd,1220 .os_tag = .netbsd,
1269 // Remove this when we bump our baseline to 10.1.0.
1270 .os_version_min = .{ .semver = .{
1271 .major = 10,
1272 .minor = 1,
1273 .patch = 0,
1274 } },
1275 .abi = .eabi,1221 .abi = .eabi,
1276 },1222 },
1277 .link_libc = true,1223 .link_libc = true,
...@@ -1280,12 +1226,6 @@ const test_targets = blk: {...@@ -1280,12 +1226,6 @@ const test_targets = blk: {
1280 .target = .{1226 .target = .{
1281 .cpu_arch = .arm,1227 .cpu_arch = .arm,
1282 .os_tag = .netbsd,1228 .os_tag = .netbsd,
1283 // Remove this when we bump our baseline to 10.1.0.
1284 .os_version_min = .{ .semver = .{
1285 .major = 10,
1286 .minor = 1,
1287 .patch = 0,
1288 } },
1289 .abi = .eabihf,1229 .abi = .eabihf,
1290 },1230 },
1291 .link_libc = true,1231 .link_libc = true,
...@@ -1295,12 +1235,6 @@ const test_targets = blk: {...@@ -1295,12 +1235,6 @@ const test_targets = blk: {
1295 .target = .{1235 .target = .{
1296 .cpu_arch = .armeb,1236 .cpu_arch = .armeb,
1297 .os_tag = .netbsd,1237 .os_tag = .netbsd,
1298 // Remove this when we bump our baseline to 10.1.0.
1299 .os_version_min = .{ .semver = .{
1300 .major = 10,
1301 .minor = 1,
1302 .patch = 0,
1303 } },
1304 .abi = .eabi,1238 .abi = .eabi,
1305 },1239 },
1306 .link_libc = true,1240 .link_libc = true,
...@@ -1309,12 +1243,6 @@ const test_targets = blk: {...@@ -1309,12 +1243,6 @@ const test_targets = blk: {
1309 .target = .{1243 .target = .{
1310 .cpu_arch = .armeb,1244 .cpu_arch = .armeb,
1311 .os_tag = .netbsd,1245 .os_tag = .netbsd,
1312 // Remove this when we bump our baseline to 10.1.0.
1313 .os_version_min = .{ .semver = .{
1314 .major = 10,
1315 .minor = 1,
1316 .patch = 0,
1317 } },
1318 .abi = .eabihf,1246 .abi = .eabihf,
1319 },1247 },
1320 .link_libc = true,1248 .link_libc = true,
...@@ -1324,12 +1252,6 @@ const test_targets = blk: {...@@ -1324,12 +1252,6 @@ const test_targets = blk: {
1324 .target = .{1252 .target = .{
1325 .cpu_arch = .mips,1253 .cpu_arch = .mips,
1326 .os_tag = .netbsd,1254 .os_tag = .netbsd,
1327 // Remove this when we bump our baseline to 10.1.0.
1328 .os_version_min = .{ .semver = .{
1329 .major = 10,
1330 .minor = 1,
1331 .patch = 0,
1332 } },
1333 .abi = .eabi,1255 .abi = .eabi,
1334 },1256 },
1335 .link_libc = true,1257 .link_libc = true,
...@@ -1338,12 +1260,6 @@ const test_targets = blk: {...@@ -1338,12 +1260,6 @@ const test_targets = blk: {
1338 .target = .{1260 .target = .{
1339 .cpu_arch = .mips,1261 .cpu_arch = .mips,
1340 .os_tag = .netbsd,1262 .os_tag = .netbsd,
1341 // Remove this when we bump our baseline to 10.1.0.
1342 .os_version_min = .{ .semver = .{
1343 .major = 10,
1344 .minor = 1,
1345 .patch = 0,
1346 } },
1347 .abi = .eabihf,1263 .abi = .eabihf,
1348 },1264 },
1349 .link_libc = true,1265 .link_libc = true,
...@@ -1353,12 +1269,6 @@ const test_targets = blk: {...@@ -1353,12 +1269,6 @@ const test_targets = blk: {
1353 .target = .{1269 .target = .{
1354 .cpu_arch = .mipsel,1270 .cpu_arch = .mipsel,
1355 .os_tag = .netbsd,1271 .os_tag = .netbsd,
1356 // Remove this when we bump our baseline to 10.1.0.
1357 .os_version_min = .{ .semver = .{
1358 .major = 10,
1359 .minor = 1,
1360 .patch = 0,
1361 } },
1362 .abi = .eabi,1272 .abi = .eabi,
1363 },1273 },
1364 .link_libc = true,1274 .link_libc = true,
...@@ -1367,12 +1277,6 @@ const test_targets = blk: {...@@ -1367,12 +1277,6 @@ const test_targets = blk: {
1367 .target = .{1277 .target = .{
1368 .cpu_arch = .mipsel,1278 .cpu_arch = .mipsel,
1369 .os_tag = .netbsd,1279 .os_tag = .netbsd,
1370 // Remove this when we bump our baseline to 10.1.0.
1371 .os_version_min = .{ .semver = .{
1372 .major = 10,
1373 .minor = 1,
1374 .patch = 0,
1375 } },
1376 .abi = .eabihf,1280 .abi = .eabihf,
1377 },1281 },
1378 .link_libc = true,1282 .link_libc = true,
...@@ -1382,12 +1286,6 @@ const test_targets = blk: {...@@ -1382,12 +1286,6 @@ const test_targets = blk: {
1382 .target = .{1286 .target = .{
1383 .cpu_arch = .powerpc,1287 .cpu_arch = .powerpc,
1384 .os_tag = .netbsd,1288 .os_tag = .netbsd,
1385 // Remove this when we bump our baseline to 10.1.0.
1386 .os_version_min = .{ .semver = .{
1387 .major = 10,
1388 .minor = 1,
1389 .patch = 0,
1390 } },
1391 .abi = .eabi,1289 .abi = .eabi,
1392 },1290 },
1393 .link_libc = true,1291 .link_libc = true,
...@@ -1396,12 +1294,6 @@ const test_targets = blk: {...@@ -1396,12 +1294,6 @@ const test_targets = blk: {
1396 .target = .{1294 .target = .{
1397 .cpu_arch = .powerpc,1295 .cpu_arch = .powerpc,
1398 .os_tag = .netbsd,1296 .os_tag = .netbsd,
1399 // Remove this when we bump our baseline to 10.1.0.
1400 .os_version_min = .{ .semver = .{
1401 .major = 10,
1402 .minor = 1,
1403 .patch = 0,
1404 } },
1405 .abi = .eabihf,1297 .abi = .eabihf,
1406 },1298 },
1407 .link_libc = true,1299 .link_libc = true,
...@@ -1411,12 +1303,6 @@ const test_targets = blk: {...@@ -1411,12 +1303,6 @@ const test_targets = blk: {
1411 .target = .{1303 .target = .{
1412 .cpu_arch = .x86,1304 .cpu_arch = .x86,
1413 .os_tag = .netbsd,1305 .os_tag = .netbsd,
1414 // Remove this when we bump our baseline to 10.1.0.
1415 .os_version_min = .{ .semver = .{
1416 .major = 10,
1417 .minor = 1,
1418 .patch = 0,
1419 } },
1420 .abi = .none,1306 .abi = .none,
1421 },1307 },
1422 .link_libc = true,1308 .link_libc = true,
...@@ -1426,12 +1312,6 @@ const test_targets = blk: {...@@ -1426,12 +1312,6 @@ const test_targets = blk: {
1426 .target = .{1312 .target = .{
1427 .cpu_arch = .x86_64,1313 .cpu_arch = .x86_64,
1428 .os_tag = .netbsd,1314 .os_tag = .netbsd,
1429 // Remove this when we bump our baseline to 10.1.0.
1430 .os_version_min = .{ .semver = .{
1431 .major = 10,
1432 .minor = 1,
1433 .patch = 0,
1434 } },
1435 .abi = .none,1315 .abi = .none,
1436 },1316 },
1437 .link_libc = true,1317 .link_libc = true,