1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92
|
# Releases
## v0.11.0
- Introduce `class IO::Stream::ConnectionResetError < Errno::ECONNRESET` to standardize connection reset error handling across different IO types.
- `OpenSSL::SSL::SSLSocket` raises `OpenSSL::SSL::SSLError` on connection reset, while other IO types raise `Errno::ECONNRESET`. `SSLError` is now rescued and re-raised as `IO::Stream::ConnectionResetError` for consistency.
## v0.10.0
- Rename `done?` to `finished?` for clarity and consistency.
## v0.9.1
- Fix EOF behavior to match Ruby IO semantics: `read()` returns empty string `""` at EOF while `read(size)` returns `nil` at EOF.
## v0.9.0
- Add support for `buffer` parameter in `read`, `read_exactly`, and `read_partial` methods to allow reading into a provided buffer.
## v0.8.0
- On Ruby v3.3+, use `IO#write` directly instead of `IO#write_nonblock`, for better performance.
- Introduce support for `Readable#discard_until` method to discard data until a specific pattern is found.
## v0.7.0
- Split stream functionality into separate `Readable` and `Writable` modules for better modularity and composition.
- Remove unused timeout shim functionality.
- 100% documentation coverage.
## v0.6.1
- Fix compatibility with Ruby v3.3.0 - v3.3.6 where broken `@io.close` could hang.
## v0.6.0
- Improve compatibility of `gets` implementation to better match Ruby's IO\#gets behavior.
## v0.5.0
- Add support for `read_until(limit:)` parameter to limit the amount of data read.
- Minor documentation improvements.
## v0.4.3
- Add comprehensive tests for `buffered?` method on `SSLSocket`.
- Ensure TLS connections have correct buffering behavior.
- Improve test suite organization and readability.
## v0.4.2
- Add external test suite for better integration testing.
- Update dependencies and improve code style with RuboCop.
## v0.4.1
- Add compatibility fix for `SSLSocket` raising `EBADF` errors.
- Fix `IO#close` hang issue in certain scenarios.
- Add `#to_io` method to `IO::Stream::Buffered` for better compatibility.
- Modernize gem structure and dependencies.
## v0.4.0
- Add convenient `IO.Stream()` constructor method for creating buffered streams.
## v0.3.0
- Add support for timeouts with compatibility shims for various IO types.
## v0.2.0
- Prefer `write_nonblock` in `syswrite` implementation for better non-blocking behavior.
- Add test cases for crash scenarios.
## v0.1.1
- Improve buffering compatibility by falling back to `sync=` when `buffered=` is not available.
## v0.1.0
- Rename `IO::Stream::BufferedStream` to `IO::Stream::Buffered` for consistency.
- Add comprehensive tests and improved OpenSSL support with compatibility shims.
- Improve compatibility with Darwin/macOS systems.
- Fix monkey patches for various IO types.
- Add support for `StringIO#buffered?` method.
## v0.0.1
- Initial release with basic buffered stream functionality.
- Provide `IO::Stream::Buffered` class for efficient buffered I/O operations.
- Add `readable?` method to check stream readability status.
- Include basic test suite.
|