I’m building a simple REPL using the new std.Io reader/writer interface in Zig 0.16. The loop is supposed to print a prompt, then block waiting for a line of input:
const std = @import("std");
const Io = std.Io;
pub fn main(init: std.process.Init) !void {
const arena: std.mem.Allocator = init.arena.allocator();
const io = init.io;
_ = try init.minimal.args.toSlice(arena);
var stdout_buffer: [1024]u8 = undefined;
var stdout_file_writer: Io.File.Writer = .init(.stdout(), io, &stdout_buffer);
const stdout_writer = &stdout_file_writer.interface;
var stdin_buffer: [1024]u8 = undefined;
var stdin_file_reader: Io.File.Reader = .init(.stdin(), io, &stdin_buffer);
const stdin_reader = &stdin_file_reader.interface;
while (true) {
try stdout_writer.print("db > ", .{});
try stdout_writer.flush();
_ = try stdin_reader.takeDelimiterExclusive('\n');
}
}
PS C:\Users\user\CLionProjects\project> .\zig-out\bin\project.exe
db > example
db > db > db > db > db > db > db > db > db > db > db > db > db > db > db > db > db > db > db > db > db > db > db > db > db > db > db > db > db > db > db > db > db > db > db > db > db > db > db > db > db > db > db > db > db > db > db > db > db > db > db > db > db > db
Zig 0.16 Windows, same issue with wsl