Releases
v0.23.0
- Introduce a limit to the number of CONTINUATION frames that can be read to prevent resource exhaustion. The default limit is 8 continuation frames, which means a total of 9 frames (1 initial + 8 continuation). This limit can be adjusted by passing a different value to the
limit
parameter in theContinued.read
method. Setting the limit to 0 will only read the initial frame without any continuation frames. In order to change the default, you can redefine theLIMIT
constant in theProtocol::HTTP2::Continued
module, OR you can pass a different frame class to the framer.
v0.22.1
- Improved tracing performance by only tracing framer operations when in an active trace context.
- Updated
protocol-http
dependency version in gemspec. - Code modernization and documentation improvements.
v0.22.0
Added Priority Update Frame and Stream Priority
HTTP/2 has deprecated the priority frame and stream dependency tracking. This feature has been effectively removed from the protocol. As a consequence, the internal implementation is greatly simplified. The Protocol::HTTP2::Stream
class no longer tracks dependencies, and this includes Stream#send_headers
which no longer takes priority
as the first argument.
Optional per-request priority can be set using the priority
header instead, and this value can be manipulated using the priority update frame.
v0.21.0
- Breaking: Removed support for priority frame and stream dependencies. The
Protocol::HTTP2::Stream
class no longer tracks dependencies, andStream#send_headers
no longer takespriority
as the first argument. This change simplifies the internal implementation significantly as HTTP/2 priority frames have been deprecated in the protocol specification.
v0.20.0
- Improved performance of dependency management by avoiding linear search operations.
- Removed
traces
as a required dependency - it's now optional and only used when explicitly needed. - Added better documentation for
maximum_concurrent_streams
setting. - Restored 100% test coverage and exposed trace provider for optional tracing support.
v0.19.4
- Reduced the number of window update frames sent to improve network efficiency.
v0.19.3
- Improved window update frame handling and performance optimizations.
- Better implementation of
Window#inspect
for debugging.
v0.19.2
- Added traces to framer for better debugging and monitoring capabilities.
- Minor fixes to logging output.
v0.19.1
- Performance improvements for synchronized output handling.
- Extracted
window.rb
into separate module for better organization.
v0.19.0
- Removed unused
opened
hook that was never utilized. - Improved ASCII art diagram in documentation.
- Modernized gem structure and dependencies.
- Moved test fixtures into proper namespace organization.
v0.18.0
- Fixed
maximum_connection_streams
reference to use@remote_settings
. - Modernized gem structure and dependencies.
- Improved flush synchronization -
#flush
is already synchronized.
v0.17.0
- Exposed synchronize flush functionality for better concurrency control.
- Improved single line responsibility in code structure.
- Enhanced error handling - fail in
Connection#write_frames
if@framer
isnil
. - Fixed broken test cases.
v0.16.0
- Removed unused
bake-github-pages
gem dependency. - Modernized gem structure and build process.
- Updated development dependencies and workflows.
v0.15.0
- Achieved 100% test coverage with comprehensive test improvements.
- Fixed multiple minor bugs discovered through enhanced testing.
- Modernized gem structure and development workflow.
- Improved maximum concurrent stream handling - now defined only by local settings.
- Added missing require statements in version tests.
v0.14.0
- Added fuzzing support for the framer to improve robustness.
- Improved connection closed state determination.
- Enhanced error handling by ignoring expected errors.
- Optimized AFL (American Fuzzy Lop) latency handling.
v0.13.0
- Added methods for handling state transitions.
- Removed
pry
andrake
dependencies for cleaner gem structure. - Improved debugging and development workflow.
v0.12.0
- Updated supported Ruby versions.
- Significantly improved flow control handling, allowing connection local window to have desired high water mark.
- Enhanced window management for better performance.
v0.11.0
- Separated stream and priority logic to improve memory efficiency.
- Added Ruby 2.7 support to continuous integration.
- Improved code organization and performance.
v0.10.0
- Improved child stream handling - don't consider child in future stream priority computations.
- Enhanced state transitions to cache number of currently active streams.
- Performance optimizations for stream management.
v0.9.0
- Split window handling for sub-classes to improve modularity.
- Fixed Travis CI badge in documentation.
- Enhanced window management architecture.
v0.8.0
- Added support for synchronizing output to prevent headers from being encoded out of order.
- Improved header handling reliability and consistency.
v0.7.0
- Introduced explicit
StreamError
for stream reset codes. - Added
HeaderError
for tracking header-specific problems (e.g., invalid pseudo-headers). - Removed
send_failure
method as it was not useful. - Improved
header_table_size
handling. - Enhanced stream priority handling and parent/child relationships.
- Better flow control and priority management.
- Improved debugging output and error validation.
- Enhanced handling of
end_stream
and connection management. - Added stream buffer implementation with window update integration.
- Implemented basic stream priority handling.
- Improved goaway frame handling.
v0.6.0
- Better handling of GOAWAY frames.
- Improved connection termination procedures.
v0.5.0
- Improved handling of stream creation and push promises.
- Enhanced stream lifecycle management.
v0.4.0
- Improved validation of stream ID and error handling.
- Enhanced flow control implementation.
- Better RFC compliance with HTTP/2 specification.
- Fixed priority frame validation - fail if priority depends on own stream.
- Improved ping frame length checking.
- Enhanced logging messages and error reporting.
v0.3.0
- Added support for
ENABLE_CONNECT_PROTOCOL
setting. - Better handling of underlying IO being closed.
- Improved connection management and error handling.
- Enhanced coverage reporting.
v0.2.1
- Fixed header length and EOF handling.
- Improved error boundary conditions.
v0.2.0
- Significantly improved error handling throughout the library.
- Better exception management and error reporting.
v0.1.1
- Fixed HPACK usage and integration.
- Corrected header compression/decompression handling.
v0.1.0
- Initial migration of HTTP/2 protocol implementation from
http-protocol
. - Basic HTTP/2 frame parsing and generation.
- Integration with
protocol-hpack
for header compression. - Stream management and flow control foundation.
- Connection lifecycle management.
- Support for all standard HTTP/2 frame types.
- Basic client and server implementations.