Latest release

CZMQ 4.1.1

@sappo sappo released this Mar 22, 2018 · 103 commits to master since this release

CZMQ version 4.1.1 stable, released on 2018/03/22

  • New DRAFT APIs have been added to the zsys class to get and set
    the zsys_interrupted global variable:

    • zsys_is_interrupted
    • zsys_set_interrupted
      The following DRAFT APIs wrap a new libzmq context API (minimum
      libzmq version with DRAFTs enabled required: 4.2.4):
    • zsys_set_zero_copy_recv
    • zsys_zero_copy_recv
      See zsys manpage for more info.
  • New DRAFT APIs have been added to the zproc class to set and get
    the command line arguments string:

    • zproc_args
    • zproc_set_argsx
      The zproc_set_args and zproc_set_env DRAFT APIs have had their
      signature changed.
      See the zproc manpage for more details.
  • Existing DRAFT APIs have been deleted from to the zproc class as they
    are redundant and already offered by zsys:

    • zproc_log_debug
    • zproc_log_info
    • zproc_log_notice
    • zproc_log_warning
    • zproc_log_error
    • zproc_set_log_system
    • zproc_set_log_sender
    • zproc_set_log_ident
    • zproc_biface
    • zproc_set_biface
    • zproc_set_max_sockets
    • zproc_set_io_threads
    • zproc_run_as
    • zproc_daemonize
    • zproc_hostname
    • zproc_has_curve
    • zproc_interrupted
    • zproc_czmq_version
  • Exising DRAFT APIs to create DRAFT sockets will now return ENOTSUP
    instead of EINVAL when libzmq does not support the socket type:

    • zsock_new_server
    • zsock_new_client
    • zsock_new_radio
    • zsock_new_dish
    • zsock_new_scatter
    • zsock_new_gather
    • zsock_join
    • zsock_leave
  • Fixed #1828 - fix build on GNU/Hurd

  • Fixed #1829 - fix build on FreeBSD 10.4 and 11.1

  • Fixed #1840 - implement basic zproc support for Windows

  • Fixed #1847 - fix test segfault when no USER env variable exists

  • Fixed #1848 - fix zsock_resolve when using many thousands of sockets

  • Fixed #1853 - use SIGTERM on Windows as SIGKILL does not exist

  • Fixed #1858 - fix build on MINGGW

  • Fixed #1875 - fix build with GCC 8

  • Fixed #1876 - fix crash in zsys_shutdown with libzmq 4.2.4 built with
    Tweetnacl

CZMQ 4.1.0

@sappo sappo released this Dec 31, 2017 · 217 commits to master since this release

CZMQ version 4.1.0 stable, released on 2017/12/31

  • New STABLE APIs have been added to wrap new libzmq context
    options:

    • zsys_set_thread_sched_policy
    • zsys_set_thread_priority
      See zsys manpage for more details.
  • New DRAFT class to parse command line arguments in a platform
    independent way: zargs. See zargs manpage for more info.

  • New DRAFT APIs have been added to the zproc class to manage
    subprocesses in a platform-independent unified API. See the
    zproc manpage for more details.

  • New DRAFT APIs have been added to the zactor class to override
    the default destructor:

    • zactor_destructor_fn
    • zactor_set_destructor
      See zactor manpage for more info.
  • New DRAFT APIs have been added to the zcertstore class to return
    a zlistx of all the certificates in the store:

    • zcertstore_certs
      See zcertstore manpage for more info.
  • New DRAFT APIs have been added to the zcert class to create a new
    zcert from public/secret keypair in text form:

    • zcert_new_from_txt
      See zcert manpage for more info.
  • New DRAFT APIs have been added to the zsys class to get/set the
    default "stable" age value of files in zfile:

    • zsys_file_stable_age_msec
    • zsys_set_file_stable_age_msec
      See zsys and zfile manpages for more info.
  • New DRAFT APIs have been added to the zstr class to send and receive
    compressed strings:

    • zstr_recv_compress
    • zstr_send_compress
    • zstr_sendm_compress
      To enable them, build with the new (optional) lz4 dependency.
      See zstr manpage for more info.
  • New DRAFT APIs have been added to the zgossip class to support CURVE
    security:

    • "ZAP DOMAIN" actor message to set the ZAP domain for authentication
    • "SET PUBLICKEY" actor message to set the local public key
    • "SET SECRETKEY" actor message to set the local secret key
    • new optional parameter appended to "CONNECT" actor message, public
      key of the server
      See zgossip manpage for more info.
  • New DRAFT APIs have been added to the zfile class to support managing
    temporary files in a platform independent way:

    • zfile_tmp
      See zfile manpage for more info.
  • New DRAFT APIs have been added to the zconfig class to support removing
    a node and its subtrees or only the subtrees:

    • zconfig_remove_subtree
    • zconfig_remove
      See zconfig manpage for more info.
  • Added new FFI Python and Ruby bindings.

  • Add support for new ZMQ socket monitoring events to the zmonitor class:

    • HANDSHAKE_SUCCEEDED
    • HANDSHAKE_FAILED_NO_DETAIL
    • HANDSHAKE_FAILED_PROTOCOL
    • HANDSHAKE_FAILED_AUTH
      Requires libzmq version 4.2.3 or higher with DRAFT APIs enabled.
  • Fixed #1811 - add CZMQ_BUILD_SHARED/STATIC options to CMake to control
    whether to build shared/static libraries. Default to ON.
    The minimum required CMake version has been bumped from
    2.8 to 2.8.8.

  • Fixed #1802 - fix using ziflist in a VirtualBox VM running on OSX.

  • Fixed #1798 - fix build on Cygwin.

  • Fixed #1773 - fix zfile_restat on Windows XP with newer MSVC++.

  • Fixed #1765 - fix build on OpenBSD.

  • Fixed #1755 - improve reliability of zproxy selftest in slower
    environments.

  • Fixed #1753 - fix zloop_set_nonstop to actually use the parameter
    passed by the user rather than always setting
    nonstop to true.

  • Fixed #1747 - check for OOM condition in zstr_send* functions.

  • Fixed #1730 - improve the internal usage of system random generator
    APIs to be more reliable.

  • Fixed #1728 - chomp all leading "/" in zfile_filename.

  • Fixed #1726 - do not bind to hard-coded TCP ports in self tests.

  • Fixed #1722 - define the PRI* types if not available on Windows.

  • Fixed #1715 - document ZSYS_SIGHANDLER behaviour w.r.t. the
    zsys_catch_interrupts API.

  • Fixed #1712 - clarify zsock_brecv documentation w.r.t buffers.

  • Fixed #1711 - set User-Id field in ZAP responses.

  • Fixed #1710 - clarify documentation of zframe_meta - the caller
    must not modify the returned value.

  • Fixed #1702 - clarify documentation of zhashx_set_key_comparator
    and zhashx_set_key_hasher.

  • Fixed #1675 - fix zhashx_purge memory leak when shrinking.

  • Fixed #1672 - fix compile error 'sockaddr_in': undeclared
    identifier on MSVC.

  • Fixed #1671 - add support for new (DRAFT) socket types in
    zframe_recv_nowait and zmsg_recv_nowait.

  • Fixed #1671 - correctly complete multipart receives in
    zmsg_recv_nowait.

  • Fixed #1667 - if ZSYS_IPV6_ADDRESS is link-local but does not
    have the %interface suffix, append it from
    ZSYS_INTERFACE.

  • Fixed #1659 - reset all CZMQ internal state in zsys_shutdown
    to facilitate use with fork without exec.

  • Fixed #1649 - set static pointers to NULL to fix restarting
    CZMQ via zsys_shutdown -> zsys_init.

  • Fixed #1644 - zbeacon on Windows only sends on one interfaces
    with INADDR_BROADCAST set (interface option "*").

  • Fixed #1634 - zloop is using reader callback after
    zloop_reader_end.

  • Fixed #1632 - NULL pointer exception in ziflist on Windows
    if network adapters are added/removed whilst
    being enumerated.

  • Fixed #1623 - remove mentions of retired APIs from manpages.

  • Fixed #1618 - fix build with GCC 7.

  • Fixed #1616 - zsys_udp_recv will now return NULL when failing
    to retrieve the peer's address instead of
    silently failing.

  • Fixed #1616 - zsys_udp_recv's parameter peername must now be
    at least NI_MAXHOST long when IPv6 is enabled.

  • Fixed #1616 - add IPv6 support to zbeacon using, by default,
    link-local all-node address fe02::1 in lieu of
    broadcast (which does not exist on v6).
    The multicast address can be specified via zsys
    so, theoretically, it should work across
    multiple networks as well (untested!).

  • Fixed #1615 - add link-local all-node fe02::1 as the default
    zsys IPv6 multicast address.

  • Fixed #1615 - add IPv6 support to ziflist on *nix through new
    (DRAFT) APIs to avoid changing the output of old
    ones: ziflist_new_ipv6, ziflist_reload_ipv6 and
    ziflist_is_ipv6.

  • Fixed #1603 - generated socket options, and public API/ABI, were
    changing depending on the version of libzmq used
    at build time. Keep all the symbols stable instead
    and add additional runtime checks.
    Socket options APIs will now be built as empty
    stubs if unavailable in the libzmq version used at
    build time, and will return an error if not
    available in the libzmq version used at runtime.

  • Fixed #1609 - fix zdir selftest on Windows.

  • Fixed #1608 - document that on Windows it is necessary to call
    zsys_shutdown manually as DLLs do not support
    atexit() callbacks, and manually call it from all
    unit tests.

  • Fixed #1606 - use inproc instead of ipc in zproxy selftest to
    fix failure on Windows.

  • Fixed #1602 - ZSYS_INTERFACE: if the value is a single digit,
    interpret it as an index. Facilitates using it
    on Windows with complicated interface names.

  • Fixed #1599 - correctly handle CTRL_CLOSE_EVENT in Windows.

  • Fixed #1597 - added czmq_private_selftest to test private
    classes without exporting their symbols in the
    shared library.

  • Fixed #1597 - declare some internal-only helper functions as
    static to avoid exporting their symbols.

  • Fixed #1594 - correctly return -1 and set errno to EINVAL from
    zpoller_remove if the reader does not exist

  • Fixed #1590 - zsys_shutdown does not call zmq_term when it
    closes sockets which results in dangling sockets
    warnings.

  • Fixed #1588 - fix debian/kfreebsd build and always use external
    UUID library, if available, regardless of the OS.

  • Fixed #1459 - clarify zgossip documentation.

  • Fixed #1026 - zmsg_remove decreased count of frames even when it
    failed.

  • Fixed #1032 - clarify documentation of zhash_autofree and zhashx
    callbacks.

CZMQ 4.0.2

@sappo sappo released this Dec 31, 2016 · 702 commits to master since this release

CZMQ version 4.0.2 stable, released on 2016/12/31

  • Fixed #1559 - DRAFT zsock_new_*_checked symbols leak
  • Fixed #1560 - zsock options could be available at build time but
    not at runtime. Added runtime check, an error will
    be printed if the option is not available.
  • Fixed #1565 - improved compatibility with Solaris/Illumos
  • Fixed #1573 - memory leak when message send fails in internal usage

CZMQ 4.0.1

@sappo sappo released this Nov 10, 2016 · 776 commits to master since this release

CZMQ version 4.0.1 stable, released on 2016/11/10

  • Version 4.0.0 introduced the DRAFT mechanism, but it had a flaw:
    the internally defined DRAFT symbols were leaking as global in the
    shared library. This meant that although the API was stable, the
    ABI could in some cases not be.
    This has now been fixed using compiler's visibility attribute to
    avoid this problem.

CZMQ 4.0.0

@sappo sappo released this Nov 4, 2016 · 790 commits to master since this release

CZMQ version 4.0.0 stable, released on 2016/11/04

  • v4.0.0 breaks API and ABI compatibility with v3.0.2.
    The ABI version has been bumped to 4.

  • The v2 API, which have been declared DEPRECATED in v3.0.0
    released on 2014/10/15, have now been declared RETIRED
    and removed from this release. The following classes are gone:

    • zauth_v2, use zauth
    • zbeacon_v2, use zbeacon
    • zctx, use zsock
    • zmonitor_v2, use zmonitor
    • zmutex
    • zproxy_v2, use zproxy
    • zsocket, use zsock
    • zsockopt, use zsock
    • zthread, use zactor

    The following DEPRECATED methods have also been declared
    RETIRED and removed from their STABLE classes:

    • zcert_fprint, use zcert_print
    • zcertstore_fprint, use zcertstore_print
    • zhash_foreach (and callback), use zhash_first/next
    • zhashx_foreach (and callback), use zhashx_first/next
    • zhashx_autofree, use zhashx_set_destructor
    • zloop_ignore_interrupts, use zloop_set_nonstop
    • zpoller_ignore_interrupts, use zpoller_set_nonstop
  • Some STABLE APIs unfortunately had to be slightly changed to
    fix critical issues. From v4.0.0 we commit to avoid incompatible changes
    to STABLE APIs.
    The following signatures have changed:

    • v3.0.2: byte * zarmour_decode (zarmour_t *self, const char *data, size_t *decode_size)

      v4.0.0: zchunk_t * zarmour_decode (zarmour_t *self, const char *data)

    • v3.0.2: zarmour_mode_t zarmour_mode (zarmour_t *self)

      v4.0.0: int zarmour_mode (zarmour_t *self)

    • v3.0.2: int zarmour_test (bool verbose)

      v4.0.0: void zarmour_test (bool verbose)

    • v3.0.2: zcert_t * zcert_new_from (byte *public_key, byte *secret_key)

      v4.0.0: zcert_t * zcert_new_from (const byte *public_key, const byte *secret_key)

    • v3.0.2: byte * zcert_public_key (zcert_t *self)

      v4.0.0: const byte * zcert_public_key (zcert_t *self)

    • v3.0.2: byte * zcert_secret_key (zcert_t *self)

      v4.0.0: const byte * zcert_secret_key (zcert_t *self)

    • v3.0.2: char * zcert_public_txt (zcert_t *self)

      v4.0.0: const * zcert_public_txt (zcert_t *self)

    • v3.0.2: char * zcert_secret_txt (zcert_t *self)

      v4.0.0: const * zcert_secret_txt (zcert_t *self)

    • v3.0.2: char * zcert_meta (zcert_t *self, const char *name)

      v4.0.0: const * zcert_meta (zcert_t *self, const char *name)

    • v3.0.2: void zdigest_update (zdigest_t *self, byte *buffer, size_t length)

      v4.0.0: void zdigest_update (zdigest_t *self, const byte *buffer, size_t length)

    • v3.0.2: byte * zdigest_data (zdigest_t *self)

      v4.0.0: const byte * zdigest_data (zdigest_t *self)

    • v3.0.2: enum zdir_patch_op_t {ZDIR_PATCH_CREATE, ZDIR_PATCH_DELETE}

      v4.0.0: define ZDIR_PATCH_CREATE ZDIR_PATCH_DELETE

    • v3.0.2: zdir_patch_t * zdir_patch_new (const char *path, zfile_t *file,
      zdir_patch_op_t op, const char *alias)

      v4.0.0: zdir_patch_t * zdir_patch_new (const char *path, zfile_t *file, int op,
      const char *alias)

    • v3.0.2: zdir_patch_op_t zdir_patch_op (zdir_patch_t *self)
      v4.0.0: int zdir_patch_op (zdir_patch_t *self)

    • v3.0.2: void zhash_test (int verbose)
      v4.0.0: void zhash_test (bool verbose)

    • v3.0.2: void zlist_test (int verbose)
      v4.0.0: void zlist_test (bool verbose)

    • v3.0.2: void zlistx_set_destructor (zlistx_t *self, czmq_destructor destructor)
      v4.0.0: void zlistx_set_destructor (zlistx_t *self, zlistx_destructor_fn destructor)

    • v3.0.2: void zlistx_set_duplicator (zlistx_t *self, czmq_duplicator duplicator)
      v4.0.0: void zlistx_set_duplicator (zlistx_t *self, zlistx_duplicator_fn duplicator)

    • v3.0.2: void zlistx_set_comparator (zlistx_t *self, czmq_comparator comparator)
      v4.0.0: void zlistx_set_comparator (zlistx_t *self, zlistx_comparator_fn comparator)

    • v3.0.2: void zlistx_test (int verbose)
      v4.0.0: void zlistx_test (bool verbose)

    • v3.0.2: zmsg_t * zmsg_load (zmsg_t *self, FILE *file)
      v4.0.0: zmsg_t * zmsg_load (FILE *file)

    • v3.0.2: zmsg_t * zmsg_decode (const byte *buffer, size_t buffer_size)
      v4.0.0: zmsg_t * zmsg_decode (zframe_t *frame)

    • v3.0.2: size_t zmsg_encode (zmsg_t _self, byte *_buffer)
      v4.0.0: zframe_t * zmsg_encode (zmsg_t *self)

    • v3.0.2: int zsys_udp_send (SOCKET udpsock, zframe_t *frame, inaddr_t *address)
      v4.0.0: int zsys_udp_send (SOCKET udpsock, zframe_t *frame, inaddr_t *address, int addrlen)

    • v3.0.2: zframe_t * zsys_udp_recv (SOCKET udpsock, char *peername)
      v4.0.0: zframe_t * zsys_udp_recv (SOCKET udpsock, char *peername, int peerlen)

  • The following new STABLE methods were added to STABLE classes:

    • zarmour_mode_str, zarmour_print (see doc/zarmour.txt for details)
    • zconfig_test (see doc/zconfig.txt for details)
    • zframe_meta (see doc/zframe.txt for details)
    • zlistx_head zlistx_tail, zlistx_destructor_fn, zlistx_destructor_fn,
      zlistx_comparator_fn (see doc/zlistx.txt for details)
    • zloop_set_nonstop (see doc/zloop.txt for details)
    • zpoller_set_nonstop (see doc/zpoller.txt for details)
    • zsys_set_max_msgsz, zsys_max_msgsz, zsys_set_ipv6_address, zsys_ipv6_address,
      zsys_set_ipv6_mcast_address, zsys_ipv6_mcast_address, zsys_set_auto_use_fd,
      zsys_auto_use_fd (see doc/zsys.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.

    The following DRAFT classes were added:

    • zproc
    • ztimerset
    • ztrie

    The following DRAFT methods were added to their respective STABLE class:

    • zcert_unset_meta
    • zcertstore_set_loader, zcertstore_empty
    • zframe_routing_id, zframe_set_routing_id, zframe_group, zframe_set_group
    • zhashx_unpack_own, zhashx_pack_own, zhashx_serializer_fn, zhashx_deserializer_fn
    • zmsg_routing_id, zmsg_set_routing_id
    • zstr_str
  • Support for new libzmq DRAFT socket types was added to zsock. See libzmq 4.2.0
    release notes and doc/zsock.txt for more details. NOTE: until libzmq declares
    these as STABLE, the CZMQ support will be in DRAFT state as well.

  • Support for all new libzmq socket and context options was added to zsock. See
    libzmq 4.2.0 release notes and doc/zsock.txt for more details.

  • Many, many bug fixes. Check git log for the complete set of changes.

Pre-release

4.0.0 Release Candidate 1

@sappo sappo released this Nov 1, 2016 · 820 commits to master since this release

This is the first Release Candidate of CZMQ 4.0.0. Go forth and test!

If there are no reports of breakages, the stable 4.0.0 will be tagged and get proper release notes.