From 21f86f07adf544850a7ef5f913c01117c04db147 Mon Sep 17 00:00:00 2001 From: Chris Boesch Date: Sat, 27 Dec 2025 23:44:12 +0100 Subject: migrated build and test --- build.zig | 51 ++++++++++++++++++++++++++++++++------------------- 1 file changed, 32 insertions(+), 19 deletions(-) (limited to 'build.zig') diff --git a/build.zig b/build.zig index a936832..897840c 100644 --- a/build.zig +++ b/build.zig @@ -24,7 +24,7 @@ comptime { \\ \\Ziglings requires development build \\ - \\{} + \\{s} \\ \\or higher. \\ @@ -34,7 +34,7 @@ comptime { \\ \\ ; - @compileError(std.fmt.comptimePrint(error_message, .{min_zig})); + @compileError(std.fmt.comptimePrint(error_message, .{required_zig})); } } @@ -123,10 +123,12 @@ pub const logo = const progress_filename = ".progress.txt"; pub fn build(b: *Build) !void { + const io = b.graph.io; + // const io = std.Options.debug_io; if (!validate_exercises()) std.process.exit(2); use_color_escapes = false; - if (std.fs.File.stderr().supportsAnsiEscapeCodes()) { + if (try std.Io.File.stderr().supportsAnsiEscapeCodes(io)) { use_color_escapes = true; } else if (builtin.os.tag == .windows) { const w32 = struct { @@ -245,9 +247,9 @@ pub fn build(b: *Build) !void { } if (reset) |_| { - std.fs.cwd().deleteFile(progress_filename) catch |err| { + std.Io.Dir.cwd().deleteFile(io, progress_filename) catch |err| { switch (err) { - std.fs.Dir.DeleteFileError.FileNotFound => {}, + std.Io.Dir.DeleteFileError.FileNotFound => {}, else => { print("Unable to remove progress file, Error: {}\n", .{err}); return err; @@ -268,17 +270,20 @@ pub fn build(b: *Build) !void { var starting_exercise: u32 = 0; - if (std.fs.cwd().openFile(progress_filename, .{})) |progress_file| { - defer progress_file.close(); + if (std.Io.Dir.cwd().openFile(io, progress_filename, .{})) |progress_file| { + defer progress_file.close(io); - const progress_file_size = try progress_file.getEndPos(); + const progress_file_size = try progress_file.length(io); var gpa = std.heap.GeneralPurposeAllocator(.{}){}; defer _ = gpa.deinit(); const allocator = gpa.allocator(); const contents = try allocator.alloc(u8, progress_file_size); defer allocator.free(contents); - const bytes_read = try progress_file.read(contents); + var file_buffer: [1024]u8 = undefined; + var file_reader = progress_file.reader(io, &file_buffer); + // try file_reader.interface.readSliceAll(contents); + const bytes_read = try file_reader.interface.readSliceShort(contents); if (bytes_read != progress_file_size) { return error.UnexpectedEOF; } @@ -286,7 +291,7 @@ pub fn build(b: *Build) !void { starting_exercise = try std.fmt.parseInt(u32, contents, 10); } else |err| { switch (err) { - std.fs.File.OpenError.FileNotFound => { + std.Io.File.OpenError.FileNotFound => { // This is fine, may be the first time tests are run or progress have been reset }, else => { @@ -382,15 +387,16 @@ const ZiglingStep = struct { fn run(self: *ZiglingStep, exe_path: []const u8, _: std.Progress.Node) !void { resetLine(); - print("Checking: {s}\n", .{self.exercise.main_file}); - const b = self.step.owner; + const io = b.graph.io; + + print("Checking: {s}\n", .{self.exercise.main_file}); // Allow up to 1 MB of stdout capture. const max_output_bytes = 1 * 1024 * 1024; - const result = Child.run(.{ - .allocator = b.allocator, + const result = Child.run(b.allocator, io, .{ + // .allocator = b.allocator, .argv = &.{exe_path}, .cwd = b.build_root.path.?, .cwd_dir = b.build_root.handle, @@ -409,6 +415,7 @@ const ZiglingStep = struct { fn check_output(self: *ZiglingStep, result: Child.RunResult) !void { const b = self.step.owner; + const io = b.graph.io; // Make sure it exited cleanly. switch (result.term) { @@ -456,14 +463,15 @@ const ZiglingStep = struct { const progress = try std.fmt.allocPrint(b.allocator, "{d}", .{self.exercise.number()}); defer b.allocator.free(progress); - const file = try std.fs.cwd().createFile( + const file = try std.Io.Dir.cwd().createFile( + io, progress_filename, .{ .read = true, .truncate = true }, ); - defer file.close(); + defer file.close(io); - try file.writeAll(progress); - try file.sync(); + try file.writeStreamingAll(io, progress); + try file.sync(io); print("{s}PASSED:\n{s}{s}\n\n", .{ green_text, output, reset_text }); } @@ -558,6 +566,8 @@ const ZiglingStep = struct { fn printErrors(self: *ZiglingStep) void { resetLine(); + const b = self.step.owner; + const io = b.graph.io; // Display error/warning messages. if (self.step.result_error_msgs.items.len > 0) { @@ -575,7 +585,10 @@ const ZiglingStep = struct { else .off; if (self.step.result_error_bundle.errorMessageCount() > 0) { - self.step.result_error_bundle.renderToStdErr(.{}, color); + self.step.result_error_bundle.renderToStderr(io, .{}, color) catch |err| { + print("{}\n", .{err}); + return; + }; } } }; -- cgit v1.2.3 From b332dc879ec4f341a914fc8f0e488c3bed24f12d Mon Sep 17 00:00:00 2001 From: Chris Boesch Date: Sun, 28 Dec 2025 21:39:32 +0100 Subject: build revised --- build.zig | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'build.zig') diff --git a/build.zig b/build.zig index 897840c..f945c26 100644 --- a/build.zig +++ b/build.zig @@ -124,7 +124,7 @@ const progress_filename = ".progress.txt"; pub fn build(b: *Build) !void { const io = b.graph.io; - // const io = std.Options.debug_io; + if (!validate_exercises()) std.process.exit(2); use_color_escapes = false; @@ -396,7 +396,6 @@ const ZiglingStep = struct { const max_output_bytes = 1 * 1024 * 1024; const result = Child.run(b.allocator, io, .{ - // .allocator = b.allocator, .argv = &.{exe_path}, .cwd = b.build_root.path.?, .cwd_dir = b.build_root.handle, @@ -540,7 +539,7 @@ const ZiglingStep = struct { .exe => self.exercise.name(), .@"test" => "test", }; - const sep = std.fs.path.sep_str; + const sep = std.Io.Dir.path.sep_str; const root_path = exe_dir.?.root_dir.path.?; const sub_path = exe_dir.?.subPathOrDot(); const exe_path = b.fmt("{s}{s}{s}{s}{s}", .{ root_path, sep, sub_path, sep, exe_name }); -- cgit v1.2.3 From e8f81ddb96208bd363df2e4cc1af906fa84f0aef Mon Sep 17 00:00:00 2001 From: Chris Boesch Date: Mon, 29 Dec 2025 12:42:35 +0100 Subject: finish new i/o --- README.md | 3 +-- build.zig | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) (limited to 'build.zig') diff --git a/README.md b/README.md index 0986e0c..49af5ea 100644 --- a/README.md +++ b/README.md @@ -86,8 +86,7 @@ that if you update one, you may need to also update the other. ### Version Changes -* *2026-01-xx* zig 0.16.0-dev.xx - file system I/O integrated with the std.Io interface, see [#30232](https://codeberg.org/ziglang/zig/pulls/30232) - +* *2025-12-28 zig 0.16.0-dev.1859 - file system I/O integrated with the std.Io interface, see [#30232](https://codeberg.org/ziglang/zig/pulls/30232) * *2025-11-01* zig 0.16.0-dev.1204 - more changes due to new I/O API, see [#25592](https://github.com/ziglang/zig/pull/25592) * *2025-09-24* zig 0.16.0-dev.377 - Enable passing file content as args, see [#25228](https://github.com/ziglang/zig/pull/25228) * *2025-09-03* zig 0.16.0-dev.164 - changes in reader, see [#25077](https://github.com/ziglang/zig/pull/25077) diff --git a/build.zig b/build.zig index f945c26..1b27264 100644 --- a/build.zig +++ b/build.zig @@ -15,7 +15,7 @@ const print = std.debug.print; // 1) Getting Started // 2) Version Changes comptime { - const required_zig = "0.16.0-dev.1204"; + const required_zig = "0.16.0-dev.1859"; const current_zig = builtin.zig_version; const min_zig = std.SemanticVersion.parse(required_zig) catch unreachable; if (current_zig.order(min_zig) == .lt) { -- cgit v1.2.3