ZeroMQ v4.2.0 Release Notes

Release Date: 2016-11-04 // over 7 years ago
  • ๐Ÿš€ 0MQ version 4.2.0 stable, released on 2016/11/04

    For Pieter. Thanks for making all of this possible.

    "Tell them I was a writer.
    A maker of software.
    A humanist. A father.
    And many things.
    But above all, a writer.
    Thank You. :)"

    - Pieter Hintjens

    ๐Ÿš€ This release introduces new APIs, but it is ABI compatible with
    libzmq 4.1.2 and up.

    Note for ARM and SPARC users: an alignment problem in zmq_msg_t that could in
    some cases and on some CPUs cause a SIGBUS error was solved, but it requires
    a rebuild of your application against the 4.2.0 version of include/zmq.h.
    To clarify, this change does not affect the internals of the library but only
    the public definition of zmq_msg_t, so there is no ABI incompatibility.

    ๐Ÿ”’ Security with Curve is now available by default thanks to Tweetnacl sources:
    https://tweetnacl.cr.yp.to/index.html
    ๐Ÿ— Libsodium is still fully supported but has to be enabled with the build flag
    ๐Ÿ“ฆ --with-libsodium. Distribution and package maintainers are encouraged to use
    ๐Ÿ”’ libsodium so that the security implementation can be audited and maintained
    separately.

    ๐Ÿ†• New Context options:

    • ZMQ_MAX_MSGSZ
    • ZMQ_BLOCKY

    See doc/zmq_ctx_set.txt and doc/zmq_ctx_get.txt for details.

    ๐Ÿ†• New Socket options:

    • ZMQ_HANDSHAKE_IVL
    • ZMQ_SOCKS_PROXY
    • ZMQ_XPUB_NODROP
    • ZMQ_XPUB_MANUAL
    • ZMQ_XPUB_WELCOME_MSG
    • ZMQ_STREAM_NOTIFY
    • ZMQ_INVERT_MATCHING
    • ZMQ_HEARTBEAT_IVL
    • ZMQ_HEARTBEAT_TTL
    • ZMQ_HEARTBEAT_TIMEOUT
    • ZMQ_XPUB_VERBOSER
    • ZMQ_CONNECT_TIMEOUT
    • ZMQ_TCP_MAXRT
    • ZMQ_THREAD_SAFE
    • ZMQ_MULTICAST_MAXTPDU
    • ZMQ_VMCI_BUFFER_SIZE
    • ZMQ_VMCI_BUFFER_MIN_SIZE
    • ZMQ_VMCI_BUFFER_MAX_SIZE
    • ZMQ_VMCI_CONNECT_TIMEOUT
    • ZMQ_USE_FD

    See doc/zmq_setsockopt.txt and doc/zmq_getsockopt.txt for details.

    ๐Ÿ†• New CURVE helper function to derive z85 public key from secret key:
    zmq_curve_public

    ๐Ÿ†• New cross-platform atomic counter helper functions:
    zmq_atomic_counter_new, zmq_atomic_counter_set, zmq_atomic_counter_inc,
    zmq_atomic_counter_dec, zmq_atomic_counter_value, zmq_atomic_counter_destroy
    See doc/zmq_atomic_*.txt for details.

    ๐Ÿ†• New DRAFT APIs early-release mechanism. New APIs will be introduced early
    ๐Ÿš€ in public releases, and until they are stabilized and guaranteed not to
    ๐Ÿ”„ change anymore they will be unavailable unless the new build flag
    --enable-drafts is used. This will allow developers and early adopters to
    โœ… test new APIs before they are finalized.
    NOTE: as the name implies, NO GUARANTEE is made on the stability of these APIs.
    They might change or disappear entirely. Distributions are recommended NOT to
    ๐Ÿ— build with them.

    ๐Ÿ†• New socket types have been introduced in DRAFT state:
    ZMQ_SERVER, ZMQ_CLIENT, ZMQ_RADIO, ZMQ_DISH, ZMQ_GATHER, ZMQ_SCATTER,
    ZMQ_DGRAM
    All these sockets are THREAD SAFE, unlike the existing socket types. They do
    NOT support multipart messages (ZMQ_SNDMORE/ZMQ_RCVMORE).
    ZMQ_RADIO, ZMQ_DISH and ZMQ_DGRAM also support UDP as transport,
    ๐Ÿ‘€ both unicast and multicast. See doc/zmq_udp.txt for more details.
    ๐Ÿ†• New methods to support the new socket types functionality:
    zmq_join, zmq_leave, zmq_msg_set_routing_id, zmq_msg_routing_id,
    zmq_msg_set_group, zmq_msg_group
    ๐Ÿ‘€ See doc/zmq_socket.txt for more details.

    ๐Ÿ†• New poller mechanism and APIs have been introduced in DRAFT state:
    zmq_poller_new, zmq_poller_destroy, zmq_poller_add, zmq_poller_modify,
    zmq_poller_remove, zmq_poller_wait, zmq_poller_wait_all, zmq_poller_add_fd
    zmq_poller_modify_fd, zmq_poller_remove_fd
    and a new supporting struct typedef: zmq_poller_event_t
    ๐Ÿ‘ They support existing socket type, new thread-safe socket types and file
    descriptors (cross-platform).
    ๐Ÿ“š Documentation will be made available in the future before these APIs are declared
    stable.

    ๐Ÿ†• New cross-platform timers helper functions have been introduced in DRAFT state:
    zmq_timers_new, zmq_timers_destroy, zmq_timers_add, zmq_timers_cancel,
    zmq_timers_set_interval, zmq_timers_reset, zmq_timers_timeout,
    zmq_timers_execute
    and a new supporting callback typedef: zmq_timer_fn

    ๐Ÿ›  Many, many bug fixes. The most important fixes are backported and captured in the
    ๐Ÿ”Š 4.1.x and 4.0.x changelogs.

    ๐Ÿš€ 0MQ version 4.2.0 rc1, released on 2016/11/01

    • ๐Ÿ‘€ Many changes, see ChangeLog.

    ๐Ÿš€ 0MQ version 4.1.6 stable, released on 2016/11/01

    • ๐Ÿ›  Fixed #2051 - getifaddrs can fail with ECONNREFUSED
    • ๐Ÿ›  Fixed #2091 - testutil.hpp fails to build on Windows XP
    • ๐Ÿ›  Fixed #2096 - add tests/CMakeLists.in and version.rc.in to dist tar
    • ๐Ÿ›  Fixed #2107 - zmq_connect with IPv6 "source:port;dest:port" broken
    • Fixed #2117 - ctx_term assert with inproc zmq_router connect-before-bind
    • ๐Ÿ›  Fixed #2158 - Socket monitor uses internal Pair from multiple threads
    • ๐Ÿ›  Fixed #2161 - messages dropped due to HWM race
    • Fixed #1325 - alignment issue with zmq_msg_t causes SIGBUS on SPARC and ARM

    ๐Ÿš€ 0MQ version 4.1.5 stable, released on 2016/06/17

    • ๐Ÿ›  Fixed #1673 - CMake on Windows put PDB in wrong directory.
    • ๐Ÿ›  Fixed #1723 - Family is not set when resolving NIC on Android.
    • ๐Ÿ›  Fixed #1608 - Windows 7 TCP slow start issue.
    • ๐Ÿ›  Fixed #1806 - uninitialised read in curve getsockopt.
    • ๐Ÿ›  Fixed #1807 - build broken with GCC 6.
    • ๐Ÿ›  Fixed #1831 - potential assertion failure with latest libsodium.
    • ๐Ÿ›  Fixed #1850 - detection issues with tweetnacl/libsodium.
    • ๐Ÿ›  Fixed #1877 - Avoid terminating connections prematurely
    • ๐Ÿ›  Fixed #1887 - zmq_bind IPv4 fallback still tries IPv6
    • ๐Ÿ›  Fixed #1866 - fails to build on SunOS 5.10 / Solaris 10
    • ๐Ÿ›  Fixed #919 - ZMQ_LINGER (related to #1877)
    • ๐Ÿ›  Fixed #114 - cannot unbind with same endpoint with IPv6 enabled.
    • ๐Ÿ›  Fixed #1952 - CMake scripts not part of release tarballs
    • ๐Ÿ›  Fixed #1542 - Fix a crash on Windows when port 5905 is in use.
    • ๐Ÿ›  Fixed #2021 - Fix building on sparc32.

    ๐Ÿš€ 0MQ version 4.1.4 stable, released on 2015/12/18

    • ๐Ÿ›  Fixed #1315 - socket monitor hangs if bind/setsockopt failed.
    • ๐Ÿ›  Fixed #1399 - assertion failure in tcp.cpp after network reconnect.
    • ๐Ÿ›  Fixed #1632 - build failure using latest libsodium.
    • ๐Ÿ›  Fixed #1644 - assertion failure in msg.cpp:390 on STREAM sockets.
    • ๐Ÿ›  Fixed #1661 - does not handle IPv6 link local addresses.

    ๐Ÿš€ 0MQ version 4.1.3 stable, released on 2015/08/17

    • ๐Ÿ›  Fixed #1532 - getsockopt ZMQ_RCVMORE now resets all bits instead of only 32
    • Fixed #1445 - zmq::socket_base_t::connect fails on tcp ipv6 address

    ๐Ÿš€ 0MQ version 4.1.2 stable, released on 2015/06/15

    • โž• Added explicit reference to static link exception in every source file.
    • โฌ†๏ธ Bumped ABI version to 5:0:0 since 4.1.x changed the ABI.
    • ๐Ÿ›  Fixed STDINT event interface macros to work with CZMQ 3.0.
    • ๐Ÿ›  Fixed installation of man pages when BUILD_DOC is not set.
    • ๐Ÿ›  Fixed #1428 - regression on single-socket proxies.

    ๐Ÿš€ 0MQ version 4.1.1 stable, released on 2015/06/02

    • ๐Ÿ›  Fixed #1208 - fix recursion in automake packaging.
    • ๐Ÿ›  Fixed #1224 - crash when processing empty unsubscribe message.
    • ๐Ÿ›  Fixed #1213 - properties files were missing from source packages.
    • ๐Ÿ›  Fixed #1273 - V3 protocol handler vulnerable to downgrade attacks.
    • ๐Ÿ›  Fixed #1347 - lack way to get peer address.
    • ๐Ÿ›  Fixed #1362 - SUB socket sometimes fails to resubscribe properly.
    • ๐Ÿ›  Fixed #1377, #1144 - failed with WSANOTINITIALISED in some cases.
    • ๐Ÿ›  Fixed #1389 - PUB, PUSH sockets had slow memory leak.
    • ๐Ÿ›  Fixed #1382 - zmq_proxy did not terminate if there were no readers.

    ๐Ÿš€ 0MQ version 4.1.0 rc1, released on 2014/10/14

    • ๐Ÿ›  All issues that were fixed in 4.0.x
    • ๐Ÿ‘Œ Improved client reconnection strategy on errors
    • ๐Ÿ”’ GSSAPI security mechanism
    • SOCKS5 support (ZMQ_SOCKS_PROXY)
    • ZMQ_ROUTER_HANDOVER
    • ZMQ_TOS
    • ZMQ_CONNECT_RID
    • ZMQ_HANDSHAKE_IVL
    • ZMQ_IDENTITY_FD
    • ZMQ_XPUB_NODROP
    • ZMQ_SRCFD and ZMQ_SHARED message options
    • Message metadata -- zmq_msg_gets ()
    • ๐Ÿ”ง Probe library configuration -- zmq_has ()

    ๐Ÿš€ 0MQ version 4.0.8 stable, released on 2016/06/17

    • ๐Ÿ›  Fixed LIBZMQ-949 - zmq_unbind fails for inproc and wildcard endpoints
    • ๐Ÿ›  Fixed #1806 - uninitialised read in curve getsockopt.
    • ๐Ÿ›  Fixed #1807 - build broken with GCC 6.
    • ๐Ÿ›  Fixed #1877 - Avoid terminating connections prematurely
    • ๐Ÿ›  Fixed #1887 - zmq_bind IPv4 fallback still tries IPv6
    • ๐Ÿ›  Fixed #98 - don't require libssp without libsodium on Solaris
    • ๐Ÿ›  Fixed #919 - ZMQ_LINGER (related to #1877)
    • ๐Ÿ›  Fixed #139 - "tempnam" is deprecated.

    ๐Ÿš€ 0MQ version 4.0.7 stable, released on 2015/06/15

    • ๐Ÿ›  Fixed #1428 - regression on single-socket proxies.

    ๐Ÿš€ 0MQ version 4.0.6 stable, released on 2015/06/02

    • ๐Ÿ›  Fixed #1273 - V3 protocol handler vulnerable to downgrade attacks.
    • ๐Ÿ›  Fixed #1362 - SUB socket sometimes fails to resubscribe properly.
    • ๐Ÿ›  Fixed #1377, #1144 - failed with WSANOTINITIALISED in some cases.
    • ๐Ÿ›  Fixed #1389 - PUB, PUSH sockets had slow memory leak.
    • ๐Ÿ›  Fixed #1382 - zmq_proxy did not terminate if there were no readers.