From 380145a986a5ade546b545ff97b9fdca256b2a72 Mon Sep 17 00:00:00 2001 From: Szymon Nowakowski Date: Tue, 12 May 2026 23:33:33 +0200 Subject: [PATCH] vecmath: Update to zig 0.16.0, harden tests and add test build step --- packages/vecmath/build.zig | 14 +++++++++++++- packages/vecmath/build.zig.zon | 2 +- packages/vecmath/src/colors/Color.zig | 6 +++++- packages/vecmath/src/colors/ColorHdr.zig | 6 +++++- packages/vecmath/src/matrices/Matrix3x2.zig | 4 ++++ packages/vecmath/src/matrices/Matrix3x2x8.zig | 4 ++++ packages/vecmath/src/matrices/Matrix4x4.zig | 4 ++++ packages/vecmath/src/matrices/Matrix4x4x8.zig | 4 ++++ packages/vecmath/src/root.zig | 2 +- packages/vecmath/src/rotors/Complex.zig | 6 +++++- packages/vecmath/src/rotors/Complex_x8.zig | 4 ++++ packages/vecmath/src/rotors/Quaternion.zig | 6 +++++- packages/vecmath/src/rotors/Quaternion_x8.zig | 4 ++++ packages/vecmath/src/simd.zig | 4 ++++ packages/vecmath/src/trig.zig | 4 ++++ packages/vecmath/src/vectors/Vector2.zig | 6 +++++- packages/vecmath/src/vectors/Vector2Int.zig | 6 +++++- packages/vecmath/src/vectors/Vector2Int_x8.zig | 4 ++++ packages/vecmath/src/vectors/Vector2x8.zig | 4 ++++ packages/vecmath/src/vectors/Vector3.zig | 6 +++++- packages/vecmath/src/vectors/Vector3Int.zig | 6 +++++- packages/vecmath/src/vectors/Vector3Int_x8.zig | 4 ++++ packages/vecmath/src/vectors/Vector3x8.zig | 4 ++++ packages/vecmath/src/vectors/Vector4.zig | 6 +++++- packages/vecmath/src/vectors/Vector4Int.zig | 6 +++++- packages/vecmath/src/vectors/Vector4Int_x8.zig | 4 ++++ packages/vecmath/src/vectors/Vector4x8.zig | 4 ++++ 27 files changed, 121 insertions(+), 13 deletions(-) diff --git a/packages/vecmath/build.zig b/packages/vecmath/build.zig index a29f40b..760d0ab 100644 --- a/packages/vecmath/build.zig +++ b/packages/vecmath/build.zig @@ -1,7 +1,19 @@ const std = @import("std"); pub fn build(b: *std.Build) void { - _ = b.addModule("vecmath", .{ + const target = b.standardTargetOptions(.{}); + + const mod = b.addModule("vecmath", .{ .root_source_file = b.path("src/root.zig"), + .target = target, }); + + const mod_tests = b.addTest(.{ + .root_module = mod, + }); + + const run_mod_tests = b.addRunArtifact(mod_tests); + + const test_step = b.step("test", "Run tests"); + test_step.dependOn(&run_mod_tests.step); } diff --git a/packages/vecmath/build.zig.zon b/packages/vecmath/build.zig.zon index 65047e1..ec3a57b 100644 --- a/packages/vecmath/build.zig.zon +++ b/packages/vecmath/build.zig.zon @@ -1,7 +1,7 @@ .{ .name = .vecmath, .version = "0.0.0", - .minimum_zig_version = "0.15.2", + .minimum_zig_version = "0.16.0", .paths = .{ "src", "build.zig", diff --git a/packages/vecmath/src/colors/Color.zig b/packages/vecmath/src/colors/Color.zig index 4536aee..6ac2ac9 100644 --- a/packages/vecmath/src/colors/Color.zig +++ b/packages/vecmath/src/colors/Color.zig @@ -93,7 +93,11 @@ pub const Color = extern struct { return @bitCast(self); } - pub fn format(self: Color, w: *std.io.Writer) !void { + pub fn format(self: Color, w: *std.Io.Writer) !void { try w.print("#{X:0>2}{X:0>2}{X:0>2}{X:0>2}", .{ self.r, self.g, self.b, self.a }); } + + test "refAllDecls" { + std.testing.refAllDecls(@This()); + } }; diff --git a/packages/vecmath/src/colors/ColorHdr.zig b/packages/vecmath/src/colors/ColorHdr.zig index 3b47dc9..1eed733 100644 --- a/packages/vecmath/src/colors/ColorHdr.zig +++ b/packages/vecmath/src/colors/ColorHdr.zig @@ -24,7 +24,11 @@ pub const ColorHdr = extern struct { return @bitCast(self); } - pub fn format(self: ColorHdr, w: *std.io.Writer) !void { + pub fn format(self: ColorHdr, w: *std.Io.Writer) !void { try w.print("ColorHdr[{d}, {d}, {d}, {d}]", .{ self.r, self.g, self.b, self.a }); } + + test "refAllDecls" { + std.testing.refAllDecls(@This()); + } }; diff --git a/packages/vecmath/src/matrices/Matrix3x2.zig b/packages/vecmath/src/matrices/Matrix3x2.zig index 1b7fb13..fa46146 100644 --- a/packages/vecmath/src/matrices/Matrix3x2.zig +++ b/packages/vecmath/src/matrices/Matrix3x2.zig @@ -252,4 +252,8 @@ pub const Matrix3x2 = extern struct { .ty = -inv_det * (self.tx * iy + self.ty * jy), }; } + + test "refAllDecls" { + std.testing.refAllDecls(@This()); + } }; diff --git a/packages/vecmath/src/matrices/Matrix3x2x8.zig b/packages/vecmath/src/matrices/Matrix3x2x8.zig index e20a600..be28bfc 100644 --- a/packages/vecmath/src/matrices/Matrix3x2x8.zig +++ b/packages/vecmath/src/matrices/Matrix3x2x8.zig @@ -406,4 +406,8 @@ pub const Matrix3x2x8 = struct { .ty = -inv_det * (self.tx * iy + self.ty * jy), }; } + + test "refAllDecls" { + std.testing.refAllDecls(@This()); + } }; diff --git a/packages/vecmath/src/matrices/Matrix4x4.zig b/packages/vecmath/src/matrices/Matrix4x4.zig index 31f8e4d..1447c10 100644 --- a/packages/vecmath/src/matrices/Matrix4x4.zig +++ b/packages/vecmath/src/matrices/Matrix4x4.zig @@ -507,4 +507,8 @@ pub const Matrix4x4 = extern struct { // zig fmt: on }; } + + test "refAllDecls" { + std.testing.refAllDecls(@This()); + } }; diff --git a/packages/vecmath/src/matrices/Matrix4x4x8.zig b/packages/vecmath/src/matrices/Matrix4x4x8.zig index a43be08..3f37ad7 100644 --- a/packages/vecmath/src/matrices/Matrix4x4x8.zig +++ b/packages/vecmath/src/matrices/Matrix4x4x8.zig @@ -763,4 +763,8 @@ pub const Matrix4x4x8 = extern struct { // zig fmt: on }; } + + test "refAllDecls" { + std.testing.refAllDecls(@This()); + } }; diff --git a/packages/vecmath/src/root.zig b/packages/vecmath/src/root.zig index 5141115..00fb857 100644 --- a/packages/vecmath/src/root.zig +++ b/packages/vecmath/src/root.zig @@ -110,5 +110,5 @@ pub inline fn unlerpInt64(a: i64, b: i64, x: i64) f32 { } test "refAllDecls" { - std.testing.refAllDeclsRecursive(@This()); + std.testing.refAllDecls(@This()); } diff --git a/packages/vecmath/src/rotors/Complex.zig b/packages/vecmath/src/rotors/Complex.zig index 63bf3c6..0b9b1cd 100644 --- a/packages/vecmath/src/rotors/Complex.zig +++ b/packages/vecmath/src/rotors/Complex.zig @@ -123,7 +123,11 @@ pub const Complex = extern struct { }; } - pub fn format(self: Complex, w: *std.io.Writer) !void { + pub fn format(self: Complex, w: *std.Io.Writer) !void { try w.print("Complex[{d:.3}, {d:.3}]", .{ self.re, self.im }); } + + test "refAllDecls" { + std.testing.refAllDecls(@This()); + } }; diff --git a/packages/vecmath/src/rotors/Complex_x8.zig b/packages/vecmath/src/rotors/Complex_x8.zig index dfc64b9..7ed39ab 100644 --- a/packages/vecmath/src/rotors/Complex_x8.zig +++ b/packages/vecmath/src/rotors/Complex_x8.zig @@ -193,4 +193,8 @@ pub const Complex_x8 = struct { .im = @mulAdd(vm.f32x8, vm.ps(t), b.im, @mulAdd(vm.f32x8, -vm.ps(t), a.im, a.im)), }; } + + test "refAllDecls" { + std.testing.refAllDecls(@This()); + } }; diff --git a/packages/vecmath/src/rotors/Quaternion.zig b/packages/vecmath/src/rotors/Quaternion.zig index 42def27..3150aa6 100644 --- a/packages/vecmath/src/rotors/Quaternion.zig +++ b/packages/vecmath/src/rotors/Quaternion.zig @@ -179,7 +179,11 @@ pub const Quaternion = extern struct { }; } - pub fn format(self: Quaternion, w: *std.io.Writer) !void { + pub fn format(self: Quaternion, w: *std.Io.Writer) !void { try w.print("Quaternion[{d:.3}, {d:.3}, {d:.3}, {d:.3}]", .{ self.x, self.y, self.z, self.w }); } + + test "refAllDecls" { + std.testing.refAllDecls(@This()); + } }; diff --git a/packages/vecmath/src/rotors/Quaternion_x8.zig b/packages/vecmath/src/rotors/Quaternion_x8.zig index b9d0992..4078063 100644 --- a/packages/vecmath/src/rotors/Quaternion_x8.zig +++ b/packages/vecmath/src/rotors/Quaternion_x8.zig @@ -278,4 +278,8 @@ pub const Quaternion_x8 = struct { .w = @mulAdd(vm.f32x8, vm.ps(t), b.w, @mulAdd(vm.f32x8, -vm.ps(t), a.w, a.w)), }; } + + test "refAllDecls" { + std.testing.refAllDecls(@This()); + } }; diff --git a/packages/vecmath/src/simd.zig b/packages/vecmath/src/simd.zig index a099199..7281fc3 100644 --- a/packages/vecmath/src/simd.zig +++ b/packages/vecmath/src/simd.zig @@ -31,3 +31,7 @@ pub inline fn epi64(value: i64) i64x4 { pub inline fn epu64(value: u64) u64x4 { return @splat(value); } + +test "refAllDecls" { + std.testing.refAllDecls(@This()); +} diff --git a/packages/vecmath/src/trig.zig b/packages/vecmath/src/trig.zig index f24bf5a..66e816f 100644 --- a/packages/vecmath/src/trig.zig +++ b/packages/vecmath/src/trig.zig @@ -235,3 +235,7 @@ test cossin_x8 { cossin_x8(.{ -1, -0.75, -0.5, -0.25, 0, 0.25, 0.5, 0.75 }), ); } + +test "refAllDecls" { + std.testing.refAllDecls(@This()); +} diff --git a/packages/vecmath/src/vectors/Vector2.zig b/packages/vecmath/src/vectors/Vector2.zig index 2187dcc..20b6c53 100644 --- a/packages/vecmath/src/vectors/Vector2.zig +++ b/packages/vecmath/src/vectors/Vector2.zig @@ -167,7 +167,11 @@ pub const Vector2 = extern struct { }; } - pub fn format(self: Vector2, w: *std.io.Writer) !void { + pub fn format(self: Vector2, w: *std.Io.Writer) !void { try w.print("[{d}, {d}]", .{ self.x, self.y }); } + + test "refAllDecls" { + std.testing.refAllDecls(@This()); + } }; diff --git a/packages/vecmath/src/vectors/Vector2Int.zig b/packages/vecmath/src/vectors/Vector2Int.zig index cc7095c..41c6dd5 100644 --- a/packages/vecmath/src/vectors/Vector2Int.zig +++ b/packages/vecmath/src/vectors/Vector2Int.zig @@ -110,10 +110,14 @@ pub const Vector2Int = extern struct { return self.x * other.y - self.y * other.x; } - pub fn format(self: Vector2Int, w: *std.io.Writer) !void { + pub fn format(self: Vector2Int, w: *std.Io.Writer) !void { try w.print("[{X:0>8}, {X:0>8}]", .{ @as(u32, @bitCast(self.x)), @as(u32, @bitCast(self.y)), }); } + + test "refAllDecls" { + std.testing.refAllDecls(@This()); + } }; diff --git a/packages/vecmath/src/vectors/Vector2Int_x8.zig b/packages/vecmath/src/vectors/Vector2Int_x8.zig index 2c7f93e..3d88a38 100644 --- a/packages/vecmath/src/vectors/Vector2Int_x8.zig +++ b/packages/vecmath/src/vectors/Vector2Int_x8.zig @@ -171,4 +171,8 @@ pub const Vector2Int_x8 = struct { pub inline fn cross(self: Vector2Int_x8, other: Vector2Int_x8) vm.i32x8 { return self.x * other.y - self.y * other.x; } + + test "refAllDecls" { + std.testing.refAllDecls(@This()); + } }; diff --git a/packages/vecmath/src/vectors/Vector2x8.zig b/packages/vecmath/src/vectors/Vector2x8.zig index ac9c4fb..c63e221 100644 --- a/packages/vecmath/src/vectors/Vector2x8.zig +++ b/packages/vecmath/src/vectors/Vector2x8.zig @@ -231,4 +231,8 @@ pub const Vector2x8 = struct { .y = self.x * vm.ps(m.iy) + self.y * vm.ps(m.jy), }; } + + test "refAllDecls" { + std.testing.refAllDecls(@This()); + } }; diff --git a/packages/vecmath/src/vectors/Vector3.zig b/packages/vecmath/src/vectors/Vector3.zig index 43746cd..f01cced 100644 --- a/packages/vecmath/src/vectors/Vector3.zig +++ b/packages/vecmath/src/vectors/Vector3.zig @@ -192,7 +192,11 @@ pub const Vector3 = extern struct { }; } - pub fn format(self: Vector3, w: *std.io.Writer) !void { + pub fn format(self: Vector3, w: *std.Io.Writer) !void { try w.print("[{d}, {d}, {d}]", .{ self.x, self.y, self.z }); } + + test "refAllDecls" { + std.testing.refAllDecls(@This()); + } }; diff --git a/packages/vecmath/src/vectors/Vector3Int.zig b/packages/vecmath/src/vectors/Vector3Int.zig index 110a953..80aec0f 100644 --- a/packages/vecmath/src/vectors/Vector3Int.zig +++ b/packages/vecmath/src/vectors/Vector3Int.zig @@ -117,11 +117,15 @@ pub const Vector3Int = extern struct { }; } - pub fn format(self: Vector3Int, w: *std.io.Writer) !void { + pub fn format(self: Vector3Int, w: *std.Io.Writer) !void { try w.print("[{X:0>8}, {X:0>8}, {X:0>8}]", .{ @as(u32, @bitCast(self.x)), @as(u32, @bitCast(self.y)), @as(u32, @bitCast(self.z)), }); } + + test "refAllDecls" { + std.testing.refAllDecls(@This()); + } }; diff --git a/packages/vecmath/src/vectors/Vector3Int_x8.zig b/packages/vecmath/src/vectors/Vector3Int_x8.zig index e44f737..b33b6b4 100644 --- a/packages/vecmath/src/vectors/Vector3Int_x8.zig +++ b/packages/vecmath/src/vectors/Vector3Int_x8.zig @@ -180,4 +180,8 @@ pub const Vector3Int_x8 = struct { .z = self.x * other.y - self.y * other.x, }; } + + test "refAllDecls" { + std.testing.refAllDecls(@This()); + } }; diff --git a/packages/vecmath/src/vectors/Vector3x8.zig b/packages/vecmath/src/vectors/Vector3x8.zig index 3949015..6e2b1e9 100644 --- a/packages/vecmath/src/vectors/Vector3x8.zig +++ b/packages/vecmath/src/vectors/Vector3x8.zig @@ -258,4 +258,8 @@ pub const Vector3x8 = struct { .z = v.x * vm.ps(self.iz) + v.y * vm.ps(self.jz) + v.z * vm.ps(self.kz), }; } + + test "refAllDecls" { + std.testing.refAllDecls(@This()); + } }; diff --git a/packages/vecmath/src/vectors/Vector4.zig b/packages/vecmath/src/vectors/Vector4.zig index 40ebecf..5ec8ede 100644 --- a/packages/vecmath/src/vectors/Vector4.zig +++ b/packages/vecmath/src/vectors/Vector4.zig @@ -147,7 +147,11 @@ pub const Vector4 = extern struct { }; } - pub fn format(self: Vector4, w: *std.io.Writer) !void { + pub fn format(self: Vector4, w: *std.Io.Writer) !void { try w.print("[{d}, {d}, {d}, {d}]", .{ self.x, self.y, self.z, self.w }); } + + test "refAllDecls" { + std.testing.refAllDecls(@This()); + } }; diff --git a/packages/vecmath/src/vectors/Vector4Int.zig b/packages/vecmath/src/vectors/Vector4Int.zig index 39e39b1..9212704 100644 --- a/packages/vecmath/src/vectors/Vector4Int.zig +++ b/packages/vecmath/src/vectors/Vector4Int.zig @@ -112,7 +112,7 @@ pub const Vector4Int = extern struct { return self.x * other.x + self.y * other.y + self.z * other.z + self.w * other.w; } - pub fn format(self: Vector4Int, w: *std.io.Writer) !void { + pub fn format(self: Vector4Int, w: *std.Io.Writer) !void { try w.print("[{X:0>8}, {X:0>8}, {X:0>8}, {X:0>8}]", .{ @as(u32, @bitCast(self.x)), @as(u32, @bitCast(self.y)), @@ -120,4 +120,8 @@ pub const Vector4Int = extern struct { @as(u32, @bitCast(self.w)), }); } + + test "refAllDecls" { + std.testing.refAllDecls(@This()); + } }; diff --git a/packages/vecmath/src/vectors/Vector4Int_x8.zig b/packages/vecmath/src/vectors/Vector4Int_x8.zig index 092d97d..ac3e5de 100644 --- a/packages/vecmath/src/vectors/Vector4Int_x8.zig +++ b/packages/vecmath/src/vectors/Vector4Int_x8.zig @@ -177,4 +177,8 @@ pub const Vector4Int_x8 = struct { pub inline fn dot(self: Vector4Int_x8, other: Vector4Int_x8) vm.i32x8 { return self.x * other.x + self.y * other.y + self.z * other.z + self.w * other.w; } + + test "refAllDecls" { + std.testing.refAllDecls(@This()); + } }; diff --git a/packages/vecmath/src/vectors/Vector4x8.zig b/packages/vecmath/src/vectors/Vector4x8.zig index c50a5f3..de078e0 100644 --- a/packages/vecmath/src/vectors/Vector4x8.zig +++ b/packages/vecmath/src/vectors/Vector4x8.zig @@ -217,4 +217,8 @@ pub const Vector4x8 = struct { .w = self.x * vm.ps(m.iw) + self.y * vm.ps(m.jw) + self.z * vm.ps(m.kw) + self.w * vm.ps(m.tw), }; } + + test "refAllDecls" { + std.testing.refAllDecls(@This()); + } };