[zeromq-dev] ZMQ_IDENTITY revisited

Martin Sustrik sustrik at 250bpm.com
Sun Jul 10 17:45:01 CEST 2011

On 07/10/2011 03:56 PM, Pieter Hintjens wrote:

> So IOW I'm volunteering to package / maintain 3.0, taking it to stable
> status. This should take us about 6 months from now.

Great! Thanks!

For reference, here's the list of changes introduced by 0MQ/3.0:

* Obsolete constants ZMQ_UPSTREAM and ZMQ_DOWNSTREAM removed. Use 
ZMQ_PUSH and ZMQ_PULL instead.

* Timeout in zmq_poll is in milliseconds instead of microseconds. This 
makes zmq_poll() compliant with POSIX poll()

* ZMQ_MCAST_LOOP removed. There's no support for multicast over loopback 
any more. Use IPC or TCP isntead.

* Pre-built devices and zmq_device() removed. Should be made available 
as a separate project(s).

* ZMQ_SWAP removed. Writing data to disk should be done on top of 0MQ, 
on inside it.

* C++ binding removed from the core. Now it's a separate project, same 
way as any other binding.

* zmq_send/zmq_recv was renamed zmq_sendmsg/zmq_recvmsg.

* POSIX-compliant zmq_send and zmq_recv introduced (uses raw buffer 
instead of message object).

* ZMQ_RECOVERY_IVL and ZMQ_RECOVERY_IVL_MSEC reconciled. The new option 
is named ZMQ_RECOVERY_IVL and the unit is milliseconds.

* Option types changed. Most of the numeric types are represented as 'int'.

* ZMQ_HWM split into ZMQ_SNDHWM and ZMQ_RCVHWM. This allows to control 
message flow separately for each direction.

* ZMQ_NOBLOCK renamed ZMQ_DONTWAIT. That makes it POSIX-compliant.

* ZMQ_MULTICAST_HOPS socket option added. Sets the appropriate field in 
IP headers of PGM packets.

* Subscription forwarding. Instead of filtering on consumer, 
subscription is moved as far as possible towards publisher and filtering 
is done there.

* ZMQ_XPUB, ZMQ_XSUB introduced. Allow to create 
subscription-forwarding-friendly intermediate devices.

* Add sockopt ZMQ_RCVTIMEO/ZMQ_SNDTIMEO. Allow to set timeout for 
blocking send/recv calls.

* LABEL flag added to the wire format. The flag distinguishes message 
parts used by 0MQ (labels) from user payload message parts.

* New wire format for REQ/REP pattern. First, bottom-of-the-stack 
message part is not needed any more -- LABEL flag is used instead. 
Second, peer IDs are 32-bit integers rather than UUIDs.

* REQ socket drops duplicate replies.

* Outstanding requests & replies associated with a client are dropped 
when the clients dies. Performance optimisation.

* Introduce ZMQ_ROUTER and ZMQ_DEALER sockets. These mimic the 
functionality of ZMQ_ROUTER and ZMQ_DEALER in 0MQ/2.1.x. Guarantees 
backward compatibility for exsiting code.

* Removed dependency on OS socketpair buffer size. No more asserts in 
mailbox.cpp because of low system limit of sockepair buffer size.

* Make pkg-config dependency conditional.


More information about the zeromq-dev mailing list