A summary of data about the Ruby ecosystem.

Recent Releases of https://github.com/ruby-amqp/amq-protocol

https://github.com/ruby-amqp/amq-protocol - v2.9.0

Changes between 2.8.0 and 2.9.0 (Aug 26, 2026)

amq-protocol Now Requires Ruby 3.2

Ruby 3.0 and 3.1 are end of life. The URI parser now uses
URI.decode_uri_component, which Ruby 3.2 provides.

URI Components Are Percent-Decoded, Not Form-Decoded

AMQ::URI.parse decoded the username, password and virtual host with
CGI.unescape, so a password such as pa+ss was parsed as pa ss and failed
to authenticate. They are now percent-decoded; use %20 where a + used to
mean a space.

Contributed by @Garaio-REM.

GitHub issue: #89

- Ruby
Published by eglitobias about 1 month ago

https://github.com/ruby-amqp/amq-protocol - v2.8.0

Changes between 2.7.0 and 2.8.0 (Apr 25, 2026)

Performance Improvements in Frame Decoding and Encoding

Replacing x == nil with x.nil? in the frame layer hot path yields a consistent +15–18% throughput improvement in Frame.decode_header (called on every received frame) and +12–14% in HeartbeatFrame.encode, across Ruby 3.3, 3.4, and 4.0.

See benchmarks/BENCHMARKS.md for instructions on how to reproduce these numbers on your machine.

Contributed by @eglitobias.

GitHub issue: #86

- Ruby
Published by eglitobias about 1 month ago

https://github.com/ruby-amqp/amq-protocol - v2.7.0

Changes between 2.6.0 and 2.7.0 (Mar 31, 2026)

Channel.Close Predicates Now Return True Boolean

And not just truthy values (values that are not nil or false).

- Ruby
Published by michaelklishin 6 months ago

https://github.com/ruby-amqp/amq-protocol - v2.6.0

Changes between 2.5.1 and 2.6.0 (Mar 30, 2026)

Channel.Close Predicate Methods

Channel::Close now provides predicate methods for identifying common
channel closure reasons by reply code and text:

- Ruby
Published by michaelklishin 6 months ago

https://github.com/ruby-amqp/amq-protocol - v2.5.0

Changes between 2.4.0 and 2.5.0 (Dec 31, 2025)

Additional Consumer Hot Path Optimizations

A few more decode method optimizations for consumer delivery code paths.

- Ruby
Published by michaelklishin 9 months ago

https://github.com/ruby-amqp/amq-protocol - v2.5.1

Changes between 2.5.0 and 2.5.1 (Jan 19, 2026)

Windows Installation Fixes

2.4.0 and 2.5.0 versions unintentionally included files that were
symlinks, which caused installation on Windows to fail.

- Ruby
Published by michaelklishin 9 months ago

https://github.com/ruby-amqp/amq-protocol - v2.4.0

Changes between 2.3.4 and 2.4.0 (Dec 30, 2025)

Performance Improvements

Optimized encoding and decoding hot paths:

  • Built-in Q>/q> packing/unpacking directives are 6-7x faster than the original implementation (that originally targeted Ruby 1.8.x)
  • Switched to unpack1 instead of unpack().first throughout
  • Use byteslice instead of slice for binary string operations
  • Use getbyte for single byte access (4x faster than alternatives)
  • Adopted frozen_string_literal pragma

The improvements on Ruby 3.4 are very meaningful:

  • AMQ::Pack.pack_uint64_big_endian: about 6.6x faster
  • AMQ::Pack.unpack_uint64_big_endian: about 7.2x faster
  • Basic.Deliver.decode: about 1.7x faster
  • Basic.Ack/Nack/Reject.encode: about 2.5x faster

- Ruby
Published by michaelklishin 9 months ago