[zeromq-dev] multi-part messages
Martin Lucina
martin at lucina.net
Mon Jan 23 04:01:39 CET 2012
skaller at users.sourceforge.net said:
> I see no technical reason that you cannot *add* an array based interface:
> two extra functions.
Sure, there is no technical reason, but it's a question of demand and
(more importantly) API maintenance.
Regarding demand, if enough people see the benefit in an array-based
sendmmsg() / recvmmsg() interface, then such an interface can be added.
Regarding API maintenance, we have the same problem as the Linux kernel;
once an API is added, it will be used by applications, hence that API will
have to stick around "for ever" (but see below).
> Having done that you could deprecate the old interface.
>
> In 4.x you can remove it from the core API. It can still be supported
> by a "legacy" API. After all the "legacy" API would simply populate
> the array and the call send function (and the reverse for recv).
That's how it works in theory. In practice once you have a sizeable amount
of users, you have to keep such legacy APIs around for a long time -
deprecation becomes a slow process.
Anyhow, in this particular case, IMHO, the sendmmsg () / recvmmsg () APIs
can coexist nicely with the existing APIs and we *don't* want to deprecate
ZMQ_MORE since it's the only way to write devices which can handle
multi-part messages in a generic fashionb with the current model.
> Just as a matter of curiosity .. "how much" 0MQ use is from C?
> C++? Other languages? [The question means: is the C API
> primarily for application programming, or it there primarily
> to support bindings to better languages?]
That's kind of like asking "how many people still program in C". A lot :-)
The libzmq C API serves 4 purposes:
a) a lowest common denominator baseline
b) the API that language binding developers use
c) for those application programmers who are familiar with the POSIX APIs
and do not need/want anything more abstract
d) for those application programmers that need the performance and control
of using it directly from C
IMHO one of the reasons ZeroMQ is so successful is precisely because we
decided early on to stick with a POSIX-like C API. There are a lot of
developers out there who have some degree of familiarity with these APIs,
so it makes the barriers to adoption (how quickly can I get "something"
working) very low.
-mato
More information about the zeromq-dev
mailing list