feat(io): introduce std.Io parameter for App.init
Some checks failed
Zig Project Action / Lint, Spell-check and test zig project (push) Failing after 1m22s

The provided `std.Io` is used for running the input reading and the
rendering asynch. The user can provide their desired `std.Io`
implementation as they wish to use. The examples use `std.Io.Threaded`
as a simple threaded solution.
This commit is contained in:
2025-11-10 16:44:02 +01:00
parent accbb4c97d
commit 79a0d17a66
17 changed files with 354 additions and 277 deletions

View File

@@ -133,7 +133,10 @@ pub fn main() !void {
const allocator = gpa.allocator();
var app: App = .init(.{});
var threaded_io: std.Io.Threaded = .init(allocator);
defer threaded_io.deinit();
var app: App = .init(threaded_io.ioBasic(), .{});
var renderer = zterm.Renderer.Buffered.init(allocator);
defer renderer.deinit();

View File

@@ -31,8 +31,10 @@ pub fn main() !void {
defer if (gpa.deinit() == .leak) log.err("memory leak", .{});
const allocator = gpa.allocator();
var threaded_io: std.Io.Threaded = .init(allocator);
defer threaded_io.deinit();
var app: App = .init(.{});
var app: App = .init(threaded_io.ioBasic(), .{});
var renderer = zterm.Renderer.Buffered.init(allocator);
defer renderer.deinit();

View File

@@ -32,7 +32,10 @@ pub fn main() !void {
const allocator = gpa.allocator();
var app: App = .init(.{});
var threaded_io: std.Io.Threaded = .init(allocator);
defer threaded_io.deinit();
var app: App = .init(threaded_io.ioBasic(), .{});
var renderer = zterm.Renderer.Buffered.init(allocator);
defer renderer.deinit();

View File

@@ -82,7 +82,10 @@ pub fn main() !void {
const allocator = gpa.allocator();
var app: App = .init(.{});
var threaded_io: std.Io.Threaded = .init(allocator);
defer threaded_io.deinit();
var app: App = .init(threaded_io.ioBasic(), .{});
var renderer = zterm.Renderer.Buffered.init(allocator);
defer renderer.deinit();

View File

@@ -65,7 +65,10 @@ pub fn main() !void {
const allocator = gpa.allocator();
var app: App = .init(.{});
var threaded_io: std.Io.Threaded = .init(allocator);
defer threaded_io.deinit();
var app: App = .init(threaded_io.ioBasic(), .{});
var renderer = zterm.Renderer.Buffered.init(allocator);
defer renderer.deinit();

View File

@@ -32,7 +32,10 @@ pub fn main() !void {
const allocator = gpa.allocator();
var app: App = .init(.{});
var threaded_io: std.Io.Threaded = .init(allocator);
defer threaded_io.deinit();
var app: App = .init(threaded_io.ioBasic(), .{});
var renderer = zterm.Renderer.Buffered.init(allocator);
defer renderer.deinit();

View File

@@ -32,7 +32,10 @@ pub fn main() !void {
const allocator = gpa.allocator();
var app: App = .init(.{});
var threaded_io: std.Io.Threaded = .init(allocator);
defer threaded_io.deinit();
var app: App = .init(threaded_io.ioBasic(), .{});
var renderer = zterm.Renderer.Buffered.init(allocator);
defer renderer.deinit();

View File

@@ -65,7 +65,10 @@ pub fn main() !void {
}
const allocator = gpa.allocator();
var app: App = .init(.{});
var threaded_io: std.Io.Threaded = .init(allocator);
defer threaded_io.deinit();
var app: App = .init(threaded_io.ioBasic(), .{});
var renderer = zterm.Renderer.Buffered.init(allocator);
defer renderer.deinit();

View File

@@ -32,7 +32,10 @@ pub fn main() !void {
const allocator = gpa.allocator();
var app: App = .init(.{});
var threaded_io: std.Io.Threaded = .init(allocator);
defer threaded_io.deinit();
var app: App = .init(threaded_io.ioBasic(), .{});
var renderer = zterm.Renderer.Buffered.init(allocator);
defer renderer.deinit();

View File

@@ -97,7 +97,10 @@ pub fn main() !void {
const allocator = gpa.allocator();
var app: App = .init(.{});
var threaded_io: std.Io.Threaded = .init(allocator);
defer threaded_io.deinit();
var app: App = .init(threaded_io.ioBasic(), .{});
var renderer = zterm.Renderer.Buffered.init(allocator);
defer renderer.deinit();

View File

@@ -35,7 +35,10 @@ pub fn main() !void {
const allocator = gpa.allocator();
var app: App = .init(.{});
var threaded_io: std.Io.Threaded = .init(allocator);
defer threaded_io.deinit();
var app: App = .init(threaded_io.ioBasic(), .{});
var renderer = zterm.Renderer.Buffered.init(allocator);
defer renderer.deinit();

View File

@@ -35,7 +35,10 @@ pub fn main() !void {
const allocator = gpa.allocator();
var app: App = .init(.{});
var threaded_io: std.Io.Threaded = .init(allocator);
defer threaded_io.deinit();
var app: App = .init(threaded_io.ioBasic(), .{});
var renderer = zterm.Renderer.Buffered.init(allocator);
defer renderer.deinit();

View File

@@ -35,7 +35,10 @@ pub fn main() !void {
const allocator = gpa.allocator();
var app: App = .init(.{});
var threaded_io: std.Io.Threaded = .init(allocator);
defer threaded_io.deinit();
var app: App = .init(threaded_io.ioBasic(), .{});
var renderer = zterm.Renderer.Buffered.init(allocator);
defer renderer.deinit();

View File

@@ -35,7 +35,10 @@ pub fn main() !void {
const allocator = gpa.allocator();
var app: App = .init(.{});
var threaded_io: std.Io.Threaded = .init(allocator);
defer threaded_io.deinit();
var app: App = .init(threaded_io.ioBasic(), .{});
var renderer = zterm.Renderer.Buffered.init(allocator);
defer renderer.deinit();

View File

@@ -32,7 +32,10 @@ pub fn main() !void {
const allocator = gpa.allocator();
var app: App = .init(.{});
var threaded_io: std.Io.Threaded = .init(allocator);
defer threaded_io.deinit();
var app: App = .init(threaded_io.ioBasic(), .{});
var renderer = zterm.Renderer.Buffered.init(allocator);
defer renderer.deinit();

View File

@@ -178,7 +178,10 @@ pub fn main() !void {
const allocator = gpa.allocator();
var app: App = .init(.{});
var threaded_io: std.Io.Threaded = .init(allocator);
defer threaded_io.deinit();
var app: App = .init(threaded_io.ioBasic(), .{});
var renderer = zterm.Renderer.Buffered.init(allocator);
defer renderer.deinit();