First pre-release version (see below) of amqp gem 0.8.0 is now available from <a href="http://rubygems.org">rubygems.org</a>.<br>Get it with<br><br>  gem install amqp --pre<br><br>and try using it as a drop-in replacement for 0.6 or 0.7. If you encounter any issues, please post them<br>

to <a href="https://github.com/ruby-amqp/amqp/issues">https://github.com/ruby-amqp/amqp/issues</a><br><br><br>== Highlights<br><br>* amqp gem now implements version 0.9.1 of AMQP. This alone brings many features.<br>* Support for several RabbitMQ-specific AMQP 0.9.1 extensions [1]<br>


* many existing methods are refined and updated to be consistent with other methods in the library<br>* there is now clear line between what is part of public gem API and what is a subject to change<br>* significant documentation improvements<br>

* performance &amp; memory usage improvements (and this a lot of room to improve now)<br>* test suite with plenty of integration examples that use AMQP broker<br><br><br>== Backwards compatibility<br><br>This release introduces many features<br>

and API improvements but also tries to be as backwards-compatible as possible. Unfortunately,<br>amqp 0.7.x and earlier did not really draw the line between what<br>other libraries and applications can use and what is an implementation detail. That&#39;s why we don&#39;t<br>

claim to be 100% backwards-compatible but go extra miles to make sure even controversial<br>methods/features/use cases of key classes work as before.<br><br>Note that RC1 does not include TLS support yet. It definitely will be brought back before the final<br>

release.<br><br><br>== Before you upgrade<br><br>Because of a switch to AMQP 0.9.1, before you upgrade make sure to check what version of RabbitMQ<br>you are running. Even most recent released versions of Ubuntu and Debian still ship with versions as old as<br>

1.7.2 and 1.8.0. 1.7.2 does not support AMQP 0.9.1 and thus won&#39;t work with amqp gem 0.8.0.<br><br>Documentation for 0.8.0 is up at <a href="http://rubydoc.info/github/ruby-amqp/amqp/master/frames">http://rubydoc.info/github/ruby-amqp/amqp/master/frames</a><br>

We are still in the process of writing migration guide, tutorials, adding even more examples and improving<br>some areas previous versions did not address very well (or at all), like connection loss handing, separate<br>
error handling for connections and channels and so on.<br>
<br>Expect several more RC releases before final 0.8.0.<br><br><br>== So, is it an RC or not?<br><br>version has to be 0.8.0.rc1 because we previously pushed 0.8.0.pre only to learn that you cannot re-publish gems<br>even if you `gem yank` them. Rubygems picks 0.8.0.pre over 0.8.0.beta1 and 0.8.0.pre.beta1 (because comparison for alphanumeric segment<br>

is alphabetical), so we had to go with 0.8.0.rc1.<br><br>Even though this version should have been beta1, we are actually very close to RC phase.<br><br><br>Below is brief  changelog for this release. We hope you have a smooth upgrade.<br>

<br>= Changelog for 0.8.0<br><br>  * [API] AMQP#Logger is deprecated. It will be removed before 1.0 release.<br>  * [API] AMQP#fork is deprecated. It will be removed before 1.0 release.<br>  * [API] AMQP::RPC is deprecated. It will be removed before 1.0 release.<br>

  * [FEATURE] Significant improvements to the documentation<br>  * [FEATURE] Support for RabbitMQ extensions to AMQP 0.9.1<br>  * [API] AMQP::Exchange#publish now accepts (an optional) block that is called as soon as message<br>

          is considered published (EventMachine loop has pushed payload down the network stack).<br>  * [API] AMQP::Channel.new now accepts (an optional) block and yields newly opened channel to it as soon as<br>          channel.open-ok arrives from the broker.<br>

  * [API] AMQP::Header#ack now can acknowledge multiple deliveries<br>  * [API] AMQP::Exchange#delete now takes (an optional) block that is called when exchange.delete-ok response arrives.<br>  * [API] AMQP::Header now implements #to_hash<br>

  * [API] AMQP::Queue#pop block now can take 1, 2 or 3 arguments.<br>      1 argument means handler is only interested in content payload<br>      2 arguments mean handler is interested in headers and the content<br>      3 arguments mean handler is receives headers, content and AMQP method frame<br>

  * [API] AMQP::Queue#purge  now takes an optional block which is called when queue.purge-ok response arrives.<br>  * [API] AMQP::Queue#delete now takes an optional block which is called when queue.delete-ok response arrives.<br>

  * [API] AMQP::Queue#delete now accepts :nowait option.<br>  * [API] AMQP::Queue#unbind now takes an optional block which is called when queue.unbind-ok response arrives.<br>  * [API] AMQP::Queue#unbind now accepts :routing_key as alias to :key. we believe it is a good idea to use AMQP terms.<br>

  * [API] AMQP::Channel#prefetch now takes (an optional) 2nd parameter that specifies<br>          that QoS settings should be applied to underlying connection, as well as optional callback.<br>  * [API] AMQP::Channel#recover now takes (an optional) callback that is called when<br>

          basic.recover-ok is received.<br>  * [API] AMQP::Frame is gone.<br>  * [API] AMQP::Buffer is gone. Serialization &amp; framing are now handled primarily by amq-protocol.<br>  * [FEATURE] AMQP gem is now AMQP 0.9.1 compatible: it runs atop of amq-client gem<br>

  * [API] AMQP::Queue#publish is deprecated.<br>  * [API] Name argument for AMQP::Queue.new and Channel#queue is optional.<br clear="all"><br><br>1: <a href="http://www.rabbitmq.com/blog/2011/03/01/ruby-amqp-benchmarks/">http://www.rabbitmq.com/blog/2011/03/01/ruby-amqp-benchmarks/</a><br>

-- <br>MK<br>