[zeromq-dev] libzmq v4.0.5

Pieter Hintjens ph at imatix.com
Fri Sep 26 10:45:21 CEST 2014

On Fri, Sep 26, 2014 at 4:01 AM, Goswin von Brederlow <goswin-v-b at web.de> wrote:

> And czmq has more of an OO design. So
> every data object has a send function. One isn't preferable over the
> other. They are all ment to coexist.

Sorry, just want to take this point. You triggered some PTSD now.

The old ZeroMQ v2 API, modeled on POSIX, had no structure. It changed
randomly and the versioning jumped around, trying to follow. In ZeroMQ
v3.x I started pushing it towards the same class model we use in CZMQ,
though not as aggressively.

This is what you see on the zmq man page today.

There are two exceptions. One, using void * for sockets and contexts.
There was simply no way people would have accepted that. As Brian
explained, the breakage in v3.0 and 3.1 was already extremely bad for
the project. (If you want to understand why I consider incompatible
versioned APIs to be insanity, just revisit history. ZeroMQ had its
phases of insanity, and they always wore version numbers. God, we had
2.0, 3.0, 3.1, and the-thing-previously-known-as-4.0, all with
different APIs, none of them stable.)

Two, changing the core socket API. ZeroMQ was still modeled as a
"socket" library. Today I think that was an error, and we should have
created a zmq_sock class.

However, rather than revisit the horror and trauma of trying to
explain to innocents why we had FOUR incompatible versions of the
library, and why today's forced coexistence is not insanity, I've
decided that it's much more fun to forget all this stress and move
ahead with loading the mothership up with the new engines we've been
building in CZMQ.

Over, and out.


More information about the zeromq-dev mailing list