[zeromq-dev] State of libzmq versioning

Luca Boccassi luca.boccassi at gmail.com
Thu Feb 18 14:57:09 CET 2016


Yes, the size is the same, but if the alignment changes then it's not
binary compatible I'm afraid. It is common for zmq_msg_t to be
allocated on the application's stack and then passed by reference to
the library to be manipulated. Given the new version imposes stricter
constraints on the compiler, I'm told that on x86 it will (probably)
work fine. But on other architectures it might not, as the old library
(and applications) and the new library will have been built under
different assumptions and constraints.

I'm not in any way familiar with SPARC, so I can only desume from the
inline comment that having a pointer will force the compiler to make
different (and stricter) choices regarding alignment.

Kind regards,
Luca Boccassi

On 18 February 2016 at 13:40, Doron Somech <somdoron at gmail.com> wrote:
> So this doesn't change the size of the zmq_msg_t (at it is a union), so
> internally there is no difference.
> Anyway I'm not sure what is the reason for this extra pointer.
>
> On Thu, Feb 18, 2016 at 2:06 PM, Luca Boccassi <luca.boccassi at gmail.com>
> wrote:
>>
>> Cool stuff!
>>
>> I was having a look at the changes in the public headers between 4.1
>> and master, and there _might_ be a backward-incompatible ABI change
>> between 4.1 and 4.2:
>>
>> -typedef struct zmq_msg_t {unsigned char _ [64];} zmq_msg_t;
>> +/* union here ensures correct alignment on architectures that require it,
>> e.g.
>> + * SPARC
>> + */
>> +typedef union zmq_msg_t {unsigned char _ [64]; void *p; } zmq_msg_t;
>>
>> Given zmq_msg_t is very often allocated on the calling application's
>> stack, having a different alignment between the application and the
>> library might break stuff if the library is making assumptions based
>> on it. Haven't delved deeper into it, does anyone have a better
>> insight in how zmq_msg_t is handled internally?
>>
>> Kind regards,
>> Luca Boccassi
>>
>> On 18 February 2016 at 09:12, Pieter Hintjens <ph at imatix.com> wrote:
>> > libzmq versioning is unchanged for years. There's a 4.1 stable fork
>> > that we apply fixes to, and will make one or two more releases of.
>> > There's 4.2 arriving on master, with a mix of stable API and new draft
>> > API. One thing we will do in 4.2 is clearly mark the draft API as
>> > such, and perhaps not build it by default, from source packages. We're
>> > using the same approach in CZMQ and other projects now.
>> >
>> > The goal with this is to allow shipment of the current master without
>> > having 100% stability on the API. There are things we know we'll need
>> > to refine and improve.
>> >
>> > -Pieter
>> >
>> > On Thu, Feb 18, 2016 at 12:04 AM, Mario Steinhoff
>> > <steinhoff.mario at gmail.com> wrote:
>> >> So my question about the state of zmq versioning drifted in some kind
>> >> of we-need-more-automation-for-the-docs initiative. Awesome :)
>> >>
>> >> I'd love to help with it but I am already busy with the jzmq stuff for
>> >> now.
>> >>
>> >> But the first question is still unanswered:
>> >>
>> >>> With all this, whats the current status on libzmq versioning?
>> >>
>> >> Or does no answer mean that all my assumptions were correct?
>> >>
>> >> 2016-02-17 18:48 GMT+01:00 Pieter Hintjens <ph at imatix.com>:
>> >>> We could use this, yes.
>> >>>
>> >>> Volunteers? :)
>> >>>
>> >>> On Wed, Feb 17, 2016 at 3:45 PM, Michel Pelletier
>> >>> <pelletier.michel at gmail.com> wrote:
>> >>>> Read the docs is fantastic, I used it for pyczmq and it works great.
>> >>>> Also
>> >>>> it's not just software or a hosting service, the author (a local here
>> >>>> in my
>> >>>> neck of the woods) hosts "write the docs" conferences focusing on
>> >>>> writing
>> >>>> and producing good documentation:
>> >>>>
>> >>>> http://www.writethedocs.org/
>> >>>>
>> >>>> All together it's a powerful documentation ecosystem.
>> >>>>
>> >>>> -Michel
>> >>>>
>> >>>> On Wed, Feb 17, 2016 at 6:17 AM, Pieter Hintjens <ph at imatix.com>
>> >>>> wrote:
>> >>>>>
>> >>>>> We have generators of various kinds: gitdown, mkman, which zproject
>> >>>>> uses/plugs into. The commonality is text files that turn into man
>> >>>>> pages and then various other formats that can be sent anywhere. I
>> >>>>> don't think we need to *standardise* so much as decide on a format,
>> >>>>> a
>> >>>>> host, and a safe way to upload after successful CI builds. We can
>> >>>>> have
>> >>>>> many of these.
>> >>>>>
>> >>>>> On Wed, Feb 17, 2016 at 12:05 PM, Arnaud Loonstra
>> >>>>> <arnaud at sphaero.org>
>> >>>>> wrote:
>> >>>>> > Perhaps we can standardise on this? Perhaps even include some
>> >>>>> > generators for it in zproject?
>> >>>>> > I was starting to use Sphinx for Pyre as well. Now using it for
>> >>>>> > multiple projects. I'm not familiar with how it works with other
>> >>>>> > languages but for Python it's great.
>> >>>>> >
>> >>>>> > On 2016-02-17 10:39, Doron Somech wrote:
>> >>>>> >> Take a look at readthedocs.org [9], it is what NetMQ is using and
>> >>>>> >> completely automated. You manage the docs in the git repository.
>> >>>>> >>
>> >>>>> >> On Wed, Feb 17, 2016 at 10:41 AM, Pieter Hintjens <ph at imatix.com
>> >>>>> >> [10]>
>> >>>>> >> wrote:
>> >>>>> >>
>> >>>>> >>> Hmm, the tools we use to build the online docs are old and
>> >>>>> >>> creaky,
>> >>>>> >>> and
>> >>>>> >>> date from long before we had neat CI automation. Meaning, we
>> >>>>> >>> update
>> >>>>> >>> the api site manually.
>> >>>>> >>>
>> >>>>> >>> Im doing that now. I think its time we look at pushing this
>> >>>>> >>> directly
>> >>>>> >>> to github pages, from Travis.
>> >>>>> >>>
>> >>>>> >>> On Wed, Feb 17, 2016 at 12:47 AM, Mario Steinhoff
>> >>>>> >>> <steinhoff.mario at gmail.com [1]> wrote:
>> >>>>> >>> > Hi everyone,
>> >>>>> >>> >
>> >>>>> >>> > I am a bit confused about the available information on libzmq
>> >>>>> >>> versions.
>> >>>>> >>> >
>> >>>>> >>> > The page at api.zeromq.org [2] says that we have:
>> >>>>> >>> >
>> >>>>> >>> > - 4.2 (master)
>> >>>>> >>> > - 4.1 (rc)
>> >>>>> >>> > - 4.0 (stable)
>> >>>>> >>> > - 3.2 (stable)
>> >>>>> >>> >
>> >>>>> >>> > On the download page 4.0 is missing:
>> >>>>> >>> >
>> >>>>> >>> > - a version-less master which "should be stable almost all the
>> >>>>> >>> time" (4.2?)
>> >>>>> >>> > - 4.1.4 ("stable")
>> >>>>> >>> > - 3.2.5 ("legacy stable")
>> >>>>> >>> >
>> >>>>> >>> > In libzmq, the NEWS file on master seems to be outdated (last
>> >>>>> >>> update
>> >>>>> >>> > in 2014). The doc folder in libzmq seems to be maintained but
>> >>>>> >>> > not
>> >>>>> >>> in
>> >>>>> >>> > sync with api.zeromq.org [3] (I checked today and some changes
>> >>>>> >>> from the
>> >>>>> >>> > last commit in that folder are not present on the site).
>> >>>>> >>> >
>> >>>>> >>> > There are also maintained stabilization forks as per C4.1 for
>> >>>>> >>> libzmq,
>> >>>>> >>> > e.g. zeromq4-x (which contains 4.0?), 4-1, and 3-x (which
>> >>>>> >>> contains
>> >>>>> >>> > 3.2?).
>> >>>>> >>> >
>> >>>>> >>> > And then there is this article: http://hintjens.com/blog:85
>> >>>>> >>> > [4]
>> >>>>> >>> which
>> >>>>> >>> > suggests in a very compelling way that software versions suck
>> >>>>> >>> > and
>> >>>>> >>> to
>> >>>>> >>> > ditch them altogether (yes I agree) but I cant find those
>> >>>>> >>> > SBOMs
>> >>>>> >>> > anywhere so I assume that experiment did not went very far.
>> >>>>> >>> >
>> >>>>> >>> > With all this, whats the current status on libzmq versioning?
>> >>>>> >>> >
>> >>>>> >>> > Am I understanding right that:
>> >>>>> >>> >
>> >>>>> >>> > - The libzmq repository is always the latest and greatest, and
>> >>>>> >>> 4.2
>> >>>>> >>> > looks like the last version Ill ever need™, its always stable
>> >>>>> >>> and
>> >>>>> >>> > follows the raw-draft-stable-deprecated process so its also
>> >>>>> >>> always
>> >>>>> >>> > backwards compatible.
>> >>>>> >>> >
>> >>>>> >>> > - Stable releases are maintained for 3.2, 4.0, and 4.1 and
>> >>>>> >>> sometimes
>> >>>>> >>> > bugfixes get backported from 4.2.
>> >>>>> >>> >
>> >>>>> >>> > - Release notes are only maintained for stable releases?
>> >>>>> >>> >
>> >>>>> >>> > Is the outdated API site a bug or a feature? I am currently
>> >>>>> >>> > using
>> >>>>> >>> the
>> >>>>> >>> > text files in doc/ but I like to look at the fancy ZMQ logo
>> >>>>> >>> > when
>> >>>>> >>> I
>> >>>>> >>> > browse the API reference :-)
>> >>>>> >>> >
>> >>>>> >>> > Cheers
>> >>>>> >>> > Mario
>> >>>>> >>> > _______________________________________________
>> >>>>> >>> > zeromq-dev mailing list
>> >>>>> >>> > zeromq-dev at lists.zeromq.org [5]
>> >>>>> >>> > http://lists.zeromq.org/mailman/listinfo/zeromq-dev [6]
>> >>>>> >>> _______________________________________________
>> >>>>> >>> zeromq-dev mailing list
>> >>>>> >>> zeromq-dev at lists.zeromq.org [7]
>> >>>>> >>> http://lists.zeromq.org/mailman/listinfo/zeromq-dev [8]
>> >>>>> >>
>> >>>>> >>
>> >>>>> >>
>> >>>>> >> Links:
>> >>>>> >> ------
>> >>>>> >> [1] mailto:steinhoff.mario at gmail.com
>> >>>>> >> [2] http://api.zeromq.org
>> >>>>> >> [3] http://api.zeromq.org
>> >>>>> >> [4] http://hintjens.com/blog:85
>> >>>>> >> [5] mailto:zeromq-dev at lists.zeromq.org
>> >>>>> >> [6] http://lists.zeromq.org/mailman/listinfo/zeromq-dev
>> >>>>> >> [7] mailto:zeromq-dev at lists.zeromq.org
>> >>>>> >> [8] http://lists.zeromq.org/mailman/listinfo/zeromq-dev
>> >>>>> >> [9] http://readthedocs.org
>> >>>>> >> [10] mailto:ph at imatix.com
>> >>>>> >
>> >>>>> > _______________________________________________
>> >>>>> > zeromq-dev mailing list
>> >>>>> > zeromq-dev at lists.zeromq.org
>> >>>>> > http://lists.zeromq.org/mailman/listinfo/zeromq-dev
>> >>>>> _______________________________________________
>> >>>>> zeromq-dev mailing list
>> >>>>> zeromq-dev at lists.zeromq.org
>> >>>>> http://lists.zeromq.org/mailman/listinfo/zeromq-dev
>> >>>>
>> >>>>
>> >>>>
>> >>>> _______________________________________________
>> >>>> zeromq-dev mailing list
>> >>>> zeromq-dev at lists.zeromq.org
>> >>>> http://lists.zeromq.org/mailman/listinfo/zeromq-dev
>> >>>>
>> >>> _______________________________________________
>> >>> zeromq-dev mailing list
>> >>> zeromq-dev at lists.zeromq.org
>> >>> http://lists.zeromq.org/mailman/listinfo/zeromq-dev
>> >>
>> >>
>> >>
>> >> --
>> >> Mario Steinhoff
>> >> https://github.com/msteinhoff
>> >> https://twitter.com/msteinhofff
>> >> T: +49 173 7265158
>> >> In der Gelpe 79
>> >> 42349 Wuppertal
>> >> _______________________________________________
>> >> zeromq-dev mailing list
>> >> zeromq-dev at lists.zeromq.org
>> >> http://lists.zeromq.org/mailman/listinfo/zeromq-dev
>> > _______________________________________________
>> > zeromq-dev mailing list
>> > zeromq-dev at lists.zeromq.org
>> > http://lists.zeromq.org/mailman/listinfo/zeromq-dev
>> _______________________________________________
>> zeromq-dev mailing list
>> zeromq-dev at lists.zeromq.org
>> http://lists.zeromq.org/mailman/listinfo/zeromq-dev
>
>
>
> _______________________________________________
> zeromq-dev mailing list
> zeromq-dev at lists.zeromq.org
> http://lists.zeromq.org/mailman/listinfo/zeromq-dev
>



More information about the zeromq-dev mailing list