diff options
-rw-r--r-- | README.md | 2 | ||||
-rw-r--r-- | build.zig | 14 | ||||
m--------- | lib/spoon | 0 | ||||
-rw-r--r-- | src/field.zig | 29 | ||||
-rw-r--r-- | src/interpreter.zig | 4 | ||||
-rw-r--r-- | src/io.zig | 10 | ||||
-rw-r--r-- | src/main.zig | 9 | ||||
-rw-r--r-- | src/pointer.zig | 7 | ||||
-rw-r--r-- | src/stack.zig | 4 | ||||
-rw-r--r-- | src/stackStack.zig | 4 | ||||
-rw-r--r-- | src/tui.zig | 18 |
11 files changed, 39 insertions, 62 deletions
@@ -17,7 +17,7 @@ Current limitations are : ## Dependencies -zig is required. Only zig version 0.11 on linux amd64 (Gentoo) is being regularly tested. +zig is required. Only zig version 0.13 on linux amd64 (Gentoo) is being regularly tested. ## Quick Install @@ -6,7 +6,7 @@ pub fn build(b: *std.Build) void { const exe = b.addExecutable(.{ .name = "zigfunge98", - .root_source_file = .{ .path = "src/main.zig" }, + .root_source_file = b.path("src/main.zig"), .target = target, .optimize = optimize, }); @@ -19,7 +19,7 @@ pub fn build(b: *std.Build) void { const run_step = b.step("run", "Run the app"); run_step.dependOn(&run_cmd.step); const unit_tests = b.addTest(.{ - .root_source_file = .{ .path = "src/main.zig" }, + .root_source_file = b.path("src/main.zig"), .target = target, .optimize = optimize, }); @@ -34,7 +34,7 @@ pub fn build(b: *std.Build) void { const exclude = std.fmt.allocPrint(gpa, "--exclude-path={s}/.zig/", .{home}) catch ""; defer gpa.free(exclude); if (coverage) { - unit_tests.test_runner = "/usr/bin/kcov"; + unit_tests.test_runner = b.path("/usr/bin/kcov"); unit_tests.setExecCmd(&[_]?[]const u8{ "kcov", exclude, @@ -51,14 +51,14 @@ pub fn build(b: *std.Build) void { // ----- TUI -------------------------------------------------------------- const tui = b.addExecutable(.{ .name = "zigfunge98-tui", - .root_source_file = .{ .path = "src/tui.zig" }, + .root_source_file = b.path("src/tui.zig"), .target = target, .optimize = optimize, }); const spoon = b.createModule(.{ - .source_file = .{ .path = "lib/spoon/import.zig" }, + .root_source_file = b.path("lib/spoon/import.zig"), }); - tui.addModule("spoon", spoon); + tui.root_module.addImport("spoon", spoon); b.installArtifact(tui); const tui_cmd = b.addRunArtifact(tui); tui_cmd.step.dependOn(b.getInstallStep()); @@ -68,7 +68,7 @@ pub fn build(b: *std.Build) void { const tui_step = b.step("run-tui", "Run the app"); tui_step.dependOn(&tui_cmd.step); const tui_unit_tests = b.addTest(.{ - .root_source_file = .{ .path = "src/tui.zig" }, + .root_source_file = b.path("src/tui.zig"), .target = target, .optimize = optimize, }); diff --git a/lib/spoon b/lib/spoon -Subproject 9fa5bb1eafc30b3ff0cbe297a3e0f51dbc90383 +Subproject 3e6c5ab4617e1869c2781e698e14cd976135e99 diff --git a/src/field.zig b/src/field.zig index bf170fb..6062e3c 100644 --- a/src/field.zig +++ b/src/field.zig @@ -1,5 +1,7 @@ const std = @import("std"); +const position = struct { x: i64, y: i64 }; + const Line = struct { allocator: std.mem.Allocator, x: i64 = 0, @@ -16,7 +18,7 @@ const Line = struct { var i: usize = 1; while (l.data.items[i] == ' ') : (i += 1) {} l.x += @intCast(i); - std.mem.copy(i64, l.data.items[0 .. l.len() - i], l.data.items[i..]); + std.mem.copyForwards(i64, l.data.items[0 .. l.len() - i], l.data.items[i..]); l.data.items.len -= i; } else { // we need to remove trailing spaces var i: usize = l.len() - 1; @@ -168,7 +170,7 @@ pub const Field = struct { f.lines.items[i].deinit(); } f.y += @intCast(i); - std.mem.copy(*Line, f.lines.items[0 .. f.lines.items.len - i], f.lines.items[i..]); + std.mem.copyForwards(*Line, f.lines.items[0 .. f.lines.items.len - i], f.lines.items[i..]); f.lines.items.len -= i; } else if (y == f.y + lly - 1) { // we need to remove trailing lines l.deinit(); @@ -259,7 +261,7 @@ pub const Field = struct { f.x = undefined; f.y = 0; f.lines = std.ArrayList(*Line).init(allocator); - var l = try f.lines.addOne(); + const l = try f.lines.addOne(); l.* = try Line.init(allocator); f.lx = 0; return f; @@ -282,7 +284,7 @@ pub const Field = struct { var y: i64 = 0; while (true) { var buffer: [4096]u8 = undefined; - var l = try reader.read(buffer[0..]); + const l = try reader.read(buffer[0..]); if (l == 0) return; var i: usize = 0; while (i < l) : (i += 1) { @@ -411,7 +413,7 @@ pub const Field = struct { try std.testing.expectEqual(f.get(8, 2), '2'); try std.testing.expectEqual(f.get(9, 2), ' '); } - pub fn step(f: *Field, x: i64, y: i64, dx: i64, dy: i64, smartAdvance: bool, jumping: bool) struct { x: i64, y: i64 } { + pub fn step(f: *Field, x: i64, y: i64, dx: i64, dy: i64, smartAdvance: bool, jumping: bool) position { var a = x + dx; var b = y + dy; if (!f.isIn(a, b)) { @@ -419,8 +421,8 @@ pub const Field = struct { a = x; b = y; while (true) { - var c = a - dx; - var d = b - dy; + const c = a - dx; + const d = b - dy; if (!f.isIn(c, d)) break; a = c; b = d; @@ -445,21 +447,18 @@ pub const Field = struct { var f = try Field.init(std.testing.allocator); defer f.deinit(); try f.load(minimal.reader()); - try std.testing.expectEqual(f.step(0, 0, 0, 0, false, false), .{ .x = 0, .y = 0 }); - try std.testing.expectEqual(f.step(0, 0, 1, 0, false, false), .{ .x = 0, .y = 0 }); + try std.testing.expectEqual(f.step(0, 0, 0, 0, false, false), @as(position, .{ .x = 0, .y = 0 })); + try std.testing.expectEqual(f.step(0, 0, 1, 0, false, false), @as(position, .{ .x = 0, .y = 0 })); var hello = std.io.fixedBufferStream("64+\"!dlroW ,olleH\">:#,_@\n"); var fHello = try Field.init(std.testing.allocator); defer fHello.deinit(); try fHello.load(hello.reader()); - try std.testing.expectEqual(fHello.step(3, 0, 0, 0, false, false), .{ .x = 3, .y = 0 }); - try std.testing.expectEqual(fHello.step(3, 0, 1, 0, false, false), .{ .x = 4, .y = 0 }); - try std.testing.expectEqual(fHello.step(0, 0, -1, 0, false, false), .{ .x = 23, .y = 0 }); + try std.testing.expectEqual(fHello.step(3, 0, 0, 0, false, false), @as(position, .{ .x = 3, .y = 0 })); + try std.testing.expectEqual(fHello.step(3, 0, 1, 0, false, false), @as(position, .{ .x = 4, .y = 0 })); + try std.testing.expectEqual(fHello.step(0, 0, -1, 0, false, false), @as(position, .{ .x = 23, .y = 0 })); } }; -test "all" { - std.testing.refAllDecls(@This()); -} test "hello" { var hello = std.io.fixedBufferStream("64+\"!dlroW ,olleH\">:#,_@\n"); var f = try Field.init_from_reader(std.testing.allocator, hello.reader()); diff --git a/src/interpreter.zig b/src/interpreter.zig index 37ebba9..5c9f484 100644 --- a/src/interpreter.zig +++ b/src/interpreter.zig @@ -41,7 +41,3 @@ pub const Interpreter = struct { return null; } }; - -test "all" { - std.testing.refAllDecls(@This()); -} @@ -12,14 +12,14 @@ pub fn Context(comptime readerType: anytype, comptime writerType: anytype) type return c; } var buffer = [_]u8{0}; - var n = try self.reader.read(buffer[0..]); + const n = try self.reader.read(buffer[0..]); if (n == 1) { return buffer[0]; } return error.IOError; } test "characterInput" { - var stdin = std.io.fixedBufferStream("ab0"); + const stdin = std.io.fixedBufferStream("ab0"); var stdout = std.ArrayList(u8).init(std.testing.allocator); defer stdout.deinit(); var ioContext = context(stdin, stdout); @@ -49,7 +49,7 @@ pub fn Context(comptime readerType: anytype, comptime writerType: anytype) type return result; } test "decimalInput" { - var stdin = std.io.fixedBufferStream("1 234abc5d6ef"); + const stdin = std.io.fixedBufferStream("1 234abc5d6ef"); var stdout = std.ArrayList(u8).init(std.testing.allocator); defer stdout.deinit(); var ioContext = context(stdin, stdout); @@ -80,7 +80,3 @@ pub fn context(reader: anytype, writer: anytype) Context(@TypeOf(reader), @TypeO .writer = writer, }; } - -test "all" { - std.testing.refAllDecls(@This()); -} diff --git a/src/main.zig b/src/main.zig index 920d306..5872724 100644 --- a/src/main.zig +++ b/src/main.zig @@ -5,11 +5,11 @@ const io = @import("io.zig"); pub fn main() anyerror!void { var general_purpose_allocator = std.heap.GeneralPurposeAllocator(.{}){}; const gpa = general_purpose_allocator.allocator(); - var args = try std.process.argsAlloc(gpa); + const args = try std.process.argsAlloc(gpa); defer std.process.argsFree(gpa, args); if (args.len < 2) { std.debug.print("Usage: {s} <b98_file_to_run>\n", .{args[0]}); - std.os.exit(1); + std.posix.exit(1); } var file = try std.fs.cwd().openFile(args[1], .{}); @@ -20,14 +20,11 @@ pub fn main() anyerror!void { defer i.deinit(); var ioContext = io.context(std.io.getStdIn().reader(), std.io.getStdOut().writer()); - std.os.exit(@intCast(try i.run(&ioContext))); + std.posix.exit(@intCast(try i.run(&ioContext))); } const testTimestamp: i64 = 1660681247; -test "all" { - std.testing.refAllDecls(@This()); -} test "sanity" { var file = try std.fs.cwd().openFile("mycology/sanity.bf", .{}); defer file.close(); diff --git a/src/pointer.zig b/src/pointer.zig index eeb1204..fe6a526 100644 --- a/src/pointer.zig +++ b/src/pointer.zig @@ -44,7 +44,7 @@ pub const Pointer = struct { p.step(false); }, 'j' => { - var n = p.ss.toss.pop(); + const n = p.ss.toss.pop(); var j: usize = 0; if (n > 0) { while (j < n) : (j += 1) { @@ -379,7 +379,7 @@ pub const Pointer = struct { p.lastCharWasSpace = false; // Initializing the random number generator var seed: u64 = undefined; - try std.os.getrandom(std.mem.asBytes(&seed)); + try std.posix.getrandom(std.mem.asBytes(&seed)); p.rand = std.rand.DefaultPrng.init(seed); p.timestamp = timestamp; return p; @@ -445,9 +445,6 @@ pub const Pointer = struct { const testTimestamp: i64 = 1660681247; -test "all" { - std.testing.refAllDecls(@This()); -} test "minimal" { var minimal = std.io.fixedBufferStream("@"); var f = try field.Field.init_from_reader(std.testing.allocator, minimal.reader()); diff --git a/src/stack.zig b/src/stack.zig index dd76af1..58c7103 100644 --- a/src/stack.zig +++ b/src/stack.zig @@ -157,7 +157,3 @@ pub const Stack = struct { } } }; - -test "all" { - std.testing.refAllDecls(@This()); -} diff --git a/src/stackStack.zig b/src/stackStack.zig index d846429..79ef7cc 100644 --- a/src/stackStack.zig +++ b/src/stackStack.zig @@ -174,7 +174,3 @@ pub const StackStack = struct { return self.toss; } }; - -test "all" { - std.testing.refAllDecls(@This()); -} diff --git a/src/tui.zig b/src/tui.zig index 8c4145f..55a848b 100644 --- a/src/tui.zig +++ b/src/tui.zig @@ -15,7 +15,7 @@ pub fn main() anyerror!void { defer std.process.argsFree(gpa, args); if (args.len < 2) { std.debug.print("Usage: {s} <b98_file_to_run>\n", .{args[0]}); - std.os.exit(1); + std.posix.exit(1); } var file = try std.fs.cwd().openFile(args[1], .{}); @@ -29,19 +29,19 @@ pub fn main() anyerror!void { //--- Term initialization ------------------------------------------------- try term.init(.{}); - defer term.deinit(); + defer term.deinit() catch {}; - try std.os.sigaction(std.os.SIG.WINCH, &std.os.Sigaction{ + try std.posix.sigaction(std.posix.SIG.WINCH, &std.posix.Sigaction{ .handler = .{ .handler = handleSigWinch }, - .mask = std.os.empty_sigset, + .mask = std.posix.empty_sigset, .flags = 0, }, null); - var fds: [1]std.os.pollfd = undefined; + var fds: [1]std.posix.pollfd = undefined; if (term.tty) |tty| { fds[0] = .{ .fd = tty, - .events = std.os.POLL.IN, + .events = std.posix.POLL.IN, .revents = undefined, }; } @@ -56,7 +56,7 @@ pub fn main() anyerror!void { var buf: [16]u8 = undefined; var done = false; while (!done) { - _ = try std.os.poll(&fds, -1); + _ = try std.posix.poll(&fds, -1); const read = try term.readInput(&buf); var it = spoon.inputParser(buf[0..read]); @@ -67,11 +67,11 @@ pub fn main() anyerror!void { } else if (in.eqlDescription("s")) { if (try intp.step(&ioContext)) |code| { try term.cook(); - term.deinit(); + term.deinit() catch {}; intp.deinit(); file.close(); std.process.argsFree(gpa, args); - std.os.exit(@intCast(code)); + std.posix.exit(@intCast(code)); } try render(); } |