This commit is contained in:
Andrew Kelley 2025-07-16 20:26:28 -07:00
parent fbf8b16ae6
commit 64e2551b3a
2 changed files with 25 additions and 21 deletions

View File

@ -12,6 +12,8 @@ pub const std_options: std.Options = .{
var log_err_count: usize = 0;
var fba_buffer: [8192]u8 = undefined;
var fba = std.heap.FixedBufferAllocator.init(&fba_buffer);
var stdin_buffer: [std.heap.page_size_min]u8 align(std.heap.page_size_min) = undefined;
var stdout_buffer: [std.heap.page_size_min]u8 align(std.heap.page_size_min) = undefined;
const crippled = switch (builtin.zig_backend) {
.stage2_powerpc,
@ -64,9 +66,6 @@ pub fn main() void {
}
}
var stdin_buffer: [std.heap.page_size_min]u8 align(std.heap.page_size_min) = undefined;
var stdout_buffer: [std.heap.page_size_min]u8 align(std.heap.page_size_min) = undefined;
fn mainServer() !void {
@disableInstrumentation();
var stdin_reader = std.fs.File.stdin().reader(&stdin_buffer);

View File

@ -343,7 +343,9 @@ fn mainArgs(gpa: Allocator, arena: Allocator, args: []const []const u8) !void {
return cmdInit(gpa, arena, cmd_args);
} else if (mem.eql(u8, cmd, "targets")) {
dev.check(.targets_command);
return @import("print_targets.zig").cmdTargets(arena, cmd_args);
const host = std.zig.resolveTargetQueryOrFatal(.{});
const stdout = fs.File.stdout().deprecatedWriter();
return @import("print_targets.zig").cmdTargets(arena, cmd_args, stdout, &host);
} else if (mem.eql(u8, cmd, "version")) {
dev.check(.version_command);
try fs.File.stdout().writeAll(build_options.version ++ "\n");
@ -4548,7 +4550,7 @@ fn cmdTranslateC(
error.SemanticAnalyzeFail => break :f .{ .error_bundle = errors },
};
defer tree.deinit(comp.gpa);
break :f .{ .success = try tree.render(arena) };
break :f .{ .success = try tree.renderAlloc(arena) };
},
};
@ -5684,7 +5686,7 @@ const ArgIteratorResponseFile = process.ArgIteratorGeneral(.{ .comments = true,
/// Initialize the arguments from a Response File. "*.rsp"
fn initArgIteratorResponseFile(allocator: Allocator, resp_file_path: []const u8) !ArgIteratorResponseFile {
const max_bytes = 10 * 1024 * 1024; // 10 MiB of command line arguments is a reasonable limit
const cmd_line = try fs.cwd().readFileAlloc(resp_file_path, allocator, .limited(max_bytes));
const cmd_line = try fs.cwd().readFileAlloc(allocator, resp_file_path, max_bytes);
errdefer allocator.free(cmd_line);
return ArgIteratorResponseFile.initTakeOwnership(allocator, cmd_line);
@ -6056,7 +6058,8 @@ fn cmdAstCheck(
};
} else fs.File.stdin();
defer if (zig_source_path != null) f.close();
break :s std.zig.readSourceFileToEndAlloc(arena, f, null) catch |err| {
var file_reader: fs.File.Reader = f.reader(&stdio_buffer);
break :s std.zig.readSourceFileToEndAlloc(arena, &file_reader) catch |err| {
fatal("unable to load file '{s}' for ast-check: {s}", .{ display_path, @errorName(err) });
};
};
@ -6413,14 +6416,16 @@ fn cmdChangelist(
var f = fs.cwd().openFile(old_source_path, .{}) catch |err|
fatal("unable to open old source file '{s}': {s}", .{ old_source_path, @errorName(err) });
defer f.close();
break :source std.zig.readSourceFileToEndAlloc(arena, f, std.zig.max_src_size) catch |err|
var file_reader: fs.File.Reader = f.reader(&stdio_buffer);
break :source std.zig.readSourceFileToEndAlloc(arena, &file_reader) catch |err|
fatal("unable to read old source file '{s}': {s}", .{ old_source_path, @errorName(err) });
};
const new_source = source: {
var f = fs.cwd().openFile(new_source_path, .{}) catch |err|
fatal("unable to open new source file '{s}': {s}", .{ new_source_path, @errorName(err) });
defer f.close();
break :source std.zig.readSourceFileToEndAlloc(arena, f, std.zig.max_src_size) catch |err|
var file_reader: fs.File.Reader = f.reader(&stdio_buffer);
break :source std.zig.readSourceFileToEndAlloc(arena, &file_reader) catch |err|
fatal("unable to read new source file '{s}': {s}", .{ new_source_path, @errorName(err) });
};
@ -6943,7 +6948,7 @@ fn cmdFetch(
ast.deinit(gpa);
}
var fixups: Ast.Fixups = .{};
var fixups: Ast.Render.Fixups = .{};
defer fixups.deinit(gpa);
var saved_path_or_url = path_or_url;
@ -7044,15 +7049,15 @@ fn cmdFetch(
try fixups.append_string_after_node.put(gpa, manifest.version_node, dependencies_text);
}
var file = build_root.directory.handle.createFile(Package.Manifest.basename, .{}) catch |err| {
fatal("unable to create {s} file: {s}", .{ Package.Manifest.basename, err });
var aw: std.Io.Writer.Allocating = .init(gpa);
defer aw.deinit();
try ast.render(gpa, &aw.writer, fixups);
const rendered = aw.getWritten();
build_root.directory.handle.writeFile(.{ .sub_path = Package.Manifest.basename, .data = rendered }) catch |err| {
fatal("unable to write {s} file: {t}", .{ Package.Manifest.basename, err });
};
defer file.close();
var stdout_bw = fs.File.stdout().writer().buffered(&stdio_buffer);
ast.render(gpa, &stdout_bw, fixups) catch |err| fatal("failed to render AST to {s}: {s}", .{
Package.Manifest.basename, err,
});
stdout_bw.flush() catch |err| fatal("failed to flush {s}: {s}", .{ Package.Manifest.basename, err });
return cleanExit();
}
@ -7205,9 +7210,9 @@ fn loadManifest(
) !struct { Package.Manifest, Ast } {
const manifest_bytes = while (true) {
break options.dir.readFileAllocOptions(
Package.Manifest.basename,
arena,
.limited(Package.Manifest.max_bytes),
Package.Manifest.basename,
Package.Manifest.max_bytes,
null,
.@"1",
0,
@ -7284,7 +7289,7 @@ const Templates = struct {
}
const max_bytes = 10 * 1024 * 1024;
const contents = templates.dir.readFileAlloc(template_path, arena, .limited(max_bytes)) catch |err| {
const contents = templates.dir.readFileAlloc(arena, template_path, max_bytes) catch |err| {
fatal("unable to read template file '{s}': {s}", .{ template_path, @errorName(err) });
};
templates.buffer.clearRetainingCapacity();