Hi all, I'm happy to announce that ZMQ/4.0 is out the door, as a release candidate.
You'll find the packages at the usual place. The changes are summarized here: http://zeromq.org/docs:changes-4-0-0. This release should be API and network compatible with 3.2 stable, and network compatible with 2.2 and 2.1 stable. Thanks to everyone who helped on this! -Pieter 0MQ version 4.0.0 (RC1), released on 2013/09/20 =============================================== Major changes ------------- * New wire level protocol, ZMTP/3.0, see http://rfc.zeromq.org/spec:23. Does not yet implement the SUBSCRIBE, CANCEL, PING, and PONG commands. * New security framework, from plain user+password to strong encryption, see section below. See http://hintjens.com/blog:49 for a tutorial. * New ZMQ_STREAM socket type for working as a TCP client or server. See: tests/test_stream.cpp. Improvements ------------ * You can now connect to an inproc:// endpoint that does not already exist. This means inproc:// no longer needs careful set-up, but it may break code that relied on the old behaviour. See: tests/test_inproc_connect.cpp. * Libzmq now checks socket types at connection time, so that trying to connect a 'wrong' socket type will fail. * New zmq_ctx_shutdown API method will shutdown a context and send ETERM to blocking calls, without blocking. Use zmq_ctx_term to finalise the process. * The regression test suite has been significantly extended and improved. * Contexts can now be terminated in forked child processes. See: tests/test_fork.cpp. * zmq_disconnect now respects the linger setting on sockets. * New zmq_send_const API method to send constant data (without copying). See: tests/test_inproc_connect.cpp. * Added CMake support for static libraries. * Added test cases for socket semantics as defined in RFCs 28, 29, 30, 31. See: tests/test_spec_*.cpp. * New socket option, ZMQ_PROBE_ROUTER triggers an empty message on connect. See: tests/test_probe_router.cpp. * New socket option, ZMQ_REQ_CORRELATE allows for correlation of replies from a REP socket. See: tests/test_req_correlate.cpp. * New socket option, ZMQ_REQ_RELAXED, lets you disable the state machine on a REQ socket, so you can send multiple requests without waiting for replies, and without getting an EFSM error. See: tests/test_req_relaxed.cpp. * New socket option, ZMQ_CONFLATE restricts the outgoing and incoming socket buffers to a single message. See: tests/test_conflate.cpp. Deprecated Options ------------------ * ZMQ_IPV4ONLY deprecated and renamed to ZMQ_IPV6 so that options are consistently "off" by default. * ZMQ_DELAY_ATTACH_ON_CONNECT deprecated, and renamed to ZMQ_IMMEDIATE. See: tests/test_immediate.cpp. Security Framework ------------------ Based on new ZMTP wire level protocol that negotiates a security "mechanism" between client and server before exchanging any other data. Security mechanisms are extensible. ZMTP defines three by default: * NULL - classic ZeroMQ, with no authentication. See http://rfc.zeromq.org/spec:23. * PLAIN - plain-text username + password authentication. See http://rfc.zeromq.org/spec:24. * CURVE - secure authentication and encryption based on elliptic curve cryptography, using the Curve25519 algorithm from Daniel Bernstein and based on CurveCP's security handshake. See http://rfc.zeromq.org/spec:25, http://rfc.zeromq.org/spec:26, and http://curvecp.org. Authentication is done by pluggable "authenticators" that connect to libzmq over an inproc endpoint, see http://rfc.zeromq.org/spec:27. Socket options to configure PLAIN security on client or server: * ZMQ_PLAIN_SERVER, ZMQ_PLAIN_USERNAME, ZMQ_PLAIN_PASSWORD. See tests/test_security_plain. Socket options to configure CURVE security on client or server: * ZMQ_CURVE_SERVER, ZMQ_CURVE_PUBLICKEY, ZMQ_CURVE_SECRETKEY, ZMQ_CURVE_SERVERKEY. See tests/test_security_curve.cpp. Socket options to configure "domain" for ZAP handler: * ZMQ_ZAP_DOMAIN, see tests/test_security_null.cpp. Support for encoding/decoding CURVE binary keys to ASCII: * zmq_z85_encode, zmq_z85_decode. Other issues addressed in this release -------------------------------------- * LIBZMQ-525 Multipart upstreaming from XSUB to XPUB _______________________________________________ zeromq-dev mailing list [email protected] http://lists.zeromq.org/mailman/listinfo/zeromq-dev
