diff --git a/lib/compiler/resinator/errors.zig b/lib/compiler/resinator/errors.zig index 14a001894e..431f14692a 100644 --- a/lib/compiler/resinator/errors.zig +++ b/lib/compiler/resinator/errors.zig @@ -1078,11 +1078,9 @@ const CorrespondingLines = struct { at_eof: bool = false, span: SourceMappings.CorrespondingSpan, file: std.fs.File, - buffered_reader: BufferedReaderType, + buffered_reader: *std.Io.Reader, code_page: SupportedCodePage, - const BufferedReaderType = std.io.BufferedReader(512, std.fs.File.DeprecatedReader); - pub fn init(cwd: std.fs.Dir, err_details: ErrorDetails, line_for_comparison: []const u8, corresponding_span: SourceMappings.CorrespondingSpan, corresponding_file: []const u8) !CorrespondingLines { // We don't do line comparison for this error, so don't print the note if the line // number is different @@ -1101,9 +1099,7 @@ const CorrespondingLines = struct { .buffered_reader = undefined, .code_page = err_details.code_page, }; - corresponding_lines.buffered_reader = BufferedReaderType{ - .unbuffered_reader = corresponding_lines.file.deprecatedReader(), - }; + corresponding_lines.buffered_reader = corresponding_lines.file.reader(); errdefer corresponding_lines.deinit(); var fbs = std.io.fixedBufferStream(&corresponding_lines.line_buf); diff --git a/lib/docs/wasm/markdown.zig b/lib/docs/wasm/markdown.zig index 3293b680c9..32e32b4104 100644 --- a/lib/docs/wasm/markdown.zig +++ b/lib/docs/wasm/markdown.zig @@ -145,13 +145,12 @@ fn mainImpl() !void { var parser = try Parser.init(gpa); defer parser.deinit(); - var stdin_buf = std.io.bufferedReader(std.fs.File.stdin().deprecatedReader()); - var line_buf = std.ArrayList(u8).init(gpa); - defer line_buf.deinit(); - while (stdin_buf.reader().streamUntilDelimiter(line_buf.writer(), '\n', null)) { - if (line_buf.getLastOrNull() == '\r') _ = line_buf.pop(); - try parser.feedLine(line_buf.items); - line_buf.clearRetainingCapacity(); + var stdin_buffer: [1024]u8 = undefined; + var stdin_reader = std.fs.File.stdin().reader(&stdin_buffer); + + while (stdin_reader.takeDelimiterExclusive('\n')) |line| { + const trimmed = std.mem.trimRight(u8, line, '\r'); + try parser.feedLine(trimmed); } else |err| switch (err) { error.EndOfStream => {}, else => |e| return e, diff --git a/lib/std/Io.zig b/lib/std/Io.zig index ab309c8720..1de77f1c1d 100644 --- a/lib/std/Io.zig +++ b/lib/std/Io.zig @@ -428,12 +428,6 @@ pub const BufferedWriter = @import("Io/buffered_writer.zig").BufferedWriter; /// Deprecated in favor of `Writer`. pub const bufferedWriter = @import("Io/buffered_writer.zig").bufferedWriter; /// Deprecated in favor of `Reader`. -pub const BufferedReader = @import("Io/buffered_reader.zig").BufferedReader; -/// Deprecated in favor of `Reader`. -pub const bufferedReader = @import("Io/buffered_reader.zig").bufferedReader; -/// Deprecated in favor of `Reader`. -pub const bufferedReaderSize = @import("Io/buffered_reader.zig").bufferedReaderSize; -/// Deprecated in favor of `Reader`. pub const FixedBufferStream = @import("Io/fixed_buffer_stream.zig").FixedBufferStream; /// Deprecated in favor of `Reader`. pub const fixedBufferStream = @import("Io/fixed_buffer_stream.zig").fixedBufferStream; @@ -926,7 +920,6 @@ pub fn PollFiles(comptime StreamEnum: type) type { test { _ = Reader; _ = Writer; - _ = BufferedReader; _ = BufferedWriter; _ = CountingWriter; _ = CountingReader; diff --git a/lib/std/Io/buffered_reader.zig b/lib/std/Io/buffered_reader.zig deleted file mode 100644 index 548dd92f73..0000000000 --- a/lib/std/Io/buffered_reader.zig +++ /dev/null @@ -1,201 +0,0 @@ -const std = @import("../std.zig"); -const io = std.io; -const mem = std.mem; -const assert = std.debug.assert; -const testing = std.testing; - -pub fn BufferedReader(comptime buffer_size: usize, comptime ReaderType: type) type { - return struct { - unbuffered_reader: ReaderType, - buf: [buffer_size]u8 = undefined, - start: usize = 0, - end: usize = 0, - - pub const Error = ReaderType.Error; - pub const Reader = io.GenericReader(*Self, Error, read); - - const Self = @This(); - - pub fn read(self: *Self, dest: []u8) Error!usize { - // First try reading from the already buffered data onto the destination. - const current = self.buf[self.start..self.end]; - if (current.len != 0) { - const to_transfer = @min(current.len, dest.len); - @memcpy(dest[0..to_transfer], current[0..to_transfer]); - self.start += to_transfer; - return to_transfer; - } - - // If dest is large, read from the unbuffered reader directly into the destination. - if (dest.len >= buffer_size) { - return self.unbuffered_reader.read(dest); - } - - // If dest is small, read from the unbuffered reader into our own internal buffer, - // and then transfer to destination. - self.end = try self.unbuffered_reader.read(&self.buf); - const to_transfer = @min(self.end, dest.len); - @memcpy(dest[0..to_transfer], self.buf[0..to_transfer]); - self.start = to_transfer; - return to_transfer; - } - - pub fn reader(self: *Self) Reader { - return .{ .context = self }; - } - }; -} - -pub fn bufferedReader(reader: anytype) BufferedReader(4096, @TypeOf(reader)) { - return .{ .unbuffered_reader = reader }; -} - -pub fn bufferedReaderSize(comptime size: usize, reader: anytype) BufferedReader(size, @TypeOf(reader)) { - return .{ .unbuffered_reader = reader }; -} - -test "OneByte" { - const OneByteReadReader = struct { - str: []const u8, - curr: usize, - - const Error = error{NoError}; - const Self = @This(); - const Reader = io.GenericReader(*Self, Error, read); - - fn init(str: []const u8) Self { - return Self{ - .str = str, - .curr = 0, - }; - } - - fn read(self: *Self, dest: []u8) Error!usize { - if (self.str.len <= self.curr or dest.len == 0) - return 0; - - dest[0] = self.str[self.curr]; - self.curr += 1; - return 1; - } - - fn reader(self: *Self) Reader { - return .{ .context = self }; - } - }; - - const str = "This is a test"; - var one_byte_stream = OneByteReadReader.init(str); - var buf_reader = bufferedReader(one_byte_stream.reader()); - const stream = buf_reader.reader(); - - const res = try stream.readAllAlloc(testing.allocator, str.len + 1); - defer testing.allocator.free(res); - try testing.expectEqualSlices(u8, str, res); -} - -fn smallBufferedReader(underlying_stream: anytype) BufferedReader(8, @TypeOf(underlying_stream)) { - return .{ .unbuffered_reader = underlying_stream }; -} -test "Block" { - const BlockReader = struct { - block: []const u8, - reads_allowed: usize, - curr_read: usize, - - const Error = error{NoError}; - const Self = @This(); - const Reader = io.GenericReader(*Self, Error, read); - - fn init(block: []const u8, reads_allowed: usize) Self { - return Self{ - .block = block, - .reads_allowed = reads_allowed, - .curr_read = 0, - }; - } - - fn read(self: *Self, dest: []u8) Error!usize { - if (self.curr_read >= self.reads_allowed) return 0; - @memcpy(dest[0..self.block.len], self.block); - - self.curr_read += 1; - return self.block.len; - } - - fn reader(self: *Self) Reader { - return .{ .context = self }; - } - }; - - const block = "0123"; - - // len out == block - { - var test_buf_reader: BufferedReader(4, BlockReader) = .{ - .unbuffered_reader = BlockReader.init(block, 2), - }; - const reader = test_buf_reader.reader(); - var out_buf: [4]u8 = undefined; - _ = try reader.readAll(&out_buf); - try testing.expectEqualSlices(u8, &out_buf, block); - _ = try reader.readAll(&out_buf); - try testing.expectEqualSlices(u8, &out_buf, block); - try testing.expectEqual(try reader.readAll(&out_buf), 0); - } - - // len out < block - { - var test_buf_reader: BufferedReader(4, BlockReader) = .{ - .unbuffered_reader = BlockReader.init(block, 2), - }; - const reader = test_buf_reader.reader(); - var out_buf: [3]u8 = undefined; - _ = try reader.readAll(&out_buf); - try testing.expectEqualSlices(u8, &out_buf, "012"); - _ = try reader.readAll(&out_buf); - try testing.expectEqualSlices(u8, &out_buf, "301"); - const n = try reader.readAll(&out_buf); - try testing.expectEqualSlices(u8, out_buf[0..n], "23"); - try testing.expectEqual(try reader.readAll(&out_buf), 0); - } - - // len out > block - { - var test_buf_reader: BufferedReader(4, BlockReader) = .{ - .unbuffered_reader = BlockReader.init(block, 2), - }; - const reader = test_buf_reader.reader(); - var out_buf: [5]u8 = undefined; - _ = try reader.readAll(&out_buf); - try testing.expectEqualSlices(u8, &out_buf, "01230"); - const n = try reader.readAll(&out_buf); - try testing.expectEqualSlices(u8, out_buf[0..n], "123"); - try testing.expectEqual(try reader.readAll(&out_buf), 0); - } - - // len out == 0 - { - var test_buf_reader: BufferedReader(4, BlockReader) = .{ - .unbuffered_reader = BlockReader.init(block, 2), - }; - const reader = test_buf_reader.reader(); - var out_buf: [0]u8 = undefined; - _ = try reader.readAll(&out_buf); - try testing.expectEqualSlices(u8, &out_buf, ""); - } - - // len bufreader buf > block - { - var test_buf_reader: BufferedReader(5, BlockReader) = .{ - .unbuffered_reader = BlockReader.init(block, 2), - }; - const reader = test_buf_reader.reader(); - var out_buf: [4]u8 = undefined; - _ = try reader.readAll(&out_buf); - try testing.expectEqualSlices(u8, &out_buf, block); - _ = try reader.readAll(&out_buf); - try testing.expectEqualSlices(u8, &out_buf, block); - try testing.expectEqual(try reader.readAll(&out_buf), 0); - } -} diff --git a/lib/std/Io/test.zig b/lib/std/Io/test.zig index e0fcea7674..9733e6f044 100644 --- a/lib/std/Io/test.zig +++ b/lib/std/Io/test.zig @@ -45,9 +45,9 @@ test "write a file, read it, then delete it" { const expected_file_size: u64 = "begin".len + data.len + "end".len; try expectEqual(expected_file_size, file_size); - var buf_stream = io.bufferedReader(file.deprecatedReader()); - const st = buf_stream.reader(); - const contents = try st.readAllAlloc(std.testing.allocator, 2 * 1024); + var file_buffer: [1024]u8 = undefined; + var file_reader = file.reader(&file_buffer); + const contents = try file_reader.interface.allocRemaining(std.testing.allocator, .limited(2 * 1024)); defer std.testing.allocator.free(contents); try expect(mem.eql(u8, contents[0.."begin".len], "begin")); diff --git a/src/Package/Fetch.zig b/src/Package/Fetch.zig index b6d22a37ac..2a11e1ea6e 100644 --- a/src/Package/Fetch.zig +++ b/src/Package/Fetch.zig @@ -1194,14 +1194,8 @@ fn unpackResource( }, .@"tar.xz" => { const gpa = f.arena.child_allocator; - const reader = resource.reader(); - var br = std.io.bufferedReaderSize(std.crypto.tls.max_ciphertext_record_len, reader); - var dcp = std.compress.xz.decompress(gpa, br.reader()) catch |err| { - return f.fail(f.location_tok, try eb.printString( - "unable to decompress tarball: {s}", - .{@errorName(err)}, - )); - }; + var dcp = std.compress.xz.decompress(gpa, resource.reader().adaptToOldInterface()) catch |err| + return f.fail(f.location_tok, try eb.printString("unable to decompress tarball: {t}", .{err})); defer dcp.deinit(); var adapter_buffer: [1024]u8 = undefined; var adapter = dcp.reader().adaptToNewApi(&adapter_buffer);