From a3b5e884b12fdaa341010ef41bb9382fa0cd89f8 Mon Sep 17 00:00:00 2001 From: Michael Chaten Date: Sat, 13 Sep 2025 08:38:24 -0700 Subject: Update codebase to Zig 0.15.1. Removes compression support --- codegen/canon.zig | 24 ++++++++++---------- codegen/case_prop.zig | 31 ++++++++++++++------------ codegen/ccc.zig | 31 ++++++++++++++------------ codegen/compat.zig | 27 +++++++++++++---------- codegen/core_props.zig | 32 ++++++++++++++------------- codegen/dwp.zig | 42 ++++++++++++++++++++--------------- codegen/fold.zig | 59 +++++++++++++++++++++++++++----------------------- codegen/gbp.zig | 57 ++++++++++++++++++++++++++++-------------------- codegen/gencat.zig | 35 ++++++++++++++++-------------- codegen/hangul.zig | 32 ++++++++++++++------------- codegen/lower.zig | 26 ++++++++++++---------- codegen/normp.zig | 32 ++++++++++++++------------- codegen/numeric.zig | 31 ++++++++++++++------------ codegen/props.zig | 32 ++++++++++++++------------- codegen/scripts.zig | 38 +++++++++++++++++--------------- codegen/upper.zig | 31 +++++++++++++++----------- codegen/wbp.zig | 32 ++++++++++++++------------- 17 files changed, 324 insertions(+), 268 deletions(-) (limited to 'codegen') diff --git a/codegen/canon.zig b/codegen/canon.zig index 28b7f28..89a9070 100644 --- a/codegen/canon.zig +++ b/codegen/canon.zig @@ -1,32 +1,30 @@ const std = @import("std"); const builtin = @import("builtin"); -pub fn main() !void { +pub fn main() anyerror!void { var arena = std.heap.ArenaAllocator.init(std.heap.page_allocator); defer arena.deinit(); const allocator = arena.allocator(); + var line_buf: [4096]u8 = undefined; + var write_buf: [4096]u8 = undefined; // Process UnicodeData.txt var in_file = try std.fs.cwd().openFile("data/unicode/UnicodeData.txt", .{}); defer in_file.close(); - var in_buf = std.io.bufferedReader(in_file.reader()); - const in_reader = in_buf.reader(); + var in_reader = in_file.reader(&line_buf); var args_iter = try std.process.argsWithAllocator(allocator); defer args_iter.deinit(); _ = args_iter.skip(); const output_path = args_iter.next() orelse @panic("No output file arg!"); - const compressor = std.compress.flate.deflate.compressor; var out_file = try std.fs.cwd().createFile(output_path, .{}); defer out_file.close(); - var out_comp = try compressor(.raw, out_file.writer(), .{ .level = .best }); - const writer = out_comp.writer(); - + var file_writer = out_file.writer(&write_buf); + var writer = &file_writer.interface; const endian = builtin.cpu.arch.endian(); - var line_buf: [4096]u8 = undefined; - lines: while (try in_reader.readUntilDelimiterOrEof(&line_buf, '\n')) |line| { + lines: while (in_reader.interface.takeDelimiterInclusive('\n')) |line| { if (line.len == 0) continue; var field_iter = std.mem.splitScalar(u8, line, ';'); @@ -60,8 +58,12 @@ pub fn main() !void { try writer.writeInt(u8, @intCast(len), endian); for (cps[0..len]) |cp| try writer.writeInt(u24, cp, endian); + } else |err| switch (err) { + error.EndOfStream => {}, + else => { + return err; + }, } - try writer.writeInt(u16, 0, endian); - try out_comp.flush(); + try writer.flush(); } diff --git a/codegen/case_prop.zig b/codegen/case_prop.zig index 6c912a8..66eb62c 100644 --- a/codegen/case_prop.zig +++ b/codegen/case_prop.zig @@ -22,7 +22,7 @@ const BlockMap = std.HashMap( std.hash_map.default_max_load_percentage, ); -pub fn main() !void { +pub fn main() anyerror!void { var arena = std.heap.ArenaAllocator.init(std.heap.page_allocator); defer arena.deinit(); const allocator = arena.allocator(); @@ -35,10 +35,9 @@ pub fn main() !void { // Process DerivedCoreProperties.txt var in_file = try std.fs.cwd().openFile("data/unicode/DerivedCoreProperties.txt", .{}); defer in_file.close(); - var in_buf = std.io.bufferedReader(in_file.reader()); - const in_reader = in_buf.reader(); + var in_reader = in_file.reader(&line_buf); - while (try in_reader.readUntilDelimiterOrEof(&line_buf, '\n')) |line| { + while (in_reader.interface.takeDelimiterExclusive('\n')) |line| { if (line.len == 0 or line[0] == '#') continue; const no_comment = if (mem.indexOfScalar(u8, line, '#')) |octo| line[0..octo] else line; @@ -79,15 +78,20 @@ pub fn main() !void { else => {}, } } + } else |err| switch (err) { + error.EndOfStream => {}, + else => { + return err; + }, } var blocks_map = BlockMap.init(allocator); defer blocks_map.deinit(); - var stage1 = std.ArrayList(u16).init(allocator); + var stage1 = std.array_list.Managed(u16).init(allocator); defer stage1.deinit(); - var stage2 = std.ArrayList(u8).init(allocator); + var stage2 = std.array_list.Managed(u8).init(allocator); defer stage2.deinit(); var block: Block = [_]u8{0} ** block_size; @@ -118,18 +122,17 @@ pub fn main() !void { _ = args_iter.skip(); const output_path = args_iter.next() orelse @panic("No output file arg!"); - const compressor = std.compress.flate.deflate.compressor; + var write_buf: [4096]u8 = undefined; var out_file = try std.fs.cwd().createFile(output_path, .{}); defer out_file.close(); - var out_comp = try compressor(.raw, out_file.writer(), .{ .level = .best }); - const writer = out_comp.writer(); + var writer = out_file.writer(&write_buf); const endian = builtin.cpu.arch.endian(); - try writer.writeInt(u16, @intCast(stage1.items.len), endian); - for (stage1.items) |i| try writer.writeInt(u16, i, endian); + try writer.interface.writeInt(u16, @intCast(stage1.items.len), endian); + for (stage1.items) |i| try writer.interface.writeInt(u16, i, endian); - try writer.writeInt(u16, @intCast(stage2.items.len), endian); - try writer.writeAll(stage2.items); + try writer.interface.writeInt(u16, @intCast(stage2.items.len), endian); + try writer.interface.writeAll(stage2.items); - try out_comp.flush(); + try writer.interface.flush(); } diff --git a/codegen/ccc.zig b/codegen/ccc.zig index a01c8d2..b9b2bc3 100644 --- a/codegen/ccc.zig +++ b/codegen/ccc.zig @@ -21,7 +21,7 @@ const BlockMap = std.HashMap( std.hash_map.default_max_load_percentage, ); -pub fn main() !void { +pub fn main() anyerror!void { var arena = std.heap.ArenaAllocator.init(std.heap.page_allocator); defer arena.deinit(); const allocator = arena.allocator(); @@ -34,10 +34,9 @@ pub fn main() !void { // Process DerivedCombiningClass.txt var cc_file = try std.fs.cwd().openFile("data/unicode/extracted/DerivedCombiningClass.txt", .{}); defer cc_file.close(); - var cc_buf = std.io.bufferedReader(cc_file.reader()); - const cc_reader = cc_buf.reader(); + var cc_reader = cc_file.reader(&line_buf); - while (try cc_reader.readUntilDelimiterOrEof(&line_buf, '\n')) |line| { + while (cc_reader.interface.takeDelimiterExclusive('\n')) |line| { if (line.len == 0 or line[0] == '#') continue; const no_comment = if (std.mem.indexOfScalar(u8, line, '#')) |octo| line[0..octo] else line; @@ -68,15 +67,20 @@ pub fn main() !void { else => {}, } } + } else |err| switch (err) { + error.EndOfStream => {}, + else => { + return err; + }, } var blocks_map = BlockMap.init(allocator); defer blocks_map.deinit(); - var stage1 = std.ArrayList(u16).init(allocator); + var stage1 = std.array_list.Managed(u16).init(allocator); defer stage1.deinit(); - var stage2 = std.ArrayList(u8).init(allocator); + var stage2 = std.array_list.Managed(u8).init(allocator); defer stage2.deinit(); var block: Block = [_]u8{0} ** block_size; @@ -107,18 +111,17 @@ pub fn main() !void { _ = args_iter.skip(); const output_path = args_iter.next() orelse @panic("No output file arg!"); - const compressor = std.compress.flate.deflate.compressor; + var write_buf: [4096]u8 = undefined; var out_file = try std.fs.cwd().createFile(output_path, .{}); defer out_file.close(); - var out_comp = try compressor(.raw, out_file.writer(), .{ .level = .best }); - const writer = out_comp.writer(); + var writer = out_file.writer(&write_buf); const endian = builtin.cpu.arch.endian(); - try writer.writeInt(u16, @intCast(stage1.items.len), endian); - for (stage1.items) |i| try writer.writeInt(u16, i, endian); + try writer.interface.writeInt(u16, @intCast(stage1.items.len), endian); + for (stage1.items) |i| try writer.interface.writeInt(u16, i, endian); - try writer.writeInt(u16, @intCast(stage2.items.len), endian); - try writer.writeAll(stage2.items); + try writer.interface.writeInt(u16, @intCast(stage2.items.len), endian); + try writer.interface.writeAll(stage2.items); - try out_comp.flush(); + try writer.interface.flush(); } diff --git a/codegen/compat.zig b/codegen/compat.zig index 07616fc..835a636 100644 --- a/codegen/compat.zig +++ b/codegen/compat.zig @@ -1,7 +1,7 @@ const std = @import("std"); const builtin = @import("builtin"); -pub fn main() !void { +pub fn main() anyerror!void { var arena = std.heap.ArenaAllocator.init(std.heap.page_allocator); defer arena.deinit(); const allocator = arena.allocator(); @@ -9,24 +9,22 @@ pub fn main() !void { // Process UnicodeData.txt var in_file = try std.fs.cwd().openFile("data/unicode/UnicodeData.txt", .{}); defer in_file.close(); - var in_buf = std.io.bufferedReader(in_file.reader()); - const in_reader = in_buf.reader(); + var line_buf: [4096]u8 = undefined; + var write_buf: [4096]u8 = undefined; + var in_reader = in_file.reader(&line_buf); var args_iter = try std.process.argsWithAllocator(allocator); defer args_iter.deinit(); _ = args_iter.skip(); const output_path = args_iter.next() orelse @panic("No output file arg!"); - const compressor = std.compress.flate.deflate.compressor; var out_file = try std.fs.cwd().createFile(output_path, .{}); defer out_file.close(); - var out_comp = try compressor(.raw, out_file.writer(), .{ .level = .best }); - const writer = out_comp.writer(); + var writer = out_file.writer(&write_buf); const endian = builtin.cpu.arch.endian(); - var line_buf: [4096]u8 = undefined; - lines: while (try in_reader.readUntilDelimiterOrEof(&line_buf, '\n')) |line| { + lines: while (in_reader.interface.takeDelimiterExclusive('\n')) |line| { if (line.len == 0) continue; var field_iter = std.mem.splitScalar(u8, line, ';'); @@ -55,10 +53,15 @@ pub fn main() !void { } } - try writer.writeInt(u8, @intCast(len), endian); - for (cps[0..len]) |cp| try writer.writeInt(u24, cp, endian); + try writer.interface.writeInt(u8, @intCast(len), endian); + for (cps[0..len]) |cp| try writer.interface.writeInt(u24, cp, endian); + } else |err| switch (err) { + error.EndOfStream => {}, + else => { + return err; + }, } - try writer.writeInt(u16, 0, endian); - try out_comp.flush(); + try writer.interface.writeInt(u16, 0, endian); + try writer.interface.flush(); } diff --git a/codegen/core_props.zig b/codegen/core_props.zig index f60c7a9..19063f6 100644 --- a/codegen/core_props.zig +++ b/codegen/core_props.zig @@ -22,7 +22,7 @@ const BlockMap = std.HashMap( std.hash_map.default_max_load_percentage, ); -pub fn main() !void { +pub fn main() anyerror!void { var arena = std.heap.ArenaAllocator.init(std.heap.page_allocator); defer arena.deinit(); const allocator = arena.allocator(); @@ -35,10 +35,9 @@ pub fn main() !void { // Process DerivedCoreProperties.txt var in_file = try std.fs.cwd().openFile("data/unicode/DerivedCoreProperties.txt", .{}); defer in_file.close(); - var in_buf = std.io.bufferedReader(in_file.reader()); - const in_reader = in_buf.reader(); + var in_reader = in_file.reader(&line_buf); - while (try in_reader.readUntilDelimiterOrEof(&line_buf, '\n')) |line| { + while (in_reader.interface.takeDelimiterExclusive('\n')) |line| { if (line.len == 0 or line[0] == '#') continue; const no_comment = if (mem.indexOfScalar(u8, line, '#')) |octo| line[0..octo] else line; @@ -82,15 +81,19 @@ pub fn main() !void { else => {}, } } + } else |err| switch (err) { + error.EndOfStream => {}, + else => { + return err; + }, } - var blocks_map = BlockMap.init(allocator); defer blocks_map.deinit(); - var stage1 = std.ArrayList(u16).init(allocator); + var stage1 = std.array_list.Managed(u16).init(allocator); defer stage1.deinit(); - var stage2 = std.ArrayList(u8).init(allocator); + var stage2 = std.array_list.Managed(u8).init(allocator); defer stage2.deinit(); var block: Block = [_]u8{0} ** block_size; @@ -121,18 +124,17 @@ pub fn main() !void { _ = args_iter.skip(); const output_path = args_iter.next() orelse @panic("No output file arg!"); - const compressor = std.compress.flate.deflate.compressor; + var out_buf: [4096]u8 = undefined; var out_file = try std.fs.cwd().createFile(output_path, .{}); defer out_file.close(); - var out_comp = try compressor(.raw, out_file.writer(), .{ .level = .best }); - const writer = out_comp.writer(); + var writer = out_file.writer(&out_buf); const endian = builtin.cpu.arch.endian(); - try writer.writeInt(u16, @intCast(stage1.items.len), endian); - for (stage1.items) |i| try writer.writeInt(u16, i, endian); + try writer.interface.writeInt(u16, @intCast(stage1.items.len), endian); + for (stage1.items) |i| try writer.interface.writeInt(u16, i, endian); - try writer.writeInt(u16, @intCast(stage2.items.len), endian); - try writer.writeAll(stage2.items); + try writer.interface.writeInt(u16, @intCast(stage2.items.len), endian); + try writer.interface.writeAll(stage2.items); - try out_comp.flush(); + try writer.interface.flush(); } diff --git a/codegen/dwp.zig b/codegen/dwp.zig index 5e5bf6a..fad08d1 100644 --- a/codegen/dwp.zig +++ b/codegen/dwp.zig @@ -23,7 +23,7 @@ const BlockMap = std.HashMap( std.hash_map.default_max_load_percentage, ); -pub fn main() !void { +pub fn main() anyerror!void { var arena = std.heap.ArenaAllocator.init(std.heap.page_allocator); defer arena.deinit(); const allocator = arena.allocator(); @@ -36,10 +36,9 @@ pub fn main() !void { // Process DerivedEastAsianWidth.txt var deaw_file = try std.fs.cwd().openFile("data/unicode/extracted/DerivedEastAsianWidth.txt", .{}); defer deaw_file.close(); - var deaw_buf = std.io.bufferedReader(deaw_file.reader()); - const deaw_reader = deaw_buf.reader(); + var deaw_reader = deaw_file.reader(&line_buf); - while (try deaw_reader.readUntilDelimiterOrEof(&line_buf, '\n')) |line| { + while (deaw_reader.interface.takeDelimiterExclusive('\n')) |line| { if (line.len == 0) continue; // @missing ranges @@ -88,15 +87,18 @@ pub fn main() !void { else => {}, } } + } else |err| switch (err) { + error.EndOfStream => {}, + else => { + return err; + }, } - // Process DerivedGeneralCategory.txt var dgc_file = try std.fs.cwd().openFile("data/unicode/extracted/DerivedGeneralCategory.txt", .{}); defer dgc_file.close(); - var dgc_buf = std.io.bufferedReader(dgc_file.reader()); - const dgc_reader = dgc_buf.reader(); + var dgc_reader = dgc_file.reader(&line_buf); - while (try dgc_reader.readUntilDelimiterOrEof(&line_buf, '\n')) |line| { + while (dgc_reader.interface.takeDelimiterExclusive('\n')) |line| { if (line.len == 0 or line[0] == '#') continue; const no_comment = if (std.mem.indexOfScalar(u8, line, '#')) |octo| line[0..octo] else line; @@ -139,15 +141,20 @@ pub fn main() !void { else => {}, } } + } else |err| switch (err) { + error.EndOfStream => {}, + else => { + return err; + }, } var blocks_map = BlockMap.init(allocator); defer blocks_map.deinit(); - var stage1 = std.ArrayList(u16).init(allocator); + var stage1 = std.array_list.Managed(u16).init(allocator); defer stage1.deinit(); - var stage2 = std.ArrayList(i4).init(allocator); + var stage2 = std.array_list.Managed(i4).init(allocator); defer stage2.deinit(); var block: Block = [_]i4{0} ** block_size; @@ -227,18 +234,17 @@ pub fn main() !void { _ = args_iter.skip(); const output_path = args_iter.next() orelse @panic("No output file arg!"); - const compressor = std.compress.flate.deflate.compressor; + var write_buf: [4096]u8 = undefined; var out_file = try std.fs.cwd().createFile(output_path, .{}); defer out_file.close(); - var out_comp = try compressor(.raw, out_file.writer(), .{ .level = .best }); - const writer = out_comp.writer(); + var writer = out_file.writer(&write_buf); const endian = builtin.cpu.arch.endian(); - try writer.writeInt(u16, @intCast(stage1.items.len), endian); - for (stage1.items) |i| try writer.writeInt(u16, i, endian); + try writer.interface.writeInt(u16, @intCast(stage1.items.len), endian); + for (stage1.items) |i| try writer.interface.writeInt(u16, i, endian); - try writer.writeInt(u16, @intCast(stage2.items.len), endian); - for (stage2.items) |i| try writer.writeInt(i8, i, endian); + try writer.interface.writeInt(u16, @intCast(stage2.items.len), endian); + for (stage2.items) |i| try writer.interface.writeInt(i8, i, endian); - try out_comp.flush(); + try writer.interface.flush(); } diff --git a/codegen/fold.zig b/codegen/fold.zig index cb73cca..cc381a8 100644 --- a/codegen/fold.zig +++ b/codegen/fold.zig @@ -2,23 +2,21 @@ const std = @import("std"); const builtin = @import("builtin"); const mem = std.mem; -pub fn main() !void { +pub fn main() anyerror!void { var gpa = std.heap.GeneralPurposeAllocator(.{}){}; defer std.debug.assert(gpa.deinit() == .ok); const allocator = gpa.allocator(); + var line_buf: [4096]u8 = undefined; // Process DerivedCoreProperties.txt var props_file = try std.fs.cwd().openFile("data/unicode/DerivedCoreProperties.txt", .{}); defer props_file.close(); - var props_buf = std.io.bufferedReader(props_file.reader()); - const props_reader = props_buf.reader(); + var props_reader = props_file.reader(&line_buf); var props_map = std.AutoHashMap(u21, void).init(allocator); defer props_map.deinit(); - var line_buf: [4096]u8 = undefined; - - props_lines: while (try props_reader.readUntilDelimiterOrEof(&line_buf, '\n')) |line| { + props_lines: while (props_reader.interface.takeDelimiterExclusive('\n')) |line| { if (line.len == 0 or line[0] == '#') continue; const no_comment = if (std.mem.indexOfScalar(u8, line, '#')) |octo| line[0..octo] else line; @@ -49,18 +47,21 @@ pub fn main() !void { else => {}, } } + } else |err| switch (err) { + error.EndOfStream => {}, + else => { + return err; + }, } - var codepoint_mapping = std.AutoArrayHashMap(u21, [3]u21).init(allocator); defer codepoint_mapping.deinit(); // Process CaseFolding.txt var cp_file = try std.fs.cwd().openFile("data/unicode/CaseFolding.txt", .{}); defer cp_file.close(); - var cp_buf = std.io.bufferedReader(cp_file.reader()); - const cp_reader = cp_buf.reader(); + var cp_reader = cp_file.reader(&line_buf); - while (try cp_reader.readUntilDelimiterOrEof(&line_buf, '\n')) |line| { + while (cp_reader.interface.takeDelimiterExclusive('\n')) |line| { if (line.len == 0 or line[0] == '#') continue; var field_it = std.mem.splitScalar(u8, line, ';'); @@ -81,9 +82,14 @@ pub fn main() !void { } try codepoint_mapping.putNoClobber(codepoint, mapping_buf); + } else |err| switch (err) { + error.EndOfStream => {}, + else => { + return err; + }, } - var changes_when_casefolded_exceptions = std.ArrayList(u21).init(allocator); + var changes_when_casefolded_exceptions = std.array_list.Managed(u21).init(allocator); defer changes_when_casefolded_exceptions.deinit(); { @@ -221,32 +227,31 @@ pub fn main() !void { _ = args_iter.skip(); const output_path = args_iter.next() orelse @panic("No output file arg!"); - const compressor = std.compress.flate.deflate.compressor; + var write_buf: [4096]u8 = undefined; var out_file = try std.fs.cwd().createFile(output_path, .{}); defer out_file.close(); - var out_comp = try compressor(.raw, out_file.writer(), .{ .level = .best }); - const writer = out_comp.writer(); + var writer = out_file.writer(&write_buf); const endian = builtin.cpu.arch.endian(); // Table metadata. - try writer.writeInt(u24, @intCast(codepoint_cutoff), endian); - try writer.writeInt(u24, @intCast(multiple_codepoint_start), endian); + try writer.interface.writeInt(u24, @intCast(codepoint_cutoff), endian); + try writer.interface.writeInt(u24, @intCast(multiple_codepoint_start), endian); // Stage 1 - try writer.writeInt(u16, @intCast(meaningful_stage1.len), endian); - try writer.writeAll(meaningful_stage1); + try writer.interface.writeInt(u16, @intCast(meaningful_stage1.len), endian); + try writer.interface.writeAll(meaningful_stage1); // Stage 2 - try writer.writeInt(u16, @intCast(stage2.len), endian); - try writer.writeAll(stage2); + try writer.interface.writeInt(u16, @intCast(stage2.len), endian); + try writer.interface.writeAll(stage2); // Stage 3 - try writer.writeInt(u16, @intCast(stage3.len), endian); - for (stage3) |offset| try writer.writeInt(i24, offset, endian); + try writer.interface.writeInt(u16, @intCast(stage3.len), endian); + for (stage3) |offset| try writer.interface.writeInt(i24, offset, endian); // Changes when case folded // Min and max - try writer.writeInt(u24, std.mem.min(u21, changes_when_casefolded_exceptions.items), endian); - try writer.writeInt(u24, std.mem.max(u21, changes_when_casefolded_exceptions.items), endian); - try writer.writeInt(u16, @intCast(changes_when_casefolded_exceptions.items.len), endian); - for (changes_when_casefolded_exceptions.items) |cp| try writer.writeInt(u24, cp, endian); + try writer.interface.writeInt(u24, std.mem.min(u21, changes_when_casefolded_exceptions.items), endian); + try writer.interface.writeInt(u24, std.mem.max(u21, changes_when_casefolded_exceptions.items), endian); + try writer.interface.writeInt(u16, @intCast(changes_when_casefolded_exceptions.items.len), endian); + for (changes_when_casefolded_exceptions.items) |cp| try writer.interface.writeInt(u24, cp, endian); - try out_comp.flush(); + try writer.interface.flush(); } } diff --git a/codegen/gbp.zig b/codegen/gbp.zig index 3fc4461..d654cf1 100644 --- a/codegen/gbp.zig +++ b/codegen/gbp.zig @@ -47,7 +47,7 @@ const BlockMap = std.HashMap( std.hash_map.default_max_load_percentage, ); -pub fn main() !void { +pub fn main() anyerror!void { var arena = std.heap.ArenaAllocator.init(std.heap.page_allocator); defer arena.deinit(); const allocator = arena.allocator(); @@ -66,10 +66,9 @@ pub fn main() !void { // Process Indic var indic_file = try std.fs.cwd().openFile("data/unicode/DerivedCoreProperties.txt", .{}); defer indic_file.close(); - var indic_buf = std.io.bufferedReader(indic_file.reader()); - const indic_reader = indic_buf.reader(); + var indic_reader = indic_file.reader(&line_buf); - while (try indic_reader.readUntilDelimiterOrEof(&line_buf, '\n')) |line| { + while (indic_reader.interface.takeDelimiterExclusive('\n')) |line| { if (line.len == 0 or line[0] == '#') continue; if (std.mem.indexOf(u8, line, "InCB") == null) continue; const no_comment = if (std.mem.indexOfScalar(u8, line, '#')) |octo| line[0..octo] else line; @@ -100,15 +99,18 @@ pub fn main() !void { else => {}, } } + } else |err| switch (err) { + error.EndOfStream => {}, + else => { + return err; + }, } - // Process GBP var gbp_file = try std.fs.cwd().openFile("data/unicode/auxiliary/GraphemeBreakProperty.txt", .{}); defer gbp_file.close(); - var gbp_buf = std.io.bufferedReader(gbp_file.reader()); - const gbp_reader = gbp_buf.reader(); + var gbp_reader = gbp_file.reader(&line_buf); - while (try gbp_reader.readUntilDelimiterOrEof(&line_buf, '\n')) |line| { + while (gbp_reader.interface.takeDelimiterExclusive('\n')) |line| { if (line.len == 0 or line[0] == '#') continue; const no_comment = if (std.mem.indexOfScalar(u8, line, '#')) |octo| line[0..octo] else line; @@ -138,15 +140,18 @@ pub fn main() !void { else => {}, } } + } else |err| switch (err) { + error.EndOfStream => {}, + else => { + return err; + }, } - // Process Emoji var emoji_file = try std.fs.cwd().openFile("data/unicode/emoji/emoji-data.txt", .{}); defer emoji_file.close(); - var emoji_buf = std.io.bufferedReader(emoji_file.reader()); - const emoji_reader = emoji_buf.reader(); + var emoji_reader = emoji_file.reader(&line_buf); - while (try emoji_reader.readUntilDelimiterOrEof(&line_buf, '\n')) |line| { + while (emoji_reader.interface.takeDelimiterExclusive('\n')) |line| { if (line.len == 0 or line[0] == '#') continue; if (std.mem.indexOf(u8, line, "Extended_Pictographic") == null) continue; const no_comment = if (std.mem.indexOfScalar(u8, line, '#')) |octo| line[0..octo] else line; @@ -170,15 +175,20 @@ pub fn main() !void { else => {}, } } + } else |err| switch (err) { + error.EndOfStream => {}, + else => { + return err; + }, } var blocks_map = BlockMap.init(allocator); defer blocks_map.deinit(); - var stage1 = std.ArrayList(u16).init(allocator); + var stage1 = std.array_list.Managed(u16).init(allocator); defer stage1.deinit(); - var stage2 = std.ArrayList(u16).init(allocator); + var stage2 = std.array_list.Managed(u16).init(allocator); defer stage2.deinit(); var stage3 = std.AutoArrayHashMap(u8, u16).init(allocator); @@ -227,22 +237,21 @@ pub fn main() !void { _ = args_iter.skip(); const output_path = args_iter.next() orelse @panic("No output file arg!"); - const compressor = std.compress.flate.deflate.compressor; + var write_buf: [4096]u8 = undefined; var out_file = try std.fs.cwd().createFile(output_path, .{}); defer out_file.close(); - var out_comp = try compressor(.raw, out_file.writer(), .{ .level = .best }); - const writer = out_comp.writer(); + var writer = out_file.writer(&write_buf); const endian = builtin.cpu.arch.endian(); - try writer.writeInt(u16, @intCast(stage1.items.len), endian); - for (stage1.items) |i| try writer.writeInt(u16, i, endian); + try writer.interface.writeInt(u16, @intCast(stage1.items.len), endian); + for (stage1.items) |i| try writer.interface.writeInt(u16, i, endian); - try writer.writeInt(u16, @intCast(stage2.items.len), endian); - for (stage2.items) |i| try writer.writeInt(u16, i, endian); + try writer.interface.writeInt(u16, @intCast(stage2.items.len), endian); + for (stage2.items) |i| try writer.interface.writeInt(u16, i, endian); const props_bytes = stage3.keys(); - try writer.writeInt(u16, @intCast(props_bytes.len), endian); - try writer.writeAll(props_bytes); + try writer.interface.writeInt(u16, @intCast(props_bytes.len), endian); + try writer.interface.writeAll(props_bytes); - try out_comp.flush(); + try writer.interface.flush(); } diff --git a/codegen/gencat.zig b/codegen/gencat.zig index fe06bd7..7dedb5d 100644 --- a/codegen/gencat.zig +++ b/codegen/gencat.zig @@ -67,10 +67,9 @@ pub fn main() !void { // Process DerivedGeneralCategory.txt var in_file = try std.fs.cwd().openFile("data/unicode/extracted/DerivedGeneralCategory.txt", .{}); defer in_file.close(); - var in_buf = std.io.bufferedReader(in_file.reader()); - const in_reader = in_buf.reader(); + var in_reader = in_file.reader(&line_buf); - while (try in_reader.readUntilDelimiterOrEof(&line_buf, '\n')) |line| { + while (in_reader.interface.takeDelimiterExclusive('\n')) |line| { if (line.len == 0 or line[0] == '#') continue; const no_comment = if (std.mem.indexOfScalar(u8, line, '#')) |octo| line[0..octo] else line; @@ -101,18 +100,23 @@ pub fn main() !void { else => {}, } } + } else |err| switch (err) { + error.EndOfStream => {}, + else => { + return err; + }, } var blocks_map = BlockMap.init(allocator); defer blocks_map.deinit(); - var stage1 = std.ArrayList(u16).init(allocator); + var stage1 = std.array_list.Managed(u16).init(allocator); defer stage1.deinit(); - var stage2 = std.ArrayList(u5).init(allocator); + var stage2 = std.array_list.Managed(u5).init(allocator); defer stage2.deinit(); - var stage3 = std.ArrayList(u5).init(allocator); + var stage3 = std.array_list.Managed(u5).init(allocator); defer stage3.deinit(); var block: Block = [_]u5{0} ** block_size; @@ -151,21 +155,20 @@ pub fn main() !void { _ = args_iter.skip(); const output_path = args_iter.next() orelse @panic("No output file arg!"); - const compressor = std.compress.flate.deflate.compressor; + var write_buf: [4096]u8 = undefined; var out_file = try std.fs.cwd().createFile(output_path, .{}); defer out_file.close(); - var out_comp = try compressor(.raw, out_file.writer(), .{ .level = .best }); - const writer = out_comp.writer(); + var writer = out_file.writer(&write_buf); const endian = builtin.cpu.arch.endian(); - try writer.writeInt(u16, @intCast(stage1.items.len), endian); - for (stage1.items) |i| try writer.writeInt(u16, i, endian); + try writer.interface.writeInt(u16, @intCast(stage1.items.len), endian); + for (stage1.items) |i| try writer.interface.writeInt(u16, i, endian); - try writer.writeInt(u16, @intCast(stage2.items.len), endian); - for (stage2.items) |i| try writer.writeInt(u8, i, endian); + try writer.interface.writeInt(u16, @intCast(stage2.items.len), endian); + for (stage2.items) |i| try writer.interface.writeInt(u8, i, endian); - try writer.writeInt(u8, @intCast(stage3.items.len), endian); - for (stage3.items) |i| try writer.writeInt(u8, i, endian); + try writer.interface.writeInt(u8, @intCast(stage3.items.len), endian); + for (stage3.items) |i| try writer.interface.writeInt(u8, i, endian); - try out_comp.flush(); + try writer.interface.flush(); } diff --git a/codegen/hangul.zig b/codegen/hangul.zig index 2c42bb7..6768b3f 100644 --- a/codegen/hangul.zig +++ b/codegen/hangul.zig @@ -30,7 +30,7 @@ const BlockMap = std.HashMap( std.hash_map.default_max_load_percentage, ); -pub fn main() !void { +pub fn main() anyerror!void { var arena = std.heap.ArenaAllocator.init(std.heap.page_allocator); defer arena.deinit(); const allocator = arena.allocator(); @@ -43,10 +43,9 @@ pub fn main() !void { // Process HangulSyllableType.txt var in_file = try std.fs.cwd().openFile("data/unicode/HangulSyllableType.txt", .{}); defer in_file.close(); - var in_buf = std.io.bufferedReader(in_file.reader()); - const in_reader = in_buf.reader(); + var in_reader = in_file.reader(&line_buf); - while (try in_reader.readUntilDelimiterOrEof(&line_buf, '\n')) |line| { + while (in_reader.interface.takeDelimiterExclusive('\n')) |line| { if (line.len == 0 or line[0] == '#') continue; const no_comment = if (std.mem.indexOfScalar(u8, line, '#')) |octo| line[0..octo] else line; @@ -77,15 +76,19 @@ pub fn main() !void { else => {}, } } + } else |err| switch (err) { + error.EndOfStream => {}, + else => { + return err; + }, } - var blocks_map = BlockMap.init(allocator); defer blocks_map.deinit(); - var stage1 = std.ArrayList(u16).init(allocator); + var stage1 = std.array_list.Managed(u16).init(allocator); defer stage1.deinit(); - var stage2 = std.ArrayList(u3).init(allocator); + var stage2 = std.array_list.Managed(u3).init(allocator); defer stage2.deinit(); var block: Block = [_]u3{0} ** block_size; @@ -116,18 +119,17 @@ pub fn main() !void { _ = args_iter.skip(); const output_path = args_iter.next() orelse @panic("No output file arg!"); - const compressor = std.compress.flate.deflate.compressor; + var write_buf: [4096]u8 = undefined; var out_file = try std.fs.cwd().createFile(output_path, .{}); defer out_file.close(); - var out_comp = try compressor(.raw, out_file.writer(), .{ .level = .best }); - const writer = out_comp.writer(); + var writer = out_file.writer(&write_buf); const endian = builtin.cpu.arch.endian(); - try writer.writeInt(u16, @intCast(stage1.items.len), endian); - for (stage1.items) |i| try writer.writeInt(u16, i, endian); + try writer.interface.writeInt(u16, @intCast(stage1.items.len), endian); + for (stage1.items) |i| try writer.interface.writeInt(u16, i, endian); - try writer.writeInt(u16, @intCast(stage2.items.len), endian); - for (stage2.items) |i| try writer.writeInt(u8, i, endian); + try writer.interface.writeInt(u16, @intCast(stage2.items.len), endian); + for (stage2.items) |i| try writer.interface.writeInt(u8, i, endian); - try out_comp.flush(); + try writer.interface.flush(); } diff --git a/codegen/lower.zig b/codegen/lower.zig index a053fe3..c11cb0a 100644 --- a/codegen/lower.zig +++ b/codegen/lower.zig @@ -6,27 +6,25 @@ pub fn main() !void { defer arena.deinit(); const allocator = arena.allocator(); + var line_buf: [4096]u8 = undefined; + var write_buf: [4096]u8 = undefined; // Process UnicodeData.txt var in_file = try std.fs.cwd().openFile("data/unicode/UnicodeData.txt", .{}); defer in_file.close(); - var in_buf = std.io.bufferedReader(in_file.reader()); - const in_reader = in_buf.reader(); + var in_reader = in_file.reader(&line_buf); var args_iter = try std.process.argsWithAllocator(allocator); defer args_iter.deinit(); _ = args_iter.skip(); const output_path = args_iter.next() orelse @panic("No output file arg!"); - const compressor = std.compress.flate.deflate.compressor; var out_file = try std.fs.cwd().createFile(output_path, .{}); defer out_file.close(); - var out_comp = try compressor(.raw, out_file.writer(), .{ .level = .best }); - const writer = out_comp.writer(); + var writer = out_file.writer(&write_buf); const endian = builtin.cpu.arch.endian(); - var line_buf: [4096]u8 = undefined; - lines: while (try in_reader.readUntilDelimiterOrEof(&line_buf, '\n')) |line| { + lines: while (in_reader.interface.takeDelimiterExclusive('\n')) |line| { if (line.len == 0) continue; var field_iter = std.mem.splitScalar(u8, line, ';'); @@ -42,16 +40,20 @@ pub fn main() !void { 13 => { // Simple lowercase mapping if (field.len == 0) continue :lines; - try writer.writeInt(i24, cp, endian); + try writer.interface.writeInt(i24, cp, endian); const mapping = try std.fmt.parseInt(i24, field, 16); - try writer.writeInt(i24, mapping - cp, endian); + try writer.interface.writeInt(i24, mapping - cp, endian); }, else => {}, } } + } else |err| switch (err) { + error.EndOfStream => {}, + else => { + return err; + }, } - - try writer.writeInt(u24, 0, endian); - try out_comp.flush(); + try writer.interface.writeInt(u24, 0, endian); + try writer.interface.flush(); } diff --git a/codegen/normp.zig b/codegen/normp.zig index 60dabdc..71a1ae5 100644 --- a/codegen/normp.zig +++ b/codegen/normp.zig @@ -21,7 +21,7 @@ const BlockMap = std.HashMap( std.hash_map.default_max_load_percentage, ); -pub fn main() !void { +pub fn main() anyerror!void { var arena = std.heap.ArenaAllocator.init(std.heap.page_allocator); defer arena.deinit(); const allocator = arena.allocator(); @@ -34,10 +34,9 @@ pub fn main() !void { // Process DerivedNormalizationProps.txt var in_file = try std.fs.cwd().openFile("data/unicode/DerivedNormalizationProps.txt", .{}); defer in_file.close(); - var in_buf = std.io.bufferedReader(in_file.reader()); - const in_reader = in_buf.reader(); + var in_reader = in_file.reader(&line_buf); - while (try in_reader.readUntilDelimiterOrEof(&line_buf, '\n')) |line| { + while (in_reader.interface.takeDelimiterExclusive('\n')) |line| { if (line.len == 0 or line[0] == '#') continue; const no_comment = if (std.mem.indexOfScalar(u8, line, '#')) |octo| line[0..octo] else line; @@ -78,15 +77,19 @@ pub fn main() !void { else => {}, } } + } else |err| switch (err) { + error.EndOfStream => {}, + else => { + return err; + }, } - var blocks_map = BlockMap.init(allocator); defer blocks_map.deinit(); - var stage1 = std.ArrayList(u16).init(allocator); + var stage1 = std.array_list.Managed(u16).init(allocator); defer stage1.deinit(); - var stage2 = std.ArrayList(u3).init(allocator); + var stage2 = std.array_list.Managed(u3).init(allocator); defer stage2.deinit(); var block: Block = [_]u3{0} ** block_size; @@ -117,18 +120,17 @@ pub fn main() !void { _ = args_iter.skip(); const output_path = args_iter.next() orelse @panic("No output file arg!"); - const compressor = std.compress.flate.deflate.compressor; + var write_buf: [4096]u8 = undefined; var out_file = try std.fs.cwd().createFile(output_path, .{}); defer out_file.close(); - var out_comp = try compressor(.raw, out_file.writer(), .{ .level = .best }); - const writer = out_comp.writer(); + var writer = out_file.writer(&write_buf); const endian = builtin.cpu.arch.endian(); - try writer.writeInt(u16, @intCast(stage1.items.len), endian); - for (stage1.items) |i| try writer.writeInt(u16, i, endian); + try writer.interface.writeInt(u16, @intCast(stage1.items.len), endian); + for (stage1.items) |i| try writer.interface.writeInt(u16, i, endian); - try writer.writeInt(u16, @intCast(stage2.items.len), endian); - for (stage2.items) |i| try writer.writeInt(u8, i, endian); + try writer.interface.writeInt(u16, @intCast(stage2.items.len), endian); + for (stage2.items) |i| try writer.interface.writeInt(u8, i, endian); - try out_comp.flush(); + try writer.interface.flush(); } diff --git a/codegen/numeric.zig b/codegen/numeric.zig index 038ac0a..cf918e8 100644 --- a/codegen/numeric.zig +++ b/codegen/numeric.zig @@ -22,7 +22,7 @@ const BlockMap = std.HashMap( std.hash_map.default_max_load_percentage, ); -pub fn main() !void { +pub fn main() anyerror!void { var arena = std.heap.ArenaAllocator.init(std.heap.page_allocator); defer arena.deinit(); const allocator = arena.allocator(); @@ -35,10 +35,9 @@ pub fn main() !void { // Process DerivedNumericType.txt var in_file = try std.fs.cwd().openFile("data/unicode/extracted/DerivedNumericType.txt", .{}); defer in_file.close(); - var in_buf = std.io.bufferedReader(in_file.reader()); - const in_reader = in_buf.reader(); + var in_reader = in_file.reader(&line_buf); - while (try in_reader.readUntilDelimiterOrEof(&line_buf, '\n')) |line| { + while (in_reader.interface.takeDelimiterExclusive('\n')) |line| { if (line.len == 0 or line[0] == '#') continue; const no_comment = if (mem.indexOfScalar(u8, line, '#')) |octo| line[0..octo] else line; @@ -79,15 +78,20 @@ pub fn main() !void { else => {}, } } + } else |err| switch (err) { + error.EndOfStream => {}, + else => { + return err; + }, } var blocks_map = BlockMap.init(allocator); defer blocks_map.deinit(); - var stage1 = std.ArrayList(u16).init(allocator); + var stage1 = std.array_list.Managed(u16).init(allocator); defer stage1.deinit(); - var stage2 = std.ArrayList(u8).init(allocator); + var stage2 = std.array_list.Managed(u8).init(allocator); defer stage2.deinit(); var block: Block = [_]u8{0} ** block_size; @@ -118,18 +122,17 @@ pub fn main() !void { _ = args_iter.skip(); const output_path = args_iter.next() orelse @panic("No output file arg!"); - const compressor = std.compress.flate.deflate.compressor; + var write_buf: [4096]u8 = undefined; var out_file = try std.fs.cwd().createFile(output_path, .{}); defer out_file.close(); - var out_comp = try compressor(.raw, out_file.writer(), .{ .level = .best }); - const writer = out_comp.writer(); + var writer = out_file.writer(&write_buf); const endian = builtin.cpu.arch.endian(); - try writer.writeInt(u16, @intCast(stage1.items.len), endian); - for (stage1.items) |i| try writer.writeInt(u16, i, endian); + try writer.interface.writeInt(u16, @intCast(stage1.items.len), endian); + for (stage1.items) |i| try writer.interface.writeInt(u16, i, endian); - try writer.writeInt(u16, @intCast(stage2.items.len), endian); - try writer.writeAll(stage2.items); + try writer.interface.writeInt(u16, @intCast(stage2.items.len), endian); + try writer.interface.writeAll(stage2.items); - try out_comp.flush(); + try writer.interface.flush(); } diff --git a/codegen/props.zig b/codegen/props.zig index 24b22e0..6ff0a33 100644 --- a/codegen/props.zig +++ b/codegen/props.zig @@ -22,7 +22,7 @@ const BlockMap = std.HashMap( std.hash_map.default_max_load_percentage, ); -pub fn main() !void { +pub fn main() anyerror!void { var arena = std.heap.ArenaAllocator.init(std.heap.page_allocator); defer arena.deinit(); const allocator = arena.allocator(); @@ -35,10 +35,9 @@ pub fn main() !void { // Process PropList.txt var in_file = try std.fs.cwd().openFile("data/unicode/PropList.txt", .{}); defer in_file.close(); - var in_buf = std.io.bufferedReader(in_file.reader()); - const in_reader = in_buf.reader(); + var in_reader = in_file.reader(&line_buf); - while (try in_reader.readUntilDelimiterOrEof(&line_buf, '\n')) |line| { + while (in_reader.interface.takeDelimiterExclusive('\n')) |line| { if (line.len == 0 or line[0] == '#') continue; const no_comment = if (mem.indexOfScalar(u8, line, '#')) |octo| line[0..octo] else line; @@ -79,15 +78,20 @@ pub fn main() !void { else => {}, } } + } else |err| switch (err) { + error.EndOfStream => {}, + else => { + return err; + }, } var blocks_map = BlockMap.init(allocator); defer blocks_map.deinit(); - var stage1 = std.ArrayList(u16).init(allocator); + var stage1 = std.array_list.Managed(u16).init(allocator); defer stage1.deinit(); - var stage2 = std.ArrayList(u8).init(allocator); + var stage2 = std.array_list.Managed(u8).init(allocator); defer stage2.deinit(); var block: Block = [_]u8{0} ** block_size; @@ -118,18 +122,16 @@ pub fn main() !void { _ = args_iter.skip(); const output_path = args_iter.next() orelse @panic("No output file arg!"); - const compressor = std.compress.flate.deflate.compressor; + var write_buf: [4096]u8 = undefined; var out_file = try std.fs.cwd().createFile(output_path, .{}); defer out_file.close(); - var out_comp = try compressor(.raw, out_file.writer(), .{ .level = .best }); - const writer = out_comp.writer(); + var writer = out_file.writer(&write_buf); const endian = builtin.cpu.arch.endian(); - try writer.writeInt(u16, @intCast(stage1.items.len), endian); - for (stage1.items) |i| try writer.writeInt(u16, i, endian); + try writer.interface.writeInt(u16, @intCast(stage1.items.len), endian); + for (stage1.items) |i| try writer.interface.writeInt(u16, i, endian); - try writer.writeInt(u16, @intCast(stage2.items.len), endian); - try writer.writeAll(stage2.items); - - try out_comp.flush(); + try writer.interface.writeInt(u16, @intCast(stage2.items.len), endian); + try writer.interface.writeAll(stage2.items); + try writer.interface.flush(); } diff --git a/codegen/scripts.zig b/codegen/scripts.zig index 530205d..bdd3d9d 100644 --- a/codegen/scripts.zig +++ b/codegen/scripts.zig @@ -195,7 +195,7 @@ const BlockMap = std.HashMap( std.hash_map.default_max_load_percentage, ); -pub fn main() !void { +pub fn main() anyerror!void { var arena = std.heap.ArenaAllocator.init(std.heap.page_allocator); defer arena.deinit(); const allocator = arena.allocator(); @@ -208,10 +208,9 @@ pub fn main() !void { // Process DerivedGeneralCategory.txt var in_file = try std.fs.cwd().openFile("data/unicode/Scripts.txt", .{}); defer in_file.close(); - var in_buf = std.io.bufferedReader(in_file.reader()); - const in_reader = in_buf.reader(); + var in_reader = in_file.reader(&line_buf); - while (try in_reader.readUntilDelimiterOrEof(&line_buf, '\n')) |line| { + while (in_reader.interface.takeDelimiterExclusive('\n')) |line| { if (line.len == 0 or line[0] == '#') continue; const no_comment = if (std.mem.indexOfScalar(u8, line, '#')) |octo| line[0..octo] else line; @@ -245,18 +244,22 @@ pub fn main() !void { else => {}, } } + } else |err| switch (err) { + error.EndOfStream => {}, + else => { + return err; + }, } - var blocks_map = BlockMap.init(allocator); defer blocks_map.deinit(); - var stage1 = std.ArrayList(u16).init(allocator); + var stage1 = std.array_list.Managed(u16).init(allocator); defer stage1.deinit(); - var stage2 = std.ArrayList(u8).init(allocator); + var stage2 = std.array_list.Managed(u8).init(allocator); defer stage2.deinit(); - var stage3 = std.ArrayList(u8).init(allocator); + var stage3 = std.array_list.Managed(u8).init(allocator); defer stage3.deinit(); var block: Block = [_]u8{0} ** block_size; @@ -295,21 +298,20 @@ pub fn main() !void { _ = args_iter.skip(); const output_path = args_iter.next() orelse @panic("No output file arg!"); - const compressor = std.compress.flate.deflate.compressor; + var write_buf: [4096]u8 = undefined; var out_file = try std.fs.cwd().createFile(output_path, .{}); defer out_file.close(); - var out_comp = try compressor(.raw, out_file.writer(), .{ .level = .best }); - const writer = out_comp.writer(); + var writer = out_file.writer(&write_buf); const endian = builtin.cpu.arch.endian(); - try writer.writeInt(u16, @intCast(stage1.items.len), endian); - for (stage1.items) |i| try writer.writeInt(u16, i, endian); + try writer.interface.writeInt(u16, @intCast(stage1.items.len), endian); + for (stage1.items) |i| try writer.interface.writeInt(u16, i, endian); - try writer.writeInt(u16, @intCast(stage2.items.len), endian); - for (stage2.items) |i| try writer.writeInt(u8, i, endian); + try writer.interface.writeInt(u16, @intCast(stage2.items.len), endian); + for (stage2.items) |i| try writer.interface.writeInt(u8, i, endian); - try writer.writeInt(u8, @intCast(stage3.items.len), endian); - for (stage3.items) |i| try writer.writeInt(u8, i, endian); + try writer.interface.writeInt(u8, @intCast(stage3.items.len), endian); + for (stage3.items) |i| try writer.interface.writeInt(u8, i, endian); - try out_comp.flush(); + try writer.interface.flush(); } diff --git a/codegen/upper.zig b/codegen/upper.zig index 5848911..7d96a0e 100644 --- a/codegen/upper.zig +++ b/codegen/upper.zig @@ -1,32 +1,29 @@ const std = @import("std"); const builtin = @import("builtin"); -pub fn main() !void { +pub fn main() anyerror!void { var arena = std.heap.ArenaAllocator.init(std.heap.page_allocator); defer arena.deinit(); const allocator = arena.allocator(); + var line_buf: [4096]u8 = undefined; + var write_buf: [4096]u8 = undefined; // Process UnicodeData.txt var in_file = try std.fs.cwd().openFile("data/unicode/UnicodeData.txt", .{}); defer in_file.close(); - var in_buf = std.io.bufferedReader(in_file.reader()); - const in_reader = in_buf.reader(); + var in_reader = in_file.reader(&line_buf); var args_iter = try std.process.argsWithAllocator(allocator); defer args_iter.deinit(); _ = args_iter.skip(); const output_path = args_iter.next() orelse @panic("No output file arg!"); - const compressor = std.compress.flate.deflate.compressor; var out_file = try std.fs.cwd().createFile(output_path, .{}); defer out_file.close(); - var out_comp = try compressor(.raw, out_file.writer(), .{ .level = .best }); - const writer = out_comp.writer(); - + var file_writer = out_file.writer(&write_buf); const endian = builtin.cpu.arch.endian(); - var line_buf: [4096]u8 = undefined; - lines: while (try in_reader.readUntilDelimiterOrEof(&line_buf, '\n')) |line| { + lines: while (in_reader.interface.takeDelimiterExclusive('\n')) |line| { if (line.len == 0) continue; var field_iter = std.mem.splitScalar(u8, line, ';'); @@ -42,16 +39,24 @@ pub fn main() !void { 12 => { // Simple uppercase mapping if (field.len == 0) continue :lines; - try writer.writeInt(i24, cp, endian); + try file_writer.interface.writeInt(i24, cp, endian); const mapping = try std.fmt.parseInt(i24, field, 16); - try writer.writeInt(i24, mapping - cp, endian); + try file_writer.interface.writeInt(i24, mapping - cp, endian); }, else => {}, } } + } else |err| switch (err) { + error.ReadFailed => { + return in_reader.err orelse err; + }, + error.EndOfStream => {}, + else => { + return err; + }, } - try writer.writeInt(u24, 0, endian); - try out_comp.flush(); + try file_writer.interface.writeInt(u24, 0, endian); + try file_writer.interface.flush(); } diff --git a/codegen/wbp.zig b/codegen/wbp.zig index 741103e..b1ed56a 100644 --- a/codegen/wbp.zig +++ b/codegen/wbp.zig @@ -43,7 +43,7 @@ const BlockMap = std.HashMap( std.hash_map.default_max_load_percentage, ); -pub fn main() !void { +pub fn main() anyerror!void { var arena = std.heap.ArenaAllocator.init(std.heap.page_allocator); defer arena.deinit(); const allocator = arena.allocator(); @@ -56,10 +56,9 @@ pub fn main() !void { // Process HangulSyllableType.txt var in_file = try std.fs.cwd().openFile("data/unicode/auxiliary/WordBreakProperty.txt", .{}); defer in_file.close(); - var in_buf = std.io.bufferedReader(in_file.reader()); - const in_reader = in_buf.reader(); + var in_reader = in_file.reader(&line_buf); - while (try in_reader.readUntilDelimiterOrEof(&line_buf, '\n')) |line| { + while (in_reader.interface.takeDelimiterExclusive('\n')) |line| { if (line.len == 0 or line[0] == '#') continue; const no_comment = if (std.mem.indexOfScalar(u8, line, '#')) |octo| line[0..octo] else line; @@ -90,15 +89,19 @@ pub fn main() !void { else => {}, } } + } else |err| switch (err) { + error.EndOfStream => {}, + else => { + return err; + }, } - var blocks_map = BlockMap.init(allocator); defer blocks_map.deinit(); - var stage1 = std.ArrayList(u16).init(allocator); + var stage1 = std.array_list.Managed(u16).init(allocator); defer stage1.deinit(); - var stage2 = std.ArrayList(u5).init(allocator); + var stage2 = std.array_list.Managed(u5).init(allocator); defer stage2.deinit(); var block: Block = [_]u5{0} ** block_size; @@ -129,18 +132,17 @@ pub fn main() !void { _ = args_iter.skip(); const output_path = args_iter.next() orelse @panic("No output file arg!"); - const compressor = std.compress.flate.deflate.compressor; + var write_buf: [4096]u8 = undefined; var out_file = try std.fs.cwd().createFile(output_path, .{}); defer out_file.close(); - var out_comp = try compressor(.raw, out_file.writer(), .{ .level = .best }); - const writer = out_comp.writer(); + var writer = out_file.writer(&write_buf); const endian = builtin.cpu.arch.endian(); - try writer.writeInt(u16, @intCast(stage1.items.len), endian); - for (stage1.items) |i| try writer.writeInt(u16, i, endian); + try writer.interface.writeInt(u16, @intCast(stage1.items.len), endian); + for (stage1.items) |i| try writer.interface.writeInt(u16, i, endian); - try writer.writeInt(u16, @intCast(stage2.items.len), endian); - for (stage2.items) |i| try writer.writeInt(u8, i, endian); + try writer.interface.writeInt(u16, @intCast(stage2.items.len), endian); + for (stage2.items) |i| try writer.interface.writeInt(u8, i, endian); - try out_comp.flush(); + try writer.interface.flush(); } -- cgit v1.2.3 From 749197a3f9d25e211615960c02380a3d659b20f9 Mon Sep 17 00:00:00 2001 From: Michael Chaten Date: Sun, 14 Sep 2025 04:11:09 -0700 Subject: Embed data files in scripts rather than relying on filesystem access for easier packaging --- codegen/canon.zig | 8 ++------ codegen/case_prop.zig | 9 ++------- codegen/ccc.zig | 9 ++------- codegen/compat.zig | 7 ++----- codegen/core_props.zig | 9 ++------- codegen/dwp.zig | 14 ++++---------- codegen/fold.zig | 13 ++++--------- codegen/gbp.zig | 23 +++++++++-------------- codegen/gencat.zig | 9 ++------- codegen/hangul.zig | 9 ++------- codegen/lower.zig | 8 ++------ codegen/normp.zig | 9 ++------- codegen/numeric.zig | 9 ++------- codegen/props.zig | 9 ++------- codegen/scripts.zig | 11 +++-------- codegen/upper.zig | 11 ++--------- codegen/wbp.zig | 10 +++------- 17 files changed, 47 insertions(+), 130 deletions(-) (limited to 'codegen') diff --git a/codegen/canon.zig b/codegen/canon.zig index 89a9070..34e720f 100644 --- a/codegen/canon.zig +++ b/codegen/canon.zig @@ -6,13 +6,9 @@ pub fn main() anyerror!void { defer arena.deinit(); const allocator = arena.allocator(); - var line_buf: [4096]u8 = undefined; var write_buf: [4096]u8 = undefined; // Process UnicodeData.txt - var in_file = try std.fs.cwd().openFile("data/unicode/UnicodeData.txt", .{}); - defer in_file.close(); - var in_reader = in_file.reader(&line_buf); - + var in_reader = std.io.Reader.fixed(@embedFile("UnicodeData.txt")); var args_iter = try std.process.argsWithAllocator(allocator); defer args_iter.deinit(); _ = args_iter.skip(); @@ -24,7 +20,7 @@ pub fn main() anyerror!void { var writer = &file_writer.interface; const endian = builtin.cpu.arch.endian(); - lines: while (in_reader.interface.takeDelimiterInclusive('\n')) |line| { + lines: while (in_reader.takeDelimiterInclusive('\n')) |line| { if (line.len == 0) continue; var field_iter = std.mem.splitScalar(u8, line, ';'); diff --git a/codegen/case_prop.zig b/codegen/case_prop.zig index 66eb62c..46b8e65 100644 --- a/codegen/case_prop.zig +++ b/codegen/case_prop.zig @@ -30,14 +30,9 @@ pub fn main() anyerror!void { var flat_map = std.AutoHashMap(u21, u8).init(allocator); defer flat_map.deinit(); - var line_buf: [4096]u8 = undefined; - // Process DerivedCoreProperties.txt - var in_file = try std.fs.cwd().openFile("data/unicode/DerivedCoreProperties.txt", .{}); - defer in_file.close(); - var in_reader = in_file.reader(&line_buf); - - while (in_reader.interface.takeDelimiterExclusive('\n')) |line| { + var in_reader = std.io.Reader.fixed(@embedFile("DerivedCoreProperties.txt")); + while (in_reader.takeDelimiterExclusive('\n')) |line| { if (line.len == 0 or line[0] == '#') continue; const no_comment = if (mem.indexOfScalar(u8, line, '#')) |octo| line[0..octo] else line; diff --git a/codegen/ccc.zig b/codegen/ccc.zig index b9b2bc3..48d3a9d 100644 --- a/codegen/ccc.zig +++ b/codegen/ccc.zig @@ -29,14 +29,9 @@ pub fn main() anyerror!void { var flat_map = std.AutoHashMap(u21, u8).init(allocator); defer flat_map.deinit(); - var line_buf: [4096]u8 = undefined; - // Process DerivedCombiningClass.txt - var cc_file = try std.fs.cwd().openFile("data/unicode/extracted/DerivedCombiningClass.txt", .{}); - defer cc_file.close(); - var cc_reader = cc_file.reader(&line_buf); - - while (cc_reader.interface.takeDelimiterExclusive('\n')) |line| { + var cc_reader = std.io.Reader.fixed(@embedFile("DerivedCombiningClass.txt")); + while (cc_reader.takeDelimiterExclusive('\n')) |line| { if (line.len == 0 or line[0] == '#') continue; const no_comment = if (std.mem.indexOfScalar(u8, line, '#')) |octo| line[0..octo] else line; diff --git a/codegen/compat.zig b/codegen/compat.zig index 835a636..0a06c44 100644 --- a/codegen/compat.zig +++ b/codegen/compat.zig @@ -7,12 +7,9 @@ pub fn main() anyerror!void { const allocator = arena.allocator(); // Process UnicodeData.txt - var in_file = try std.fs.cwd().openFile("data/unicode/UnicodeData.txt", .{}); - defer in_file.close(); - var line_buf: [4096]u8 = undefined; var write_buf: [4096]u8 = undefined; - var in_reader = in_file.reader(&line_buf); + var in_reader = std.io.Reader.fixed(@embedFile("UnicodeData.txt")); var args_iter = try std.process.argsWithAllocator(allocator); defer args_iter.deinit(); _ = args_iter.skip(); @@ -24,7 +21,7 @@ pub fn main() anyerror!void { const endian = builtin.cpu.arch.endian(); - lines: while (in_reader.interface.takeDelimiterExclusive('\n')) |line| { + lines: while (in_reader.takeDelimiterExclusive('\n')) |line| { if (line.len == 0) continue; var field_iter = std.mem.splitScalar(u8, line, ';'); diff --git a/codegen/core_props.zig b/codegen/core_props.zig index 19063f6..d59a77e 100644 --- a/codegen/core_props.zig +++ b/codegen/core_props.zig @@ -30,14 +30,9 @@ pub fn main() anyerror!void { var flat_map = std.AutoHashMap(u21, u8).init(allocator); defer flat_map.deinit(); - var line_buf: [4096]u8 = undefined; - // Process DerivedCoreProperties.txt - var in_file = try std.fs.cwd().openFile("data/unicode/DerivedCoreProperties.txt", .{}); - defer in_file.close(); - var in_reader = in_file.reader(&line_buf); - - while (in_reader.interface.takeDelimiterExclusive('\n')) |line| { + var in_reader = std.io.Reader.fixed(@embedFile("DerivedCoreProperties.txt")); + while (in_reader.takeDelimiterExclusive('\n')) |line| { if (line.len == 0 or line[0] == '#') continue; const no_comment = if (mem.indexOfScalar(u8, line, '#')) |octo| line[0..octo] else line; diff --git a/codegen/dwp.zig b/codegen/dwp.zig index fad08d1..8189ad8 100644 --- a/codegen/dwp.zig +++ b/codegen/dwp.zig @@ -31,14 +31,10 @@ pub fn main() anyerror!void { var flat_map = std.AutoHashMap(u21, i4).init(allocator); defer flat_map.deinit(); - var line_buf: [4096]u8 = undefined; - // Process DerivedEastAsianWidth.txt - var deaw_file = try std.fs.cwd().openFile("data/unicode/extracted/DerivedEastAsianWidth.txt", .{}); - defer deaw_file.close(); - var deaw_reader = deaw_file.reader(&line_buf); + var deaw_reader = std.io.Reader.fixed(@embedFile("DerivedEastAsianWidth.txt")); - while (deaw_reader.interface.takeDelimiterExclusive('\n')) |line| { + while (deaw_reader.takeDelimiterExclusive('\n')) |line| { if (line.len == 0) continue; // @missing ranges @@ -94,11 +90,9 @@ pub fn main() anyerror!void { }, } // Process DerivedGeneralCategory.txt - var dgc_file = try std.fs.cwd().openFile("data/unicode/extracted/DerivedGeneralCategory.txt", .{}); - defer dgc_file.close(); - var dgc_reader = dgc_file.reader(&line_buf); + var dgc_reader = std.io.Reader.fixed(@embedFile("DerivedGeneralCategory.txt")); - while (dgc_reader.interface.takeDelimiterExclusive('\n')) |line| { + while (dgc_reader.takeDelimiterExclusive('\n')) |line| { if (line.len == 0 or line[0] == '#') continue; const no_comment = if (std.mem.indexOfScalar(u8, line, '#')) |octo| line[0..octo] else line; diff --git a/codegen/fold.zig b/codegen/fold.zig index cc381a8..d927795 100644 --- a/codegen/fold.zig +++ b/codegen/fold.zig @@ -7,16 +7,13 @@ pub fn main() anyerror!void { defer std.debug.assert(gpa.deinit() == .ok); const allocator = gpa.allocator(); - var line_buf: [4096]u8 = undefined; // Process DerivedCoreProperties.txt - var props_file = try std.fs.cwd().openFile("data/unicode/DerivedCoreProperties.txt", .{}); - defer props_file.close(); - var props_reader = props_file.reader(&line_buf); + var props_reader = std.io.Reader.fixed(@embedFile("DerivedCoreProperties.txt")); var props_map = std.AutoHashMap(u21, void).init(allocator); defer props_map.deinit(); - props_lines: while (props_reader.interface.takeDelimiterExclusive('\n')) |line| { + props_lines: while (props_reader.takeDelimiterExclusive('\n')) |line| { if (line.len == 0 or line[0] == '#') continue; const no_comment = if (std.mem.indexOfScalar(u8, line, '#')) |octo| line[0..octo] else line; @@ -57,11 +54,9 @@ pub fn main() anyerror!void { defer codepoint_mapping.deinit(); // Process CaseFolding.txt - var cp_file = try std.fs.cwd().openFile("data/unicode/CaseFolding.txt", .{}); - defer cp_file.close(); - var cp_reader = cp_file.reader(&line_buf); - while (cp_reader.interface.takeDelimiterExclusive('\n')) |line| { + var cp_reader = std.io.Reader.fixed(@embedFile("CaseFolding.txt")); + while (cp_reader.takeDelimiterExclusive('\n')) |line| { if (line.len == 0 or line[0] == '#') continue; var field_it = std.mem.splitScalar(u8, line, ';'); diff --git a/codegen/gbp.zig b/codegen/gbp.zig index d654cf1..895aa7a 100644 --- a/codegen/gbp.zig +++ b/codegen/gbp.zig @@ -61,14 +61,11 @@ pub fn main() anyerror!void { var emoji_set = std.AutoHashMap(u21, void).init(allocator); defer emoji_set.deinit(); - var line_buf: [4096]u8 = undefined; - // Process Indic - var indic_file = try std.fs.cwd().openFile("data/unicode/DerivedCoreProperties.txt", .{}); - defer indic_file.close(); - var indic_reader = indic_file.reader(&line_buf); + const indic_file = @embedFile("DerivedCoreProperties.txt"); + var indic_reader = std.io.Reader.fixed(indic_file); - while (indic_reader.interface.takeDelimiterExclusive('\n')) |line| { + while (indic_reader.takeDelimiterExclusive('\n')) |line| { if (line.len == 0 or line[0] == '#') continue; if (std.mem.indexOf(u8, line, "InCB") == null) continue; const no_comment = if (std.mem.indexOfScalar(u8, line, '#')) |octo| line[0..octo] else line; @@ -106,11 +103,10 @@ pub fn main() anyerror!void { }, } // Process GBP - var gbp_file = try std.fs.cwd().openFile("data/unicode/auxiliary/GraphemeBreakProperty.txt", .{}); - defer gbp_file.close(); - var gbp_reader = gbp_file.reader(&line_buf); - while (gbp_reader.interface.takeDelimiterExclusive('\n')) |line| { + var gbp_reader = std.io.Reader.fixed(@embedFile("GraphemeBreakProperty.txt")); + + while (gbp_reader.takeDelimiterExclusive('\n')) |line| { if (line.len == 0 or line[0] == '#') continue; const no_comment = if (std.mem.indexOfScalar(u8, line, '#')) |octo| line[0..octo] else line; @@ -147,11 +143,10 @@ pub fn main() anyerror!void { }, } // Process Emoji - var emoji_file = try std.fs.cwd().openFile("data/unicode/emoji/emoji-data.txt", .{}); - defer emoji_file.close(); - var emoji_reader = emoji_file.reader(&line_buf); - while (emoji_reader.interface.takeDelimiterExclusive('\n')) |line| { + var emoji_reader = std.io.Reader.fixed(@embedFile("emoji-data.txt")); + + while (emoji_reader.takeDelimiterExclusive('\n')) |line| { if (line.len == 0 or line[0] == '#') continue; if (std.mem.indexOf(u8, line, "Extended_Pictographic") == null) continue; const no_comment = if (std.mem.indexOfScalar(u8, line, '#')) |octo| line[0..octo] else line; diff --git a/codegen/gencat.zig b/codegen/gencat.zig index 7dedb5d..79fa072 100644 --- a/codegen/gencat.zig +++ b/codegen/gencat.zig @@ -62,14 +62,9 @@ pub fn main() !void { var flat_map = std.AutoHashMap(u21, u5).init(allocator); defer flat_map.deinit(); - var line_buf: [4096]u8 = undefined; - // Process DerivedGeneralCategory.txt - var in_file = try std.fs.cwd().openFile("data/unicode/extracted/DerivedGeneralCategory.txt", .{}); - defer in_file.close(); - var in_reader = in_file.reader(&line_buf); - - while (in_reader.interface.takeDelimiterExclusive('\n')) |line| { + var in_reader = std.io.Reader.fixed(@embedFile("DerivedGeneralCategory.txt")); + while (in_reader.takeDelimiterExclusive('\n')) |line| { if (line.len == 0 or line[0] == '#') continue; const no_comment = if (std.mem.indexOfScalar(u8, line, '#')) |octo| line[0..octo] else line; diff --git a/codegen/hangul.zig b/codegen/hangul.zig index 6768b3f..64ab11c 100644 --- a/codegen/hangul.zig +++ b/codegen/hangul.zig @@ -38,14 +38,9 @@ pub fn main() anyerror!void { var flat_map = std.AutoHashMap(u21, u3).init(allocator); defer flat_map.deinit(); - var line_buf: [4096]u8 = undefined; - // Process HangulSyllableType.txt - var in_file = try std.fs.cwd().openFile("data/unicode/HangulSyllableType.txt", .{}); - defer in_file.close(); - var in_reader = in_file.reader(&line_buf); - - while (in_reader.interface.takeDelimiterExclusive('\n')) |line| { + var in_reader = std.io.Reader.fixed(@embedFile("HangulSyllableType.txt")); + while (in_reader.takeDelimiterExclusive('\n')) |line| { if (line.len == 0 or line[0] == '#') continue; const no_comment = if (std.mem.indexOfScalar(u8, line, '#')) |octo| line[0..octo] else line; diff --git a/codegen/lower.zig b/codegen/lower.zig index c11cb0a..987f004 100644 --- a/codegen/lower.zig +++ b/codegen/lower.zig @@ -6,13 +6,9 @@ pub fn main() !void { defer arena.deinit(); const allocator = arena.allocator(); - var line_buf: [4096]u8 = undefined; var write_buf: [4096]u8 = undefined; // Process UnicodeData.txt - var in_file = try std.fs.cwd().openFile("data/unicode/UnicodeData.txt", .{}); - defer in_file.close(); - var in_reader = in_file.reader(&line_buf); - + var in_reader = std.io.Reader.fixed(@embedFile("UnicodeData.txt")); var args_iter = try std.process.argsWithAllocator(allocator); defer args_iter.deinit(); _ = args_iter.skip(); @@ -24,7 +20,7 @@ pub fn main() !void { const endian = builtin.cpu.arch.endian(); - lines: while (in_reader.interface.takeDelimiterExclusive('\n')) |line| { + lines: while (in_reader.takeDelimiterExclusive('\n')) |line| { if (line.len == 0) continue; var field_iter = std.mem.splitScalar(u8, line, ';'); diff --git a/codegen/normp.zig b/codegen/normp.zig index 71a1ae5..3cdd770 100644 --- a/codegen/normp.zig +++ b/codegen/normp.zig @@ -29,14 +29,9 @@ pub fn main() anyerror!void { var flat_map = std.AutoHashMap(u21, u3).init(allocator); defer flat_map.deinit(); - var line_buf: [4096]u8 = undefined; - // Process DerivedNormalizationProps.txt - var in_file = try std.fs.cwd().openFile("data/unicode/DerivedNormalizationProps.txt", .{}); - defer in_file.close(); - var in_reader = in_file.reader(&line_buf); - - while (in_reader.interface.takeDelimiterExclusive('\n')) |line| { + var in_reader = std.io.Reader.fixed(@embedFile("DerivedNormalizationProps.txt")); + while (in_reader.takeDelimiterExclusive('\n')) |line| { if (line.len == 0 or line[0] == '#') continue; const no_comment = if (std.mem.indexOfScalar(u8, line, '#')) |octo| line[0..octo] else line; diff --git a/codegen/numeric.zig b/codegen/numeric.zig index cf918e8..d6b3165 100644 --- a/codegen/numeric.zig +++ b/codegen/numeric.zig @@ -30,14 +30,9 @@ pub fn main() anyerror!void { var flat_map = std.AutoHashMap(u21, u8).init(allocator); defer flat_map.deinit(); - var line_buf: [4096]u8 = undefined; - // Process DerivedNumericType.txt - var in_file = try std.fs.cwd().openFile("data/unicode/extracted/DerivedNumericType.txt", .{}); - defer in_file.close(); - var in_reader = in_file.reader(&line_buf); - - while (in_reader.interface.takeDelimiterExclusive('\n')) |line| { + var in_reader = std.io.Reader.fixed(@embedFile("DerivedNumericType.txt")); + while (in_reader.takeDelimiterExclusive('\n')) |line| { if (line.len == 0 or line[0] == '#') continue; const no_comment = if (mem.indexOfScalar(u8, line, '#')) |octo| line[0..octo] else line; diff --git a/codegen/props.zig b/codegen/props.zig index 6ff0a33..ca42987 100644 --- a/codegen/props.zig +++ b/codegen/props.zig @@ -30,14 +30,9 @@ pub fn main() anyerror!void { var flat_map = std.AutoHashMap(u21, u8).init(allocator); defer flat_map.deinit(); - var line_buf: [4096]u8 = undefined; - // Process PropList.txt - var in_file = try std.fs.cwd().openFile("data/unicode/PropList.txt", .{}); - defer in_file.close(); - var in_reader = in_file.reader(&line_buf); - - while (in_reader.interface.takeDelimiterExclusive('\n')) |line| { + var in_reader = std.io.Reader.fixed(@embedFile("PropList.txt")); + while (in_reader.takeDelimiterExclusive('\n')) |line| { if (line.len == 0 or line[0] == '#') continue; const no_comment = if (mem.indexOfScalar(u8, line, '#')) |octo| line[0..octo] else line; diff --git a/codegen/scripts.zig b/codegen/scripts.zig index bdd3d9d..81511cc 100644 --- a/codegen/scripts.zig +++ b/codegen/scripts.zig @@ -203,14 +203,9 @@ pub fn main() anyerror!void { var flat_map = std.AutoHashMap(u21, u8).init(allocator); defer flat_map.deinit(); - var line_buf: [4096]u8 = undefined; - - // Process DerivedGeneralCategory.txt - var in_file = try std.fs.cwd().openFile("data/unicode/Scripts.txt", .{}); - defer in_file.close(); - var in_reader = in_file.reader(&line_buf); - - while (in_reader.interface.takeDelimiterExclusive('\n')) |line| { + // Process Scripts.txt + var in_reader = std.io.Reader.fixed(@embedFile("Scripts.txt")); + while (in_reader.takeDelimiterExclusive('\n')) |line| { if (line.len == 0 or line[0] == '#') continue; const no_comment = if (std.mem.indexOfScalar(u8, line, '#')) |octo| line[0..octo] else line; diff --git a/codegen/upper.zig b/codegen/upper.zig index 7d96a0e..108fdbd 100644 --- a/codegen/upper.zig +++ b/codegen/upper.zig @@ -6,13 +6,9 @@ pub fn main() anyerror!void { defer arena.deinit(); const allocator = arena.allocator(); - var line_buf: [4096]u8 = undefined; var write_buf: [4096]u8 = undefined; // Process UnicodeData.txt - var in_file = try std.fs.cwd().openFile("data/unicode/UnicodeData.txt", .{}); - defer in_file.close(); - var in_reader = in_file.reader(&line_buf); - + var in_reader = std.io.Reader.fixed(@embedFile("UnicodeData.txt")); var args_iter = try std.process.argsWithAllocator(allocator); defer args_iter.deinit(); _ = args_iter.skip(); @@ -23,7 +19,7 @@ pub fn main() anyerror!void { var file_writer = out_file.writer(&write_buf); const endian = builtin.cpu.arch.endian(); - lines: while (in_reader.interface.takeDelimiterExclusive('\n')) |line| { + lines: while (in_reader.takeDelimiterExclusive('\n')) |line| { if (line.len == 0) continue; var field_iter = std.mem.splitScalar(u8, line, ';'); @@ -48,9 +44,6 @@ pub fn main() anyerror!void { } } } else |err| switch (err) { - error.ReadFailed => { - return in_reader.err orelse err; - }, error.EndOfStream => {}, else => { return err; diff --git a/codegen/wbp.zig b/codegen/wbp.zig index b1ed56a..dfdc32e 100644 --- a/codegen/wbp.zig +++ b/codegen/wbp.zig @@ -51,14 +51,10 @@ pub fn main() anyerror!void { var flat_map = std.AutoHashMap(u21, u5).init(allocator); defer flat_map.deinit(); - var line_buf: [4096]u8 = undefined; - // Process HangulSyllableType.txt - var in_file = try std.fs.cwd().openFile("data/unicode/auxiliary/WordBreakProperty.txt", .{}); - defer in_file.close(); - var in_reader = in_file.reader(&line_buf); - - while (in_reader.interface.takeDelimiterExclusive('\n')) |line| { + const in_file = @embedFile("WordBreakProperty.txt"); + var in_reader = std.io.Reader.fixed(in_file); + while (in_reader.takeDelimiterExclusive('\n')) |line| { if (line.len == 0 or line[0] == '#') continue; const no_comment = if (std.mem.indexOfScalar(u8, line, '#')) |octo| line[0..octo] else line; -- cgit v1.2.3 From 2f02c3b16c073d0bd3d9368a66ce272a574f75a3 Mon Sep 17 00:00:00 2001 From: Jay Date: Sat, 8 Nov 2025 19:59:08 +1100 Subject: Use takeDelimiterInclusive to support Zig 0.15.2 --- codegen/canon.zig | 3 ++- codegen/case_prop.zig | 3 ++- codegen/ccc.zig | 3 ++- codegen/compat.zig | 3 ++- codegen/core_props.zig | 3 ++- codegen/dwp.zig | 6 ++++-- codegen/fold.zig | 6 ++++-- codegen/gbp.zig | 9 ++++++--- codegen/gencat.zig | 3 ++- codegen/hangul.zig | 3 ++- codegen/lower.zig | 3 ++- codegen/normp.zig | 3 ++- codegen/numeric.zig | 3 ++- codegen/props.zig | 3 ++- codegen/scripts.zig | 3 ++- codegen/upper.zig | 3 ++- codegen/wbp.zig | 3 ++- 17 files changed, 42 insertions(+), 21 deletions(-) (limited to 'codegen') diff --git a/codegen/canon.zig b/codegen/canon.zig index 34e720f..d95a905 100644 --- a/codegen/canon.zig +++ b/codegen/canon.zig @@ -20,7 +20,8 @@ pub fn main() anyerror!void { var writer = &file_writer.interface; const endian = builtin.cpu.arch.endian(); - lines: while (in_reader.takeDelimiterInclusive('\n')) |line| { + lines: while (in_reader.takeDelimiterInclusive('\n')) |took| { + const line = std.mem.trimRight(u8, took, "\n"); if (line.len == 0) continue; var field_iter = std.mem.splitScalar(u8, line, ';'); diff --git a/codegen/case_prop.zig b/codegen/case_prop.zig index 46b8e65..613f7f6 100644 --- a/codegen/case_prop.zig +++ b/codegen/case_prop.zig @@ -32,7 +32,8 @@ pub fn main() anyerror!void { // Process DerivedCoreProperties.txt var in_reader = std.io.Reader.fixed(@embedFile("DerivedCoreProperties.txt")); - while (in_reader.takeDelimiterExclusive('\n')) |line| { + while (in_reader.takeDelimiterInclusive('\n')) |took| { + const line = std.mem.trimRight(u8, took, "\n"); if (line.len == 0 or line[0] == '#') continue; const no_comment = if (mem.indexOfScalar(u8, line, '#')) |octo| line[0..octo] else line; diff --git a/codegen/ccc.zig b/codegen/ccc.zig index 48d3a9d..4e470ae 100644 --- a/codegen/ccc.zig +++ b/codegen/ccc.zig @@ -31,7 +31,8 @@ pub fn main() anyerror!void { // Process DerivedCombiningClass.txt var cc_reader = std.io.Reader.fixed(@embedFile("DerivedCombiningClass.txt")); - while (cc_reader.takeDelimiterExclusive('\n')) |line| { + while (cc_reader.takeDelimiterInclusive('\n')) |took| { + const line = std.mem.trimRight(u8, took, "\n"); if (line.len == 0 or line[0] == '#') continue; const no_comment = if (std.mem.indexOfScalar(u8, line, '#')) |octo| line[0..octo] else line; diff --git a/codegen/compat.zig b/codegen/compat.zig index 0a06c44..debb83d 100644 --- a/codegen/compat.zig +++ b/codegen/compat.zig @@ -21,7 +21,8 @@ pub fn main() anyerror!void { const endian = builtin.cpu.arch.endian(); - lines: while (in_reader.takeDelimiterExclusive('\n')) |line| { + lines: while (in_reader.takeDelimiterInclusive('\n')) |took| { + const line = std.mem.trimRight(u8, took, "\n"); if (line.len == 0) continue; var field_iter = std.mem.splitScalar(u8, line, ';'); diff --git a/codegen/core_props.zig b/codegen/core_props.zig index d59a77e..6ffdf91 100644 --- a/codegen/core_props.zig +++ b/codegen/core_props.zig @@ -32,7 +32,8 @@ pub fn main() anyerror!void { // Process DerivedCoreProperties.txt var in_reader = std.io.Reader.fixed(@embedFile("DerivedCoreProperties.txt")); - while (in_reader.takeDelimiterExclusive('\n')) |line| { + while (in_reader.takeDelimiterInclusive('\n')) |took| { + const line = std.mem.trimRight(u8, took, "\n"); if (line.len == 0 or line[0] == '#') continue; const no_comment = if (mem.indexOfScalar(u8, line, '#')) |octo| line[0..octo] else line; diff --git a/codegen/dwp.zig b/codegen/dwp.zig index 8189ad8..75ac68e 100644 --- a/codegen/dwp.zig +++ b/codegen/dwp.zig @@ -34,7 +34,8 @@ pub fn main() anyerror!void { // Process DerivedEastAsianWidth.txt var deaw_reader = std.io.Reader.fixed(@embedFile("DerivedEastAsianWidth.txt")); - while (deaw_reader.takeDelimiterExclusive('\n')) |line| { + while (deaw_reader.takeDelimiterInclusive('\n')) |took| { + const line = std.mem.trimRight(u8, took, "\n"); if (line.len == 0) continue; // @missing ranges @@ -92,7 +93,8 @@ pub fn main() anyerror!void { // Process DerivedGeneralCategory.txt var dgc_reader = std.io.Reader.fixed(@embedFile("DerivedGeneralCategory.txt")); - while (dgc_reader.takeDelimiterExclusive('\n')) |line| { + while (dgc_reader.takeDelimiterInclusive('\n')) |took| { + const line = std.mem.trimRight(u8, took, "\n"); if (line.len == 0 or line[0] == '#') continue; const no_comment = if (std.mem.indexOfScalar(u8, line, '#')) |octo| line[0..octo] else line; diff --git a/codegen/fold.zig b/codegen/fold.zig index d927795..366ed79 100644 --- a/codegen/fold.zig +++ b/codegen/fold.zig @@ -13,7 +13,8 @@ pub fn main() anyerror!void { var props_map = std.AutoHashMap(u21, void).init(allocator); defer props_map.deinit(); - props_lines: while (props_reader.takeDelimiterExclusive('\n')) |line| { + props_lines: while (props_reader.takeDelimiterInclusive('\n')) |took| { + const line = std.mem.trimRight(u8, took, "\n"); if (line.len == 0 or line[0] == '#') continue; const no_comment = if (std.mem.indexOfScalar(u8, line, '#')) |octo| line[0..octo] else line; @@ -56,7 +57,8 @@ pub fn main() anyerror!void { // Process CaseFolding.txt var cp_reader = std.io.Reader.fixed(@embedFile("CaseFolding.txt")); - while (cp_reader.takeDelimiterExclusive('\n')) |line| { + while (cp_reader.takeDelimiterInclusive('\n')) |took| { + const line = std.mem.trimRight(u8, took, "\n"); if (line.len == 0 or line[0] == '#') continue; var field_it = std.mem.splitScalar(u8, line, ';'); diff --git a/codegen/gbp.zig b/codegen/gbp.zig index 895aa7a..1d06e9a 100644 --- a/codegen/gbp.zig +++ b/codegen/gbp.zig @@ -65,7 +65,8 @@ pub fn main() anyerror!void { const indic_file = @embedFile("DerivedCoreProperties.txt"); var indic_reader = std.io.Reader.fixed(indic_file); - while (indic_reader.takeDelimiterExclusive('\n')) |line| { + while (indic_reader.takeDelimiterInclusive('\n')) |took| { + const line = std.mem.trimRight(u8, took, "\n"); if (line.len == 0 or line[0] == '#') continue; if (std.mem.indexOf(u8, line, "InCB") == null) continue; const no_comment = if (std.mem.indexOfScalar(u8, line, '#')) |octo| line[0..octo] else line; @@ -106,7 +107,8 @@ pub fn main() anyerror!void { var gbp_reader = std.io.Reader.fixed(@embedFile("GraphemeBreakProperty.txt")); - while (gbp_reader.takeDelimiterExclusive('\n')) |line| { + while (gbp_reader.takeDelimiterInclusive('\n')) |took| { + const line = std.mem.trimRight(u8, took, "\n"); if (line.len == 0 or line[0] == '#') continue; const no_comment = if (std.mem.indexOfScalar(u8, line, '#')) |octo| line[0..octo] else line; @@ -146,7 +148,8 @@ pub fn main() anyerror!void { var emoji_reader = std.io.Reader.fixed(@embedFile("emoji-data.txt")); - while (emoji_reader.takeDelimiterExclusive('\n')) |line| { + while (emoji_reader.takeDelimiterInclusive('\n')) |took| { + const line = std.mem.trimRight(u8, took, "\n"); if (line.len == 0 or line[0] == '#') continue; if (std.mem.indexOf(u8, line, "Extended_Pictographic") == null) continue; const no_comment = if (std.mem.indexOfScalar(u8, line, '#')) |octo| line[0..octo] else line; diff --git a/codegen/gencat.zig b/codegen/gencat.zig index 79fa072..9800f1d 100644 --- a/codegen/gencat.zig +++ b/codegen/gencat.zig @@ -64,7 +64,8 @@ pub fn main() !void { // Process DerivedGeneralCategory.txt var in_reader = std.io.Reader.fixed(@embedFile("DerivedGeneralCategory.txt")); - while (in_reader.takeDelimiterExclusive('\n')) |line| { + while (in_reader.takeDelimiterInclusive('\n')) |took| { + const line = std.mem.trimRight(u8, took, "\n"); if (line.len == 0 or line[0] == '#') continue; const no_comment = if (std.mem.indexOfScalar(u8, line, '#')) |octo| line[0..octo] else line; diff --git a/codegen/hangul.zig b/codegen/hangul.zig index 64ab11c..2e4c175 100644 --- a/codegen/hangul.zig +++ b/codegen/hangul.zig @@ -40,7 +40,8 @@ pub fn main() anyerror!void { // Process HangulSyllableType.txt var in_reader = std.io.Reader.fixed(@embedFile("HangulSyllableType.txt")); - while (in_reader.takeDelimiterExclusive('\n')) |line| { + while (in_reader.takeDelimiterInclusive('\n')) |took| { + const line = std.mem.trimRight(u8, took, "\n"); if (line.len == 0 or line[0] == '#') continue; const no_comment = if (std.mem.indexOfScalar(u8, line, '#')) |octo| line[0..octo] else line; diff --git a/codegen/lower.zig b/codegen/lower.zig index 987f004..91f3ef2 100644 --- a/codegen/lower.zig +++ b/codegen/lower.zig @@ -20,7 +20,8 @@ pub fn main() !void { const endian = builtin.cpu.arch.endian(); - lines: while (in_reader.takeDelimiterExclusive('\n')) |line| { + lines: while (in_reader.takeDelimiterInclusive('\n')) |took| { + const line = std.mem.trimRight(u8, took, "\n"); if (line.len == 0) continue; var field_iter = std.mem.splitScalar(u8, line, ';'); diff --git a/codegen/normp.zig b/codegen/normp.zig index 3cdd770..eaf6989 100644 --- a/codegen/normp.zig +++ b/codegen/normp.zig @@ -31,7 +31,8 @@ pub fn main() anyerror!void { // Process DerivedNormalizationProps.txt var in_reader = std.io.Reader.fixed(@embedFile("DerivedNormalizationProps.txt")); - while (in_reader.takeDelimiterExclusive('\n')) |line| { + while (in_reader.takeDelimiterInclusive('\n')) |took| { + const line = std.mem.trimRight(u8, took, "\n"); if (line.len == 0 or line[0] == '#') continue; const no_comment = if (std.mem.indexOfScalar(u8, line, '#')) |octo| line[0..octo] else line; diff --git a/codegen/numeric.zig b/codegen/numeric.zig index d6b3165..b304349 100644 --- a/codegen/numeric.zig +++ b/codegen/numeric.zig @@ -32,7 +32,8 @@ pub fn main() anyerror!void { // Process DerivedNumericType.txt var in_reader = std.io.Reader.fixed(@embedFile("DerivedNumericType.txt")); - while (in_reader.takeDelimiterExclusive('\n')) |line| { + while (in_reader.takeDelimiterInclusive('\n')) |took| { + const line = std.mem.trimRight(u8, took, "\n"); if (line.len == 0 or line[0] == '#') continue; const no_comment = if (mem.indexOfScalar(u8, line, '#')) |octo| line[0..octo] else line; diff --git a/codegen/props.zig b/codegen/props.zig index ca42987..35c7dfb 100644 --- a/codegen/props.zig +++ b/codegen/props.zig @@ -32,7 +32,8 @@ pub fn main() anyerror!void { // Process PropList.txt var in_reader = std.io.Reader.fixed(@embedFile("PropList.txt")); - while (in_reader.takeDelimiterExclusive('\n')) |line| { + while (in_reader.takeDelimiterInclusive('\n')) |took| { + const line = std.mem.trimRight(u8, took, "\n"); if (line.len == 0 or line[0] == '#') continue; const no_comment = if (mem.indexOfScalar(u8, line, '#')) |octo| line[0..octo] else line; diff --git a/codegen/scripts.zig b/codegen/scripts.zig index 81511cc..0f0194c 100644 --- a/codegen/scripts.zig +++ b/codegen/scripts.zig @@ -205,7 +205,8 @@ pub fn main() anyerror!void { // Process Scripts.txt var in_reader = std.io.Reader.fixed(@embedFile("Scripts.txt")); - while (in_reader.takeDelimiterExclusive('\n')) |line| { + while (in_reader.takeDelimiterInclusive('\n')) |took| { + const line = std.mem.trimRight(u8, took, "\n"); if (line.len == 0 or line[0] == '#') continue; const no_comment = if (std.mem.indexOfScalar(u8, line, '#')) |octo| line[0..octo] else line; diff --git a/codegen/upper.zig b/codegen/upper.zig index 108fdbd..5eb29e7 100644 --- a/codegen/upper.zig +++ b/codegen/upper.zig @@ -19,7 +19,8 @@ pub fn main() anyerror!void { var file_writer = out_file.writer(&write_buf); const endian = builtin.cpu.arch.endian(); - lines: while (in_reader.takeDelimiterExclusive('\n')) |line| { + lines: while (in_reader.takeDelimiterInclusive('\n')) |took| { + const line = std.mem.trimRight(u8, took, "\n"); if (line.len == 0) continue; var field_iter = std.mem.splitScalar(u8, line, ';'); diff --git a/codegen/wbp.zig b/codegen/wbp.zig index dfdc32e..33eeea5 100644 --- a/codegen/wbp.zig +++ b/codegen/wbp.zig @@ -54,7 +54,8 @@ pub fn main() anyerror!void { // Process HangulSyllableType.txt const in_file = @embedFile("WordBreakProperty.txt"); var in_reader = std.io.Reader.fixed(in_file); - while (in_reader.takeDelimiterExclusive('\n')) |line| { + while (in_reader.takeDelimiterInclusive('\n')) |took| { + const line = std.mem.trimRight(u8, took, "\n"); if (line.len == 0 or line[0] == '#') continue; const no_comment = if (std.mem.indexOfScalar(u8, line, '#')) |octo| line[0..octo] else line; -- cgit v1.2.3