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 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207
|
## Changes between 2.5.0 and 2.5.1 (Jan 1, 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.
## 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.
## 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
## Changes between 2.3.3 and 2.3.4 (May 12, 2025)
### (Forward) Compatibility with Ruby 3.5
Contributed by @Earlopain.
GitHub issue: [#80](https://github.com/ruby-amqp/amq-protocol/pull/80)
## Changes between 2.3.2 and 2.3.3 (February 17, 2025)
### Improved Compatibility with Ruby 3.4
Contributed by @BenTalagan.
GitHub issue: [#79](https://github.com/ruby-amqp/amq-protocol/pull/79)
### Support Binary-Encoded Frozen Strings for Payloads
Contributed by @djrodgerspryor.
GitHub issue: [#78](https://github.com/ruby-amqp/amq-protocol/pull/78)
## Changes between 2.3.1 and 2.3.2 (July 10th, 2020)
### Safer Encoding Handling When Serialising Message Properties and Headers
Contributed by @bbascarevic-tti.
GitHub issue: [ruby-amqp/amq-protocol#76](https://github.com/ruby-amqp/amq-protocol/issues/76)
## Changes between 2.3.0 and 2.3.1 (April 8th, 2020)
### Support for connection.update-secret
Used together with the `rabbitmq-auth-backend-oauth2` plugin.
### Squashed a gemspec Warning
GitHub issue: [ruby-amqp/amq-protocol#75](https://github.com/ruby-amqp/amq-protocol/issues/75).
## Changes between 2.2.0 and 2.3.0 (Jan 8th, 2018)
### Support for Additional URI Query Parameters
GitHub issue: [#67](https://github.com/ruby-amqp/amq-protocol/issues/67), [#68](https://github.com/ruby-amqp/amq-protocol/issues/68), [#69](https://github.com/ruby-amqp/amq-protocol/issues/69).
Contributed by Andrew Babichev.
## Changes between 2.1.0 and 2.2.0 (May 11th, 2017)
### Timestamps are Encoded as 64-bit Unsigned Integers
This is a potentially **breaking change**. It is recommended that
all applications that use this gem and pass date/time values in message
properties or headers are upgraded at the same time.
GitHub issue: [#64](https://github.com/ruby-amqp/amq-protocol/issues/64).
Contributed by Carl Hoerberg.
## Changes between 2.0.0 and 2.1.0 (January 28th, 2017)
### Ruby Warnings Squashed
Contributed by Akira Matsuda.
GitHub issue: [#62](https://github.com/ruby-amqp/amq-protocol/pull/62)
### Byte Array Decoding
Byte array values in types now can be
decoded (to the extent Ruby type system
permits) by this library.
GitHub issue: [#58](https://github.com/ruby-amqp/amq-protocol/issues/58)
## Changes between 1.9.x and 2.0.0
2.0.0 has **breaking changes** in header encoding.
### Signed Integer Encoding in Headers
Integer values in headers are now encoded as signed 64-bit
(was unsigned 32-bit previously, unintentionally).
This is a breaking change: consuming messages with integers in headers
published with older versions of this library will break!
### Signed 16 Bit Integer Decoding
Signed 16 bit integers are now decoded correctly.
### Signed 8 Bit Integer Decoding
Signed 8 bit integers are now decoded correctly.
Contributed by Benjamin Conlan.
## Changes between 1.8.0 and 1.9.0
### Performance Improvements in AMQ::BitSet
`AMQ::BitSet#next_clear_bit` is now drastically more efficient
(down from 6 minutes for 10,000 iterations to 4 seconds for 65,536 iterations).
Contributed by Doug Rohrer, Dave Anderson, and Jason Voegele from
[Neo](http://www.neo.com).
## Changes between 1.7.0 and 1.8.0
### Body Framing Fix
Messages exactly 128 Kb in size are now framed correctly.
Contributed by Nicolas Viennot.
## Changes between 1.6.0 and 1.7.0
### connection.blocked Support
`connection.blocked` AMQP 0.9.1 extension is now supported
(should be available as of RabbitMQ 3.2).
## Changes between 1.0.0 and 1.1.0
### Performance Enhancements
Encoding of large payloads is now done more efficiently.
Contributed by Greg Brockman.
## Changes between 1.0.0.pre6 and 1.0.0.pre7
### AMQ::Settings
`AMQ::Settings` extracts settings merging logic and AMQP/AMQPS URI parsing from `amq-client`.
Parsing follows the same convention amqp gem and RabbitMQ Java client follow.
Examples:
``` ruby
AMQ::Settings.parse_amqp_url("amqp://dev.rabbitmq.com") # => vhost is nil, so default (/) will be used
AMQ::Settings.parse_amqp_url("amqp://dev.rabbitmq.com/") # => vhost is an empty string
AMQ::Settings.parse_amqp_url("amqp://dev.rabbitmq.com/%2Fvault") # => vhost is /vault
AMQ::Settings.parse_amqp_url("amqp://dev.rabbitmq.com/production") # => vhost is production
AMQ::Settings.parse_amqp_url("amqp://dev.rabbitmq.com/a.b.c") # => vhost is a.b.c
AMQ::Settings.parse_amqp_url("amqp://dev.rabbitmq.com/foo/bar") # => ArgumentError
```
### AMQ::Protocol::TLS_PORT
`AMQ::Protocol::TLS_PORT` is a new constant that contains default AMQPS 0.9.1 port,
5671.
|