From f88ece4723df862c140cacd4fa60c17e37d76aec Mon Sep 17 00:00:00 2001 From: Robbie Lyman Date: Mon, 8 Sep 2025 16:15:18 -0400 Subject: [PATCH 1/6] fix(ci): follow the Zig 0.16.0 release cycle --- .github/workflows/tests.yml | 8 ++++---- makefile | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index a2a95b2..f01bed5 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -27,8 +27,8 @@ jobs: - name: Run tests run: make test_zig_nightly - #------ zig-0.14 ------ - test_zig_014: + #------ zig-0.15 ------ + test_zig_015: strategy: matrix: os: [ubuntu-latest, macos-latest, windows-latest, ubuntu-24.04-arm] @@ -42,10 +42,10 @@ jobs: - name: Setup Zig uses: mlugg/setup-zig@v2 with: - version: "0.14.1" + version: "0.15.1" - name: Run tests - run: make test_zig_014 + run: make test_zig_stable #------ cross compilation ------ test_cross: diff --git a/makefile b/makefile index a4bd3a6..74ad28b 100644 --- a/makefile +++ b/makefile @@ -14,7 +14,7 @@ test_zig_nightly: zig build -Dlang=luajit # A subset of tests that are expected to work also on zig-0.14 -test_zig_014: +test_zig_stable: zig build test --summary failures -Dlang=lua52 zig build test --summary failures -Dlang=lua53 zig build test --summary failures -Dlang=lua54 From d0ec460d6e87332ec322721bfce85b569fcfdf09 Mon Sep 17 00:00:00 2001 From: Robbie Lyman Date: Mon, 8 Sep 2025 16:20:13 -0400 Subject: [PATCH 2/6] fix(ci): remove use of FixedBufferStream --- src/tests.zig | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/tests.zig b/src/tests.zig index 44349ba..1062b43 100644 --- a/src/tests.zig +++ b/src/tests.zig @@ -2987,16 +2987,16 @@ test "define" { _ = try zlua.def.addClass(&state, a, my_type); } - var buffer: [10000]u8 = .{0} ** 10000; - var buffer_stream = std.io.fixedBufferStream(&buffer); - var writer = buffer_stream.writer(); + var buffer: [10000]u8 = @splat(0); + var writer: std.Io.Writer = .failing; + writer.buffer = &buffer; for (state.definitions.items) |def| { try writer.writeAll(def.items); try writer.writeAll("\n"); } - try std.testing.expectEqualSlices(u8, expected, buffer_stream.getWritten()); + try std.testing.expectEqualSlices(u8, expected, buffer[0..writer.end]); } test "interrupt" { From 4b77b0f12f2ed216fba1d5779590963d55a801a5 Mon Sep 17 00:00:00 2001 From: Robbie Lyman Date: Mon, 8 Sep 2025 16:25:30 -0400 Subject: [PATCH 3/6] fix(interpreter): EndOfStream should exit gracefully --- examples/interpreter.zig | 1 + 1 file changed, 1 insertion(+) diff --git a/examples/interpreter.zig b/examples/interpreter.zig index 141df2d..c254372 100644 --- a/examples/interpreter.zig +++ b/examples/interpreter.zig @@ -68,6 +68,7 @@ pub fn main() anyerror!void { try flushedStdoutPrint("error: line too long!\n", .{}); continue; }, + error.EndOfStream => break, else => return err, } }; From c035e6115541f54da0241dda9c54a9cfdafb7798 Mon Sep 17 00:00:00 2001 From: Robbie Lyman Date: Mon, 8 Sep 2025 16:27:18 -0400 Subject: [PATCH 4/6] fix(examples): remove TODOs since Zig 0.15 is released --- examples/interpreter.zig | 41 +++++++++++++--------------------------- 1 file changed, 13 insertions(+), 28 deletions(-) diff --git a/examples/interpreter.zig b/examples/interpreter.zig index c254372..b47e0e5 100644 --- a/examples/interpreter.zig +++ b/examples/interpreter.zig @@ -9,38 +9,23 @@ const zlua = @import("zlua"); const ReadError = error{BufferTooSmall}; fn readlineStdin(out_buf: []u8) anyerror!usize { - const builtin = @import("builtin"); - // Backwards compatibility with zig-0.14 - // TODO remove when zig-0.15 is released - if (builtin.zig_version.major == 0 and builtin.zig_version.minor < 15) { - var stdin = std.io.getStdIn().reader(); - return try stdin.read(out_buf); - } else { - var in_buf: [4096]u8 = undefined; - var stdin_file = std.fs.File.stdin().reader(&in_buf); - const stdin = &stdin_file.interface; - const s = try stdin.takeDelimiterExclusive('\n'); - if (s.len < out_buf.len) { - @memcpy(out_buf[0..s.len], s); - return s.len; - } - return error.BufferTooSmall; + var in_buf: [4096]u8 = undefined; + var stdin_file = std.fs.File.stdin().reader(&in_buf); + const stdin = &stdin_file.interface; + const s = try stdin.takeDelimiterExclusive('\n'); + if (s.len < out_buf.len) { + @memcpy(out_buf[0..s.len], s); + return s.len; } + return error.BufferTooSmall; } fn flushedStdoutPrint(comptime fmt: []const u8, args: anytype) !void { - const builtin = @import("builtin"); - // Backwards compatibility with zig-0.14 - // TODO remove when zig-0.15 is released - if (builtin.zig_version.major == 0 and builtin.zig_version.minor < 15) { - try std.io.getStdOut().writer().print(fmt, args); - } else { - var out_buf: [4096]u8 = undefined; - var w = std.fs.File.stdout().writer(&out_buf); - const stdout = &w.interface; - try stdout.print(fmt, args); - try stdout.flush(); - } + var out_buf: [4096]u8 = undefined; + var w = std.fs.File.stdout().writer(&out_buf); + const stdout = &w.interface; + try stdout.print(fmt, args); + try stdout.flush(); } pub fn main() anyerror!void { From 92c64e4f49236be70583a0831b0b1611c37be520 Mon Sep 17 00:00:00 2001 From: Robbie Lyman Date: Mon, 8 Sep 2025 16:30:32 -0400 Subject: [PATCH 5/6] fix(ci): reenable lua 5.1 testing --- build/patch.zig | 4 +++- makefile | 3 ++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/build/patch.zig b/build/patch.zig index cc20693..81b1f2e 100644 --- a/build/patch.zig +++ b/build/patch.zig @@ -17,7 +17,9 @@ pub fn main() !void { const patch_file = patch_file: { const patch_file = try std.fs.cwd().openFile(patch_file_path, .{ .mode = .read_only }); defer patch_file.close(); - break :patch_file try patch_file.readToEndAlloc(allocator, std.math.maxInt(usize)); + var buf: [4096]u8 = undefined; + var reader = patch_file.reader(&buf); + break :patch_file try reader.interface.allocRemaining(allocator, .unlimited); }; const chunk_details = Chunk.init(allocator, patch_file, 0) orelse @panic("No chunk data found"); diff --git a/makefile b/makefile index 74ad28b..56d3141 100644 --- a/makefile +++ b/makefile @@ -13,8 +13,9 @@ test_zig_nightly: zig build -Dlang=luajit -# A subset of tests that are expected to work also on zig-0.14 +# A subset of tests that are expected to work also on stable builds of zig test_zig_stable: + zig build test --summary failures -Dlang=lua51 zig build test --summary failures -Dlang=lua52 zig build test --summary failures -Dlang=lua53 zig build test --summary failures -Dlang=lua54 From 5eea389c759b018e723eefc852a65aec2b844f52 Mon Sep 17 00:00:00 2001 From: Robbie Lyman Date: Mon, 8 Sep 2025 16:43:51 -0400 Subject: [PATCH 6/6] fix(build): avoid readToEndAlloc in patch.zig