Skip to content

Commit 4480a9a

Browse files
committed
feat(std): Update to latest version of Zig lib
1 parent ff8b251 commit 4480a9a

File tree

5 files changed

+67
-41
lines changed

5 files changed

+67
-41
lines changed

build.zig.zon

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
.{
2+
.name = .zig_mcp,
3+
.version = "0.0.0",
4+
.fingerprint = 0x1c29ab0bcd4442bc,
5+
.minimum_zig_version = "0.15.0-dev.1474+3ea015db9",
6+
.dependencies = .{},
7+
.paths = .{
8+
"build.zig",
9+
"build.zig.zon",
10+
"docs",
11+
},
12+
}

docs/main.zig

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -683,7 +683,6 @@ fn render_docs(
683683
var parsed_doc = try parser.endInput();
684684
defer parsed_doc.deinit(gpa);
685685

686-
687686
const Writer = std.ArrayListUnmanaged(u8).Writer;
688687
const Renderer = markdown.Renderer(Writer, Decl.Index);
689688
const renderer: Renderer = .{
@@ -752,10 +751,10 @@ export fn decl_type_html(decl_index: Decl.Index) String {
752751
const Oom = error{OutOfMemory};
753752

754753
fn unpackInner(tar_bytes: []u8) !void {
755-
var fbs = std.io.fixedBufferStream(tar_bytes);
754+
var reader: std.Io.Reader = .fixed(tar_bytes);
756755
var file_name_buffer: [1024]u8 = undefined;
757756
var link_name_buffer: [1024]u8 = undefined;
758-
var it = std.tar.iterator(fbs.reader(), .{
757+
var it: std.tar.Iterator = .init(&reader, .{
759758
.file_name_buffer = &file_name_buffer,
760759
.link_name_buffer = &link_name_buffer,
761760
});
@@ -776,7 +775,7 @@ fn unpackInner(tar_bytes: []u8) !void {
776775
{
777776
gop.value_ptr.* = file;
778777
}
779-
const file_bytes = tar_bytes[fbs.pos..][0..@intCast(tar_file.size)];
778+
const file_bytes = tar_bytes[reader.seek..][0..@intCast(tar_file.size)];
780779
assert(file == try Walk.add_file(file_name, file_bytes));
781780
}
782781
} else {

docs/markdown.zig

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -144,13 +144,12 @@ fn mainImpl() !void {
144144
var parser = try Parser.init(gpa);
145145
defer parser.deinit();
146146

147-
var stdin_buf = std.io.bufferedReader(std.fs.File.stdin().deprecatedReader());
148-
var line_buf = std.ArrayList(u8).init(gpa);
149-
defer line_buf.deinit();
150-
while (stdin_buf.reader().streamUntilDelimiter(line_buf.writer(), '\n', null)) {
151-
if (line_buf.getLastOrNull() == '\r') _ = line_buf.pop();
152-
try parser.feedLine(line_buf.items);
153-
line_buf.clearRetainingCapacity();
147+
var stdin_buffer: [1024]u8 = undefined;
148+
var stdin_reader = std.fs.File.stdin().reader(&stdin_buffer);
149+
150+
while (stdin_reader.takeDelimiterExclusive('\n')) |line| {
151+
const trimmed = std.mem.trimRight(u8, line, '\r');
152+
try parser.feedLine(trimmed);
154153
} else |err| switch (err) {
155154
error.EndOfStream => {},
156155
else => |e| return e,
@@ -159,9 +158,10 @@ fn mainImpl() !void {
159158
var doc = try parser.endInput();
160159
defer doc.deinit(gpa);
161160

162-
var stdout_buf = std.io.bufferedWriter(std.fs.File.stdout().deprecatedWriter());
163-
try doc.render(stdout_buf.writer());
164-
try stdout_buf.flush();
161+
var stdout_buffer: [1024]u8 = undefined;
162+
var stdout_writer = std.fs.File.stdout().writer(&stdout_buffer);
163+
try doc.render(&stdout_writer.interface);
164+
try stdout_writer.interface.flush();
165165
}
166166

167167
test "empty document" {

docs/markdown/Parser.zig

Lines changed: 41 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -29,13 +29,14 @@ const Node = Document.Node;
2929
const ExtraIndex = Document.ExtraIndex;
3030
const ExtraData = Document.ExtraData;
3131
const StringIndex = Document.StringIndex;
32+
const ArrayList = std.ArrayListUnmanaged;
3233

3334
nodes: Node.List = .{},
34-
extra: std.ArrayListUnmanaged(u32) = .empty,
35-
scratch_extra: std.ArrayListUnmanaged(u32) = .empty,
36-
string_bytes: std.ArrayListUnmanaged(u8) = .empty,
37-
scratch_string: std.ArrayListUnmanaged(u8) = .empty,
38-
pending_blocks: std.ArrayListUnmanaged(Block) = .empty,
35+
extra: ArrayList(u32) = .empty,
36+
scratch_extra: ArrayList(u32) = .empty,
37+
string_bytes: ArrayList(u8) = .empty,
38+
scratch_string: ArrayList(u8) = .empty,
39+
pending_blocks: ArrayList(Block) = .empty,
3940
allocator: Allocator,
4041

4142
const Parser = @This();
@@ -86,7 +87,8 @@ const Block = struct {
8687
continuation_indent: usize,
8788
},
8889
table: struct {
89-
column_alignments: std.BoundedArray(Node.TableCellAlignment, max_table_columns) = .{},
90+
column_alignments_buffer: [max_table_columns]Node.TableCellAlignment,
91+
column_alignments_len: usize,
9092
},
9193
heading: struct {
9294
/// Between 1 and 6, inclusive.
@@ -354,7 +356,8 @@ const BlockStart = struct {
354356
continuation_indent: usize,
355357
},
356358
table_row: struct {
357-
cells: std.BoundedArray([]const u8, max_table_columns),
359+
cells_buffer: [max_table_columns][]const u8,
360+
cells_len: usize,
358361
},
359362
heading: struct {
360363
/// Between 1 and 6, inclusive.
@@ -422,7 +425,8 @@ fn appendBlockStart(p: *Parser, block_start: BlockStart) !void {
422425
try p.pending_blocks.append(p.allocator, .{
423426
.tag = .table,
424427
.data = .{ .table = .{
425-
.column_alignments = .{},
428+
.column_alignments_buffer = undefined,
429+
.column_alignments_len = 0,
426430
} },
427431
.string_start = p.scratch_string.items.len,
428432
.extra_start = p.scratch_extra.items.len,
@@ -431,15 +435,20 @@ fn appendBlockStart(p: *Parser, block_start: BlockStart) !void {
431435

432436
const current_row = p.scratch_extra.items.len - p.pending_blocks.getLast().extra_start;
433437
if (current_row <= 1) {
434-
if (parseTableHeaderDelimiter(block_start.data.table_row.cells)) |alignments| {
435-
p.pending_blocks.items[p.pending_blocks.items.len - 1].data.table.column_alignments = alignments;
438+
var buffer: [max_table_columns]Node.TableCellAlignment = undefined;
439+
const table_row = &block_start.data.table_row;
440+
441+
if (parseTableHeaderDelimiter(table_row.cells_buffer[0..table_row.cells_len], &buffer)) |alignments| {
442+
const table = &p.pending_blocks.items[p.pending_blocks.items.len - 1].data.table;
443+
@memcpy(table.column_alignments_buffer[0..alignments.len], &buffer);
444+
table.column_alignments_len = alignments.len;
436445
if (current_row == 1) {
437446
// We need to go back and mark the header row and its column
438447
// alignments.
439448
const datas = p.nodes.items(.data);
440449
const header_data = datas[p.scratch_extra.getLast()];
441450
for (p.extraChildren(header_data.container.children), 0..) |header_cell, i| {
442-
const alignment = if (i < alignments.len) alignments.buffer[i] else .unset;
451+
const alignment = if (i < alignments.len) alignments[i] else .unset;
443452
const cell_data = &datas[@intFromEnum(header_cell)].table_cell;
444453
cell_data.info.alignment = alignment;
445454
cell_data.info.header = true;
@@ -480,8 +489,10 @@ fn appendBlockStart(p: *Parser, block_start: BlockStart) !void {
480489
// available in the BlockStart. We can immediately parse and append
481490
// these children now.
482491
const containing_table = p.pending_blocks.items[p.pending_blocks.items.len - 2];
483-
const column_alignments = containing_table.data.table.column_alignments.slice();
484-
for (block_start.data.table_row.cells.slice(), 0..) |cell_content, i| {
492+
const table = &containing_table.data.table;
493+
const column_alignments = table.column_alignments_buffer[0..table.column_alignments_len];
494+
const table_row = &block_start.data.table_row;
495+
for (table_row.cells_buffer[0..table_row.cells_len], 0..) |cell_content, i| {
485496
const cell_children = try p.parseInlines(cell_content);
486497
const alignment = if (i < column_alignments.len) column_alignments[i] else .unset;
487498
const cell = try p.addNode(.{
@@ -523,7 +534,8 @@ fn startBlock(p: *Parser, line: []const u8) !?BlockStart {
523534
return .{
524535
.tag = .table_row,
525536
.data = .{ .table_row = .{
526-
.cells = table_row.cells,
537+
.cells_buffer = table_row.cells_buffer,
538+
.cells_len = table_row.cells_len,
527539
} },
528540
.rest = "",
529541
};
@@ -606,7 +618,8 @@ fn startListItem(unindented_line: []const u8) ?ListItemStart {
606618
}
607619

608620
const TableRowStart = struct {
609-
cells: std.BoundedArray([]const u8, max_table_columns),
621+
cells_buffer: [max_table_columns][]const u8,
622+
cells_len: usize,
610623
};
611624

612625
fn startTableRow(unindented_line: []const u8) ?TableRowStart {
@@ -615,15 +628,16 @@ fn startTableRow(unindented_line: []const u8) ?TableRowStart {
615628
mem.endsWith(u8, unindented_line, "\\|") or
616629
!mem.endsWith(u8, unindented_line, "|")) return null;
617630

618-
var cells: std.BoundedArray([]const u8, max_table_columns) = .{};
631+
var cells_buffer: [max_table_columns][]const u8 = undefined;
632+
var cells: ArrayList([]const u8) = .initBuffer(&cells_buffer);
619633
const table_row_content = unindented_line[1 .. unindented_line.len - 1];
620634
var cell_start: usize = 0;
621635
var i: usize = 0;
622636
while (i < table_row_content.len) : (i += 1) {
623637
switch (table_row_content[i]) {
624638
'\\' => i += 1,
625639
'|' => {
626-
cells.append(table_row_content[cell_start..i]) catch return null;
640+
cells.appendBounded(table_row_content[cell_start..i]) catch return null;
627641
cell_start = i + 1;
628642
},
629643
'`' => {
@@ -641,20 +655,21 @@ fn startTableRow(unindented_line: []const u8) ?TableRowStart {
641655
else => {},
642656
}
643657
}
644-
cells.append(table_row_content[cell_start..]) catch return null;
658+
cells.appendBounded(table_row_content[cell_start..]) catch return null;
645659

646-
return .{ .cells = cells };
660+
return .{ .cells_buffer = cells_buffer, .cells_len = cells.items.len };
647661
}
648662

649663
fn parseTableHeaderDelimiter(
650-
row_cells: std.BoundedArray([]const u8, max_table_columns),
651-
) ?std.BoundedArray(Node.TableCellAlignment, max_table_columns) {
652-
var alignments: std.BoundedArray(Node.TableCellAlignment, max_table_columns) = .{};
653-
for (row_cells.slice()) |content| {
664+
row_cells: []const []const u8,
665+
buffer: []Node.TableCellAlignment,
666+
) ?[]Node.TableCellAlignment {
667+
var alignments: ArrayList(Node.TableCellAlignment) = .initBuffer(buffer);
668+
for (row_cells) |content| {
654669
const alignment = parseTableHeaderDelimiterCell(content) orelse return null;
655670
alignments.appendAssumeCapacity(alignment);
656671
}
657-
return alignments;
672+
return alignments.items;
658673
}
659674

660675
fn parseTableHeaderDelimiterCell(content: []const u8) ?Node.TableCellAlignment {
@@ -928,8 +943,8 @@ const InlineParser = struct {
928943
parent: *Parser,
929944
content: []const u8,
930945
pos: usize = 0,
931-
pending_inlines: std.ArrayListUnmanaged(PendingInline) = .empty,
932-
completed_inlines: std.ArrayListUnmanaged(CompletedInline) = .empty,
946+
pending_inlines: ArrayList(PendingInline) = .empty,
947+
completed_inlines: ArrayList(CompletedInline) = .empty,
933948

934949
const PendingInline = struct {
935950
tag: Tag,

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "zig-mcp",
3-
"version": "1.1.1",
3+
"version": "1.1.2",
44
"type": "module",
55
"bin": {
66
"zig-mcp": "dist/mcp.js"

0 commit comments

Comments
 (0)