diff --git a/lib/compiler/std-docs.zig b/lib/compiler/std-docs.zig index 74a9c65849..ec3e3ab945 100644 --- a/lib/compiler/std-docs.zig +++ b/lib/compiler/std-docs.zig @@ -93,9 +93,12 @@ pub fn main() !void { fn accept(context: *Context, connection: std.net.Server.Connection) void { defer connection.stream.close(); - var read_buffer: [8000]u8 = undefined; - var server = std.http.Server.init(connection, &read_buffer); - while (server.state == .ready) { + var recv_buffer: [4000]u8 = undefined; + var send_buffer: [4000]u8 = undefined; + var conn_reader = connection.stream.reader(&recv_buffer); + var conn_writer = connection.stream.writer(&send_buffer); + var server = std.http.Server.init(conn_reader.interface(), &conn_writer.interface); + while (server.reader.state == .ready) { var request = server.receiveHead() catch |err| switch (err) { error.HttpConnectionClosing => return, else => { @@ -175,8 +178,7 @@ fn serveSourcesTar(request: *std.http.Server.Request, context: *Context) !void { const gpa = context.gpa; var send_buffer: [0x4000]u8 = undefined; - var response = request.respondStreaming(.{ - .send_buffer = &send_buffer, + var response = try request.respondStreaming(&send_buffer, .{ .respond_options = .{ .extra_headers = &.{ .{ .name = "content-type", .value = "application/x-tar" }, @@ -191,11 +193,7 @@ fn serveSourcesTar(request: *std.http.Server.Request, context: *Context) !void { var walker = try std_dir.walk(gpa); defer walker.deinit(); - var adapter_buffer: [500]u8 = undefined; - var response_writer = response.writer().adaptToNewApi(); - response_writer.new_interface.buffer = &adapter_buffer; - - var archiver: std.tar.Writer = .{ .underlying_writer = &response_writer.new_interface }; + var archiver: std.tar.Writer = .{ .underlying_writer = &response.writer }; archiver.prefix = "std"; while (try walker.next()) |entry| { @@ -229,7 +227,6 @@ fn serveSourcesTar(request: *std.http.Server.Request, context: *Context) !void { // intentionally omitting the pointless trailer //try archiver.finish(); - try response_writer.new_interface.flush(); try response.end(); } diff --git a/lib/std/Io.zig b/lib/std/Io.zig index 1e91c91a52..0cec6c5d00 100644 --- a/lib/std/Io.zig +++ b/lib/std/Io.zig @@ -387,11 +387,11 @@ pub fn GenericWriter( } /// Helper for bridging to the new `Writer` API while upgrading. - pub fn adaptToNewApi(self: *const Self) Adapter { + pub fn adaptToNewApi(self: *const Self, buffer: []u8) Adapter { return .{ .derp_writer = self.*, .new_interface = .{ - .buffer = &.{}, + .buffer = buffer, .vtable = &.{ .drain = Adapter.drain }, }, }; diff --git a/lib/std/Io/DeprecatedWriter.zig b/lib/std/Io/DeprecatedWriter.zig index 81774b357c..68b21bde5b 100644 --- a/lib/std/Io/DeprecatedWriter.zig +++ b/lib/std/Io/DeprecatedWriter.zig @@ -83,11 +83,11 @@ pub fn writeFile(self: Self, file: std.fs.File) anyerror!void { } /// Helper for bridging to the new `Writer` API while upgrading. -pub fn adaptToNewApi(self: *const Self) Adapter { +pub fn adaptToNewApi(self: *const Self, buffer: []u8) Adapter { return .{ .derp_writer = self.*, .new_interface = .{ - .buffer = &.{}, + .buffer = buffer, .vtable = &.{ .drain = Adapter.drain }, }, }; diff --git a/lib/std/fmt.zig b/lib/std/fmt.zig index b6730e1cf1..c32d738455 100644 --- a/lib/std/fmt.zig +++ b/lib/std/fmt.zig @@ -80,7 +80,7 @@ pub const Number = struct { /// Deprecated in favor of `Writer.print`. pub fn format(writer: anytype, comptime fmt: []const u8, args: anytype) !void { - var adapter = writer.adaptToNewApi(); + var adapter = writer.adaptToNewApi(&.{}); return adapter.new_interface.print(fmt, args) catch |err| switch (err) { error.WriteFailed => return adapter.err.?, }; diff --git a/tools/gen_spirv_spec.zig b/tools/gen_spirv_spec.zig index 912c4e4de1..6295285a4b 100644 --- a/tools/gen_spirv_spec.zig +++ b/tools/gen_spirv_spec.zig @@ -84,7 +84,7 @@ pub fn main() !void { const output_buf = try allocator.alloc(u8, 1024 * 1024); var fbs = std.io.fixedBufferStream(output_buf); - var adapter = fbs.writer().adaptToNewApi(); + var adapter = fbs.writer().adaptToNewApi(&.{}); const w = &adapter.new_interface; try render(w, core_spec, exts.items); var output: [:0]u8 = @ptrCast(fbs.getWritten());