I'm happy to announce the release of 0MQ version 2.0.7.
The new version is available immediately to download on the website, at:
Please note that due to incompatible API and ABI changes in this release,
all language bindings will need to be updated to work with 0MQ 2.0.7. As
these are maintained by the community it may take a few days for everyone
to catch up.
A big thank you to all our contributors, and special thanks to Martin
Sustrik for putting it all together!
Highlights of the 2.0.7 release:
* The core documentation has been updated with many clarifications, especially
in the description of the functionality provided by the different socket
* The version of OpenPGM bundled with 0MQ has been updated to the 2.1.26 release.
* GCC-isms have been removed from the code and build system across the board;
0MQ should now build with no issues when using compilers other than GCC.
* The zmq_init() function now has only a single parameter; the number of 0MQ
I/O threads to create in the context being initialised. The app_threads and
flags parameters have been removed.
* The ZMQ_P2P socket type has been renamed to ZMQ_PAIR.
* The ZMQ_LWM socket option has been removed; the low water mark for a socket
is now computed automatically by 0MQ.
* A zmq_getsockopt() function has been added.
* Multi-hop request/reply is fully supported. This feature allows the insertion
of device(s) between ZMQ_REQ and ZMQ_REP sockets thus enabling scenarios
such as multi-threaded server, shared service queue, and other interesting
messaging topologies. The entire infrastructure is transparent to
* Multi-part messages. A 0MQ message may now be composed of 1 or more message
parts; each message part is an independent zmq_msg_t in its own right. 0MQ
ensures atomic delivery of messages; peers shall receive either all message
parts of a message or none at all.
This feature allows for seamless zero-copy message passing when data are
scattered in memory, and is an important building block for multi-hop
* Context termination and ETERM. The zmq_term() function has been
changed to interrupt any blocking operations on open sockets, causing them to
return the newly defined ETERM error code. This allows for orderly
application termination, especially when multiple application threads are
As always, a full list of changes may be found in the ChangeLog included in
the distribution tarball, or in Git.
Martin "mato" Lucina