From 2d1643d2ebfda87427a1a5ba9dca78007d591361 Mon Sep 17 00:00:00 2001 From: chrisbreuer Date: Tue, 3 Mar 2026 19:34:58 +0800 Subject: [PATCH 1/2] fix: Io.Clock.real.now() no longer returns error union in Zig 0.16.0-dev.2565 --- src/handshake_common.zig | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/handshake_common.zig b/src/handshake_common.zig index 1d4c7a6..8711805 100644 --- a/src/handshake_common.zig +++ b/src/handshake_common.zig @@ -76,7 +76,7 @@ pub const CertKeyPair = struct { key_path: []const u8, ) !CertKeyPair { var bundle: cert.Bundle = .{}; - const now = Io.Clock.real.now(io) catch Io.Timestamp.zero; + const now = Io.Clock.real.now(io); try bundle.addCertsFromFilePathAbsolute(allocator, io, now, cert_path); const key_file = try std.Io.Dir.openFileAbsolute(io, key_path, .{}); From de97bd385dd9839096da54b50f21f70155249962 Mon Sep 17 00:00:00 2001 From: chrisbreuer Date: Tue, 3 Mar 2026 19:37:05 +0800 Subject: [PATCH 2/2] fix: more Zig 0.16.0-dev.2565 compat fixes - posix.clock_gettime -> std.c.clock_gettime (correct API) - Stub out key_log fileWrite (std.fs removed in 0.16) --- src/handshake_client.zig | 3 ++- src/handshake_common.zig | 6 ++---- src/key_log.zig | 8 +++----- 3 files changed, 7 insertions(+), 10 deletions(-) diff --git a/src/handshake_client.zig b/src/handshake_client.zig index 48a5daa..3f22922 100644 --- a/src/handshake_client.zig +++ b/src/handshake_client.zig @@ -8,7 +8,8 @@ const Certificate = crypto.Certificate; // Helper function for Zig 0.16 compatibility fn getMilliTimestamp() i64 { - const ts = posix.clock_gettime(.REALTIME) catch return 0; + var ts: std.c.timespec = undefined; + if (std.c.clock_gettime(.REALTIME, &ts) != 0) return 0; return ts.sec * 1000 + @divFloor(ts.nsec, std.time.ns_per_ms); } diff --git a/src/handshake_common.zig b/src/handshake_common.zig index 8711805..a055c24 100644 --- a/src/handshake_common.zig +++ b/src/handshake_common.zig @@ -337,11 +337,9 @@ pub const CertificateParser = struct { pub fn parseCertificate(h: *CertificateParser, d: *record.Decoder, tls_version: proto.Version) !void { if (h.now_sec == 0) { - // Zig 0.16 compatibility: use posix clock - if (std.posix.clock_gettime(.REALTIME)) |ts| { + var ts: std.c.timespec = undefined; + if (std.c.clock_gettime(.REALTIME, &ts) == 0) { h.now_sec = ts.sec; - } else |_| { - h.now_sec = 0; } } if (tls_version == .tls_1_3) { diff --git a/src/key_log.zig b/src/key_log.zig index 7bb8753..21d61ef 100644 --- a/src/key_log.zig +++ b/src/key_log.zig @@ -43,11 +43,9 @@ pub fn fileAppend(file_name: []const u8, label_: []const u8, client_random: []co } fn fileWrite(file_name: []const u8, line: []const u8) !void { - var file = try std.fs.createFileAbsolute(file_name, .{ .truncate = false }); - defer file.close(); - const stat = try file.stat(); - try file.seekTo(stat.size); - try file.writeAll(line); + // Stubbed: std.fs file APIs removed in Zig 0.16, needs Io context + _ = file_name; + _ = line; } pub fn formatLine(buf: []u8, label_: []const u8, client_random: []const u8, secret: []const u8) ![]const u8 {