From 8fe9f8615adb12280e7f84daf3f5971ccfb0b5e6 Mon Sep 17 00:00:00 2001 From: Lachlan Donald Date: Sun, 5 Oct 2025 16:51:58 +1100 Subject: [PATCH 1/3] chore: port to Zig 0.15.1 Update build system and ArrayList API for Zig 0.15.1 compatibility: - Use createModule() with root_module in addTest() - Change ArrayList initialization from .init(allocator) to {} - Pass allocator to .deinit() and .writer() methods All tests passing (131/131) --- build.zig | 8 +++++--- src/enum.zig | 36 ++++++++++++++++++------------------ src/map.zig | 12 ++++++------ src/msgpack.zig | 30 +++++++++++++++--------------- 4 files changed, 44 insertions(+), 42 deletions(-) diff --git a/build.zig b/build.zig index 19eb896..34d0cf3 100644 --- a/build.zig +++ b/build.zig @@ -9,9 +9,11 @@ pub fn build(b: *std.Build) !void { }); const tests = b.addTest(.{ - .root_source_file = b.path("src/msgpack.zig"), - .target = target, - .optimize = optimize, + .root_module = b.createModule(.{ + .root_source_file = b.path("src/msgpack.zig"), + .target = target, + .optimize = optimize, + }), }); const run_test = b.addRunArtifact(tests); diff --git a/src/enum.zig b/src/enum.zig index 1ac4174..8b611b0 100644 --- a/src/enum.zig +++ b/src/enum.zig @@ -92,10 +92,10 @@ test "pack/unpack enum" { // Test plain enum { - var buffer = std.ArrayList(u8).init(std.testing.allocator); - defer buffer.deinit(); + var buffer = std.ArrayList(u8){}; + defer buffer.deinit(std.testing.allocator); - try packEnum(buffer.writer(), PlainEnum, .bar); + try packEnum(buffer.writer(std.testing.allocator), PlainEnum, .bar); var stream = std.io.fixedBufferStream(buffer.items); const result = try unpackEnum(stream.reader(), PlainEnum); @@ -104,10 +104,10 @@ test "pack/unpack enum" { // Test enum(u8) { - var buffer = std.ArrayList(u8).init(std.testing.allocator); - defer buffer.deinit(); + var buffer = std.ArrayList(u8){}; + defer buffer.deinit(std.testing.allocator); - try packEnum(buffer.writer(), U8Enum, .bar); + try packEnum(buffer.writer(std.testing.allocator), U8Enum, .bar); var stream = std.io.fixedBufferStream(buffer.items); const result = try unpackEnum(stream.reader(), U8Enum); @@ -116,10 +116,10 @@ test "pack/unpack enum" { // Test enum(u16) { - var buffer = std.ArrayList(u8).init(std.testing.allocator); - defer buffer.deinit(); + var buffer = std.ArrayList(u8){}; + defer buffer.deinit(std.testing.allocator); - try packEnum(buffer.writer(), U16Enum, .alpha); + try packEnum(buffer.writer(std.testing.allocator), U16Enum, .alpha); var stream = std.io.fixedBufferStream(buffer.items); const result = try unpackEnum(stream.reader(), U16Enum); @@ -137,10 +137,10 @@ test "enum edge cases" { fourth, // auto-assigned to 21 }; - var buffer = std.ArrayList(u8).init(std.testing.allocator); - defer buffer.deinit(); + var buffer = std.ArrayList(u8){}; + defer buffer.deinit(std.testing.allocator); - try packEnum(buffer.writer(), MixedEnum, .second); + try packEnum(buffer.writer(std.testing.allocator), MixedEnum, .second); var stream = std.io.fixedBufferStream(buffer.items); const result = try unpackEnum(stream.reader(), MixedEnum); @@ -154,11 +154,11 @@ test "optional enum" { // Test non-null optional enum { - var buffer = std.ArrayList(u8).init(std.testing.allocator); - defer buffer.deinit(); + var buffer = std.ArrayList(u8){}; + defer buffer.deinit(std.testing.allocator); const value: OptionalEnum = .bar; - try packEnum(buffer.writer(), OptionalEnum, value); + try packEnum(buffer.writer(std.testing.allocator), OptionalEnum, value); var stream = std.io.fixedBufferStream(buffer.items); const result = try unpackEnum(stream.reader(), OptionalEnum); @@ -167,11 +167,11 @@ test "optional enum" { // Test null optional enum { - var buffer = std.ArrayList(u8).init(std.testing.allocator); - defer buffer.deinit(); + var buffer = std.ArrayList(u8){}; + defer buffer.deinit(std.testing.allocator); const value: OptionalEnum = null; - try packEnum(buffer.writer(), OptionalEnum, value); + try packEnum(buffer.writer(std.testing.allocator), OptionalEnum, value); var stream = std.io.fixedBufferStream(buffer.items); const result = try unpackEnum(stream.reader(), OptionalEnum); diff --git a/src/map.zig b/src/map.zig index c65ee22..e8bb433 100644 --- a/src/map.zig +++ b/src/map.zig @@ -111,10 +111,10 @@ test "packMap managed" { try map.put(1, 2); - var buf = std.ArrayList(u8).init(std.testing.allocator); - defer buf.deinit(); + var buf = std.ArrayList(u8){}; + defer buf.deinit(std.testing.allocator); - try packMap(buf.writer(), map); + try packMap(buf.writer(std.testing.allocator), map); try std.testing.expectEqualSlices(u8, &[_]u8{ 0x81, 0x01, 0x02 }, buf.items); } @@ -125,10 +125,10 @@ test "packMap unmanaged" { try map.put(1, 2); - var buf = std.ArrayList(u8).init(std.testing.allocator); - defer buf.deinit(); + var buf = std.ArrayList(u8){}; + defer buf.deinit(std.testing.allocator); - try packMap(buf.writer(), map.unmanaged); + try packMap(buf.writer(std.testing.allocator), map.unmanaged); try std.testing.expectEqualSlices(u8, &[_]u8{ 0x81, 0x01, 0x02 }, buf.items); } diff --git a/src/msgpack.zig b/src/msgpack.zig index 7020dec..71465e9 100644 --- a/src/msgpack.zig +++ b/src/msgpack.zig @@ -303,13 +303,13 @@ test "encode/decode" { age: u8, }; - var buffer = std.ArrayList(u8).init(std.testing.allocator); - defer buffer.deinit(); + var buffer = std.ArrayList(u8){}; + defer buffer.deinit(std.testing.allocator); try encode(Message{ .name = "John", .age = 20, - }, buffer.writer()); + }, buffer.writer(std.testing.allocator)); const decoded = try decodeFromSlice(Message, std.testing.allocator, buffer.items); defer decoded.deinit(); @@ -324,10 +324,10 @@ test "encode/decode enum" { // Test enum(u8) { - var buffer = std.ArrayList(u8).init(std.testing.allocator); - defer buffer.deinit(); + var buffer = std.ArrayList(u8){}; + defer buffer.deinit(std.testing.allocator); - try encode(Status.active, buffer.writer()); + try encode(Status.active, buffer.writer(std.testing.allocator)); const decoded = try decodeFromSlice(Status, std.testing.allocator, buffer.items); defer decoded.deinit(); @@ -337,10 +337,10 @@ test "encode/decode enum" { // Test plain enum { - var buffer = std.ArrayList(u8).init(std.testing.allocator); - defer buffer.deinit(); + var buffer = std.ArrayList(u8){}; + defer buffer.deinit(std.testing.allocator); - try encode(PlainEnum.bar, buffer.writer()); + try encode(PlainEnum.bar, buffer.writer(std.testing.allocator)); const decoded = try decodeFromSlice(PlainEnum, std.testing.allocator, buffer.items); defer decoded.deinit(); @@ -350,10 +350,10 @@ test "encode/decode enum" { // Test optional enum with null { - var buffer = std.ArrayList(u8).init(std.testing.allocator); - defer buffer.deinit(); + var buffer = std.ArrayList(u8){}; + defer buffer.deinit(std.testing.allocator); - try encode(@as(?Status, null), buffer.writer()); + try encode(@as(?Status, null), buffer.writer(std.testing.allocator)); const decoded = try decodeFromSlice(?Status, std.testing.allocator, buffer.items); defer decoded.deinit(); @@ -363,10 +363,10 @@ test "encode/decode enum" { // Test optional enum with value { - var buffer = std.ArrayList(u8).init(std.testing.allocator); - defer buffer.deinit(); + var buffer = std.ArrayList(u8){}; + defer buffer.deinit(std.testing.allocator); - try encode(@as(?Status, .pending), buffer.writer()); + try encode(@as(?Status, .pending), buffer.writer(std.testing.allocator)); const decoded = try decodeFromSlice(?Status, std.testing.allocator, buffer.items); defer decoded.deinit(); From 9b472048a5cfa3793b35ceffca52f62e541dd290 Mon Sep 17 00:00:00 2001 From: Lachlan Donald Date: Sun, 5 Oct 2025 16:52:26 +1100 Subject: [PATCH 2/3] chore: update CI to Zig 0.15.1 --- .github/workflows/build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index fc053a9..1b1233a 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -11,7 +11,7 @@ jobs: contents: read steps: - uses: actions/checkout@v4 - - uses: mlugg/setup-zig@v1 + - uses: mlugg/setup-zig@v2 with: - version: 0.14.0 + version: 0.15.1 - run: zig build test --summary all From 4368d91e81aebbd6ec256e2007450fee4e927fff Mon Sep 17 00:00:00 2001 From: Lachlan Donald Date: Sun, 5 Oct 2025 16:53:16 +1100 Subject: [PATCH 3/3] chore: set minimum Zig version to 0.15.1 --- build.zig.zon | 1 + 1 file changed, 1 insertion(+) diff --git a/build.zig.zon b/build.zig.zon index 02bdb51..478608f 100644 --- a/build.zig.zon +++ b/build.zig.zon @@ -1,6 +1,7 @@ .{ .name = .msgpack, .version = "0.4.0", + .minimum_zig_version = "0.15.1", .dependencies = .{}, .fingerprint = 0x6733a7563cbdeb64, .paths = .{