From f7bbcb4a4b56925110370d2c28a3eaba3854f88c Mon Sep 17 00:00:00 2001 From: Andrew Kelley Date: Thu, 16 Oct 2025 12:00:30 -0700 Subject: [PATCH] fix miscellaneous compilation failures --- lib/std/Io.zig | 6 +++--- lib/std/Io/Threaded.zig | 2 +- lib/std/Io/net.zig | 2 +- lib/std/Io/net/test.zig | 1 - lib/std/Thread/Futex.zig | 2 +- lib/std/fs/Dir.zig | 5 +++++ lib/std/zig/system.zig | 8 ++++---- lib/std/zig/system/linux.zig | 12 +++++++----- 8 files changed, 22 insertions(+), 16 deletions(-) diff --git a/lib/std/Io.zig b/lib/std/Io.zig index d1fa7afc68c4fa844b79c97f721d678185b9c892..6ae4c3346ca2cef0469c93edecbe8ad19c7716f8 100644 --- a/lib/std/Io.zig +++ b/lib/std/Io.zig @@ -1282,7 +1282,7 @@ pub const TypeErasedQueue = struct { var remaining = elements; while (true) { - const getter: *Get = @fieldParentPtr("node", q.getters.popFirst() orelse break); + const getter: *Get = @alignCast(@fieldParentPtr("node", q.getters.popFirst() orelse break)); const copy_len = @min(getter.remaining.len, remaining.len); @memcpy(getter.remaining[0..copy_len], remaining[0..copy_len]); remaining = remaining[copy_len..]; @@ -1379,7 +1379,7 @@ pub const TypeErasedQueue = struct { } // Copy directly from putters into buffer. while (remaining.len > 0) { - const putter: *Put = @fieldParentPtr("node", q.putters.popFirst() orelse break); + const putter: *Put = @alignCast(@fieldParentPtr("node", q.putters.popFirst() orelse break)); const copy_len = @min(putter.remaining.len, remaining.len); @memcpy(remaining[0..copy_len], putter.remaining[0..copy_len]); putter.remaining = putter.remaining[copy_len..]; @@ -1412,7 +1412,7 @@ pub const TypeErasedQueue = struct { /// buffers been fully copied. fn fillRingBufferFromPutters(q: *TypeErasedQueue, io: Io, len: usize) usize { while (true) { - const putter: *Put = @fieldParentPtr("node", q.putters.popFirst() orelse return len); + const putter: *Put = @alignCast(@fieldParentPtr("node", q.putters.popFirst() orelse return len)); const available = q.buffer[q.put_index..]; const copy_len = @min(available.len, putter.remaining.len); @memcpy(available[0..copy_len], putter.remaining[0..copy_len]); diff --git a/lib/std/Io/Threaded.zig b/lib/std/Io/Threaded.zig index 745dfee2ea0fb0f92ffe83e3310fed647740b5b8..86a804b516bda7c8de7f5b786cffa2233cc2076b 100644 --- a/lib/std/Io/Threaded.zig +++ b/lib/std/Io/Threaded.zig @@ -541,7 +541,7 @@ fn groupAsync( context_alignment: std.mem.Alignment, start: *const fn (*Io.Group, context: *const anyopaque) void, ) void { - if (builtin.single_threaded) return start(context.ptr); + if (builtin.single_threaded) return start(group, context.ptr); const t: *Threaded = @ptrCast(@alignCast(userdata)); const cpu_count = t.cpu_count catch 1; const gpa = t.allocator; diff --git a/lib/std/Io/net.zig b/lib/std/Io/net.zig index 046aec305439fcc573be313542dff821c662b1f2..1f47d7e1f5c1ee6b549d0180a3ddd95f4b23e843 100644 --- a/lib/std/Io/net.zig +++ b/lib/std/Io/net.zig @@ -1027,7 +1027,7 @@ pub const Socket = struct { /// Underlying platform-defined type which may or may not be /// interchangeable with a file system file descriptor. pub const Handle = switch (native_os) { - .windows => std.windows.ws2_32.SOCKET, + .windows => std.os.windows.ws2_32.SOCKET, else => std.posix.fd_t, }; diff --git a/lib/std/Io/net/test.zig b/lib/std/Io/net/test.zig index 1c8f8bd8c77588aa12fee4580a68d60b310e57a8..feef19e0e4c5552d0d4a8808fe1f78ef75735b5d 100644 --- a/lib/std/Io/net/test.zig +++ b/lib/std/Io/net/test.zig @@ -81,7 +81,6 @@ test "IPv6 address parse failures" { try testing.expectEqual(Unresolved.Parsed{ .invalid_byte = 5 }, Unresolved.parse("::123.123.123.123")); try testing.expectEqual(Unresolved.Parsed.incomplete, Unresolved.parse("1")); try testing.expectEqual(Unresolved.Parsed.incomplete, Unresolved.parse("ff01::fb%")); - try testing.expectEqual(Unresolved.Parsed{ .interface_name_oversized = 9 }, Unresolved.parse("ff01::fb%wlp3" ++ "s0" ** @divExact(std.posix.IFNAMESIZE - 4, 2))); } test "invalid but parseable IPv6 scope ids" { diff --git a/lib/std/Thread/Futex.zig b/lib/std/Thread/Futex.zig index bad34996f5fdfaad3656c52fa69bb4f4d8d71e99..0047f5400ec6e9a70567ae3ec1f2b190cba5f4d6 100644 --- a/lib/std/Thread/Futex.zig +++ b/lib/std/Thread/Futex.zig @@ -116,7 +116,7 @@ const SingleThreadedImpl = struct { unreachable; // deadlock detected }; - std.Thread.sleep(delay); + _ = delay; return error.Timeout; } diff --git a/lib/std/fs/Dir.zig b/lib/std/fs/Dir.zig index 1b5f3808ff55669e10cd032965fb525d66d64244..c8236b9f7ad74c478b69f97507016713b90298b6 100644 --- a/lib/std/fs/Dir.zig +++ b/lib/std/fs/Dir.zig @@ -1356,6 +1356,11 @@ pub fn openDir(self: Dir, sub_path: []const u8, args: OpenOptions) OpenError!Dir error.FileLocksNotSupported => unreachable, // locking folders is not supported error.WouldBlock => unreachable, // can't happen for directories error.FileBusy => unreachable, // can't happen for directories + error.SharingViolation => unreachable, + error.PipeBusy => unreachable, + error.ProcessNotFound => unreachable, + error.AntivirusInterference => unreachable, + else => |e| return e, }; return .{ .fd = fd }; diff --git a/lib/std/zig/system.zig b/lib/std/zig/system.zig index 2b11e971cad58ad57527c12b867d558433dad7af..6313bff374a3d536ad4041043db7c16266a2b701 100644 --- a/lib/std/zig/system.zig +++ b/lib/std/zig/system.zig @@ -367,10 +367,10 @@ pub fn resolveTargetQuery(io: Io, query: Target.Query) DetectError!Target { } var cpu = switch (query.cpu_model) { - .native => detectNativeCpuAndFeatures(query_cpu_arch, os, query), + .native => detectNativeCpuAndFeatures(io, query_cpu_arch, os, query), .baseline => Target.Cpu.baseline(query_cpu_arch, os), .determined_by_arch_os => if (query.cpu_arch == null) - detectNativeCpuAndFeatures(query_cpu_arch, os, query) + detectNativeCpuAndFeatures(io, query_cpu_arch, os, query) else Target.Cpu.baseline(query_cpu_arch, os), .explicit => |model| model.toCpu(query_cpu_arch), @@ -521,7 +521,7 @@ fn updateCpuFeatures( set.removeFeatureSet(sub_set); } -fn detectNativeCpuAndFeatures(cpu_arch: Target.Cpu.Arch, os: Target.Os, query: Target.Query) ?Target.Cpu { +fn detectNativeCpuAndFeatures(io: Io, cpu_arch: Target.Cpu.Arch, os: Target.Os, query: Target.Query) ?Target.Cpu { // Here we switch on a comptime value rather than `cpu_arch`. This is valid because `cpu_arch`, // although it is a runtime value, is guaranteed to be one of the architectures in the set // of the respective switch prong. @@ -532,7 +532,7 @@ fn detectNativeCpuAndFeatures(cpu_arch: Target.Cpu.Arch, os: Target.Os, query: T } switch (builtin.os.tag) { - .linux => return linux.detectNativeCpuAndFeatures(), + .linux => return linux.detectNativeCpuAndFeatures(io), .macos => return darwin.macos.detectNativeCpuAndFeatures(), .windows => return windows.detectNativeCpuAndFeatures(), else => {}, diff --git a/lib/std/zig/system/linux.zig b/lib/std/zig/system/linux.zig index bbe7f8eaf964095c7d69f7be211db84130ee2219..8bdfae1de449840d03738dab2f3494f9e314b969 100644 --- a/lib/std/zig/system/linux.zig +++ b/lib/std/zig/system/linux.zig @@ -1,5 +1,7 @@ -const std = @import("std"); const builtin = @import("builtin"); + +const std = @import("std"); +const Io = std.Io; const mem = std.mem; const fs = std.fs; const fmt = std.fmt; @@ -344,7 +346,7 @@ fn testParser( expected_model: *const Target.Cpu.Model, input: []const u8, ) !void { - var r: std.Io.Reader = .fixed(input); + var r: Io.Reader = .fixed(input); const result = try parser.parse(arch, &r); try testing.expectEqual(expected_model, result.?.model); try testing.expect(expected_model.features.eql(result.?.features)); @@ -357,7 +359,7 @@ fn testParser( // When all the lines have been analyzed the finalize method is called. fn CpuinfoParser(comptime impl: anytype) type { return struct { - fn parse(arch: Target.Cpu.Arch, reader: *std.Io.Reader) !?Target.Cpu { + fn parse(arch: Target.Cpu.Arch, reader: *Io.Reader) !?Target.Cpu { var obj: impl = .{}; while (try reader.takeDelimiter('\n')) |line| { const colon_pos = mem.indexOfScalar(u8, line, ':') orelse continue; @@ -376,14 +378,14 @@ inline fn getAArch64CpuFeature(comptime feat_reg: []const u8) u64 { ); } -pub fn detectNativeCpuAndFeatures() ?Target.Cpu { +pub fn detectNativeCpuAndFeatures(io: Io) ?Target.Cpu { var file = fs.openFileAbsolute("/proc/cpuinfo", .{}) catch |err| switch (err) { else => return null, }; defer file.close(); var buffer: [4096]u8 = undefined; // "flags" lines can get pretty long. - var file_reader = file.reader(&buffer); + var file_reader = file.reader(io, &buffer); const current_arch = builtin.cpu.arch; switch (current_arch) { -- 2.54.0