0MQ version 2.0.10 (Stable), released on 2010/10/15 =================================================== New functionality ----------------- * Upgrade OpenPGM to 2.1.28~dfsg (Martin Lucina) * Added a ZMQ_VERSION macro to zmq.h for compile-time API version detection (Martin Sustrik, Gonzalo Diethelm, Martin Lucina) Bug fixes: ---------- * Fix memory leak under Windows (Taras Shpot) * Makefile.am: Add missing files to distribution, improve maintainer-clean (Martin Lucina) * Add support for RHEL6 in the spec file (Sebastian Otaegui) * configure.in: Do not patch libtool rpath handling (Martin Lucina) * Fixing the Red Hat packaging (Martin Sustrik) * zmq_msg_move called on uninitialised message in xrep_t::xrecv -- fixed (Max Wolf) * crash when closing an ypipe -- fixed (Dhammika Pathirana) * REQ socket can die when reply is delivered on wrong unerlying connection -- fixed (Martin Sustrik) * if TSC jumps backwards (in case of migration to a different CPU core) latency peak may occur -- fixed (Martin Sustrik) * values of RATE, RECOVERY_IVL and SWAP options are checked for negative values (Martin Sustrik) 0MQ version 2.0.9 (Stable), released on 2010/09/04 ================================================== Bug fixes --------- * Broken device numbering fixed. * HP-UX/AIX build fixed. * Handling multi-part messages in forwarder and streamer devices fixed. * Couple of minor bug fixes, see the ChangeLog for details. 0MQ version 2.0.8 (Stable), released on 2010/08/25 ================================================== New functionality ----------------- * The ZMQ_SWAP functionality has now been implemented for all socket types. Bug fixes --------- * Many bug fixes (about 30), see the ChangeLog for details. Documentation ------------- * zmq_device(3) is now documented and describes the built-in devices. * The ZMQ_XREQ and ZMQ_XREP socket types are now documented in zmq_socket(3). Interface --------- * By popular demand, the zmq_stopwatch_start, zmq_stopwatch_stop and zmq_sleep functions have been added back into distribution. This API is now in a separate include file, zmq_utils.h. * The ZMQ_UPSTREAM and ZMQ_DOWNSTREAM socket types have been renamed to ZMQ_PULL and ZMQ_PUSH for clarity. The old names are still defined for compatibility reasons and will be removed in a future version. * API calls that expect non-null parameters now return -1 and set errno to EFAULT if null parameters are passed. Thanks to --------- Everyone. 0MQ version 2.0.7 (Beta), released on 2010/06/04 ================================================ Distribution ------------ * The core documentation has been updated with many clarifications, especially in the description of the functionality provided by the different socket types. * The version of OpenPGM bundled with 0MQ has been updated to the 2.1.26 release. Building -------- * GCC-isms have been removed from the code and build system across the board; 0MQ should now build with no issues when using compilers other than GCC. Interface --------- * The zmq_init() function now has only a single parameter; the number of 0MQ I/O threads to create in the context being initialised. The app_threads and flags parameters have been removed. * The ZMQ_P2P socket type has been renamed to ZMQ_PAIR. * The ZMQ_LWM socket option has been removed; the low water mark for a socket is now computed automatically by 0MQ. * A zmq_getsockopt() function has been added. New functionality ----------------- * Multi-hop request/reply is fully supported. This feature allows the insertion of device(s) between ZMQ_REQ and ZMQ_REP sockets thus enabling scenarios such as multi-threaded server, shared service queue, and other interesting messaging topologies. The entire infrastructure is transparent to applications. * Multi-part messages. A 0MQ message may now be composed of 1 or more message parts; each message part is an independent zmq_msg_t in its own right. 0MQ ensures atomic delivery of messages; peers shall receive either all message parts of a message or none at all. This feature allows for seamless zero-copy message passing when data are scattered in memory, and is an important building block for multi-hop messaging topologies. * Context termination and ETERM. The zmq_term() function has been changed to interrupt any blocking operations on open sockets, causing them to return the newly defined ETERM error code. This allows for orderly application termination, especially when multiple application threads are involved. 0MQ version 2.0.6 (Beta), released on 2010/03/16 ================================================ Distribution ------------ * The 0MQ core distribution has been slimmed down to include only the core C library and C++ language binding. Pointers to other language bindings can be found on the website. Examples have also been removed from the core and can be found elsewhere. Performance tests specific to a language binding can be found bundled with that language binding. * The 0MQ reference manual supplied with the distribution has been extensively rewritten, and is now provided in HTML as well as UNIX manpage format. * Commencing with this release, a 0MQ version numbering scheme has been introduced. The numbering scheme used is MAJOR.MINOR.PATCH. The "Beta" or "Stable" label is informative only and does not constitute part of the library version number, therefore this release is numbered 2.0.6 as the sixth release of 2.0. * The version of OpenPGM bundled with 0MQ has been updated to the stable 2.0.24 release. Building -------- * Many portability fixes, including support for new platforms: FreeBSD, NetBSD, HP-UX and Cygwin. * Invocation of configure has been simplified, all functionality is now built by default with the exception of OpenPGM. Interface --------- * The udp transport has been renamed to epgm to avoid confusion with unreliable unicast. * A ZMQ_POLLERR constant has been added to allow for polling on errors on Berkeley sockets with zmq_poll(). * The zmq_version() function has been introduced and returns the version number of the 0MQ library. * The zmq_flush() function and ZMQ_NOFLUSH flag of zmq_send() have been deprecated and will be removed in a future release. Wire format ----------- * The 0MQ wire format has been changed. A flags field has been added to allow for future extensions. New functionality ----------------- * The experimental ZMQ_P2P socket type has been implemented. * Flow control has been implemented for all socket types. For details see the ZMQ_HWM and ZMQ_LWM socket options. * Subscription filters are internally matched with O(1) complexity. Licensing --------- * iMatix corporation has granted the following exception regarding static linking with the 0MQ library: As a special exception, iMatix gives you permission to link this library with independent modules to produce an executable, regardless of the license terms of these independent modules, and to copy and distribute the resulting executable under terms of your choice, provided that you also meet, for each linked independent module, the terms and conditions of the license of that module. An independent module is a module which is not derived from or based on this library. If you modify this library, you must extend this exception to your version of the library. Thanks to --------- This release of 0MQ was made possible by many contributors from the community, including: * Adrian von Bidder , for contributing Debian packages. * Aleksey Yeschenko , for contributing a Lua binding. * Alessio Spadaro , for help with porting to HP-UX. * Bernd Prager , for help with porting to Cygwin. * Brian E. Granger , for maintaining the Python binding. * Martin Hurton , for implementing flow control. * Martin Lucina , for rewriting the 0MQ reference manual and many portability fixes. * Michael Santy , for testing this release with Infiniband. * Steven McCoy , for help with OpenPGM. * Toralf Wittner , for contributing a Haskell binding. ------------------------------------------------------------------------------- Version 2.0-beta2 ZMQII-29 Add timeout to zmq_poll function ZMQII-30 Build fails on MacOS X ZMQII-31 memory leak in zmq_poll (on timeout) ZMQII-33 zmq_poll may exceed timeout if signal interrupts the waiting ZMQII-34 ensure that poll won't return POLLIN event when the message will be filtered out anyway ZMQII-36 Chat example & forwarder broken because of changes subscribe semantics ZMQII-37 SIGSEGV when polling on REQ socket ZMQII-38 Compiler complains about missing virtual constructors ZMQII-39 Implement IPC transport Version 2.0-beta1 ZMQII-27 Allow setting SNDBUF and RCVBUF size from 0MQ API ZMQII-22 Deadlock on zmq_close ZMQII-25 Implement streamed request/reply ZMQII-24 SEGFAULT when anonymous session disconnects ZMQII-26 Use zero-copy for large messages ZMQII-19 add --disable-eventfd configure option Version 2.0-alpha3 ZMQII-17 Allow multiple senders for sigle mcast group aka multicast bus. ZMQII-16 Change "struct zmq_msg_t" to "zmq_msg_t" in C binding. ZMQII-15 Implement REQ/REP sockets. ZMQII-14 Change default for ZMQ_MCAST_LOOP to true. Version 2.0-alpha2 ZMQII-11 Implement forwarder device ZMQII-10 Make connections interrupted during the init phase be closed silently ZMQII-8 Failure during orphan pipe deallocation ZMQII-7 Pipe detach fails on shutdown ZMQII-6 connection refused in tcp_connecter::connect leads to assert ZMQII-5 Only one consumer in a process gets the message ZMQII-4 Failure in dev/poll poller ZMQII-3 Implement message filtering ZMQII-2 SIGSEGV in zmq_connecter_init_t::read ZMQII-1 Win32 - failure on shutdown Version 2.0-alpha1 Large scale refactoring of the code and new socket-like API. Version 1.0.1 ZMQ-289 Return -1 from bind when remote object is not registered in zmq_server ZMQ-288 Return -1 from create_exchange /queue when object can not be created ZMQ-287 Disabling receiving messages from queue ZMQ-286 create handle_t class with == and != operators ZMQ-285 multiple listeners listening on the same machine with UDP encap. ZMQ-284 mask function inaccessible via Java on Windows ZMQ-283 Lua binding for 0MQ ZMQ-282 Cannot send message containing zero byte via Ruby ZMQ-281 Publisher restart fails on PGM and Win/Linux ZMQ-280 Broken build using MSVC 2005 ZMQ-278 Load-balancing exchange doesn't load balance ZMQ-277 TCL binding ZMQ-276 Check for pkg-config in autogen.sh script ZMQ-275 Check for eventfd by running test program during ./configure ZMQ-274 can not compile estimate_cpu_freq with PERF_CPU_FREQUENCY set ZMQ-273 gcc (GCC) 4.4.0 invalid conversion from const char* to char* ZMQ-272 make sure message content is created properly Version 1.0.0 ZMQ-271 Build OpenPGM with 0MQ build system ZMQ-270 0MQ windows pgm support ZMQ-269 Constness is better for the zmq_send data_ argument ZMQ-267 assert in api_thread.cpp384 void zmqapi_thread_tprocess_command ZMQ-266 Memory coruption in api_thread_tcreate ZMQ-265 Missing librbzmq.vcproj file ZMQ-264 Java examples can not be run on OpenVMS ZMQ-263 Warning preventing compilation of chat example ZMQ-262 CLONE -QNX port -- working in 6.4.0? ZMQ-261 add --with-rubydir configure option ZMQ-260 syntax error caught by gcc 4.4 ZMQ-253 Allow to establish arbitrary AMQP wiring on connection startup ZMQ-249 Handle EAGAIN and EWOULDBLOCK as the same error ZMQ-248 Call in/out events directly from I/O thread ZMQ-247 Move physical thread from poller to individual I/O threads ZMQ-240 Pack Java classes into a .jar ZMQ-239 make --with-clr imply --with-c ZMQ-237 Java extension not working with Win32 package ZMQ-235 JAVA build fails if PATH is not set to JDK/bin ZMQ-228 Make java documentation via JavaDoc ZMQ-226 Move Jzmq to org.zmq package ZMQ-204 Use non-blocking accept ZMQ-130 Optimise mux_t for large number of idle connections Version 0.6.1 ZMQ-254 Race condition in pipe_twriter_terminated ZMQ-255 Python perf tests broken ZMQ-257 pgm build fails various declared errors ZMQ-259 Ruby extension for libzmq Version 0.6 ZMQ-73 Redesign MT throughput test ZMQ-102 Move load-balancing functionality from 0.3.3 branch to the trunk ZMQ-136 Check I/O threads for rm_fd(x) followed by add_fd(x) behavior ZMQ-138 Avoid exporting 0MQ symbols from libs using 0MQ on Windows ZMQ-147 Python app hang-up, unresponsive to Ctrl+C ZMQ-164 Add reconnection functionality to PGM ZMQ-166 Slow down the reconnection process ZMQ-176 Update examples to reflect the auto-reconnect feature ZMQ-179 Implement OS-agnostic time measurement ZMQ-180 What happens if queue is full & disconnection occurs? ZMQ-183 Change OpenPGM to PGM in build options ZMQ-185 Move msg_store to the trunk ZMQ-186 Write an example to demonstrate load-balancing ZMQ-187 Declaring same object (exchange, queue) twice doesn't fail ZMQ-188 Schemas used by global object URIs don't conform to RFC3986 ZMQ-190 Compile libdnzmq with /clr support (no old syntax) ZMQ-193 Reconnect on Solaris platform not working ZMQ-194 Let sender use RDTSC mechanism for command throttling in MSVC build ZMQ-195 Failure during fg ZMQ-196 System out of sockets after number of reconnections ZMQ-197 Offload signal handling from I/O threads ZMQ-198 Timers can never expire ZMQ-199 Make receive in libczmq zero-copy ZMQ-200 Virtualise global locator ZMQ-202 Check out SCTP support on QNX ZMQ-203 Add auto-reconnect to AMQP engine ZMQ-205 Check handling of async errors on a socket ZMQ-206 Make zmq_server not to drop the endpoint info on service disconnect ZMQ-207 zmq_server should be able to read endpoint info from XML file ZMQ-210 Switch perf tests to load-balancing mode ZMQ-211 Port Data Dam functionality to Win32 ZMQ-212 Integrate add and inc in atomic_counter into a single function ZMQ-213 When 0MQ infrastructure is terminated, sockets are not closed correctly ZMQ-215 Java on Win32 platform not stopping in case of assertion ZMQ-217 zmq_server can be crashed by incorect input data ZMQ-218 C# integration not working anymore ZMQ-219 Change .NET extesnsion to use CamelCase ZMQ-220 Check whether individual APIs conforms to API guidelines document ZMQ-221 Allow to create global object w/o specifying the location ZMQ-222 SPARC code for atomic_counter broken ZMQ-223 Rename czmq/jzmq/dnzmq etc. to simple "zmq" ZMQ-225 Application fails when it's connected from telnet Version 0.5 ZMQ-17 look at pgm_transport_set_recv_only and ...send_only ZMQ-26 Allow for "any" network interface ZMQ-31 Implement SCTP support ZMQ-45 Normalise API vs. I/O thread ZMQ-78 Make connection establishment asynchronous ZMQ-79 Refactor handling of broken connections ZMQ-100 Move flow control and queue limits from 0.3.3 branch to the trunk ZMQ-101 Move reconnection functionality from 0.3.3 branch to the trunk ZMQ-112 build via cmake (makefile generator) ZMQ-115 Identify SPARC V9 microarc and/or availability of CAS instruction ZMQ-116 Implement .NET extension ZMQ-129 Make engine_source part of the polling object ZMQ-139 /dev/poll introduces latency on Solaris ZMQ-144 Investigate latency impact of using eventfd instead of socketpair on Linux ZMQ-146 Check whether i386 and x86_64 in atomic_ptr can be unified ZMQ-148 Change watermarks from int to uint64_t ZMQ-149 Virtualise creation of 0MQ connections ZMQ-150 Negative numbers in unsigned type in atomic_counter ZMQ-151 Modify build system to build SCTP extension ZMQ-152 Merge BP/PGM functionality into the trunk ZMQ-153 compiler warnings on solaris ZMQ-155 Build libzmq with sctp support witch cmake ZMQ-160 Get rid of create functions in engines ZMQ-162 CMakeLists.txt files not updated with latest changes ZMQ-165 Implement reconnection notifications ZMQ-169 Return queue id from receive function in libpyzmq ZMQ-171 Add AMQP support to 0MQ ZMQ-173 Throughput test should accept 2 interface specifications ZMQ-174 When application is killed on Win32, zmq_server fails ZMQ-175 Chatroom example doesn't pass messages after reconnection ZMQ-177 Update language extensions to take advantage of auto-reconnect ZMQ-181 Rafactor the code to support multiple notification types Version 0.4 ZMQ-21 Clean up the command passing code ZMQ-36 autogen/configure fails on Solaris ZMQ-39 Check whether using CAS for btsr and izte on x86 platform improves latency ZMQ-40 Check autogen on FreeBSD ZMQ-41 Check autogen on OS X ZMQ-43 Use +m instead of memory in atomic operations ZMQ-46 Get rid of administrative pseudo-thread ZMQ-63 -mcpu=v9 CPPFLAG should be used only at sparc achitecture ZMQ-64 gcc 3.4.3 on opensolaris complains about -mcpu flag ZMQ-65 No error report when host name resolving fails ZMQ-66 Several files use atoi without including stdlib.h ZMQ-69 Make stdint.hpp hand-written rather than generated ZMQ-71 Virtualise thread management ZMQ-72 Remove platform.hpp ZMQ-74 Implement win32 version of tcp_socket and tcp_listener ZMQ-75 Virtualise mutexes ZMQ-76 Implement win32 version of ysemaphore_t ZMQ-80 Virtualise polling mechanisms ZMQ-81 Implement 'select' polling mechanism ZMQ-82 Rename i_context to i_thread ZMQ-83 "Resource temporarily unavailable" when running on 266MHz box ZMQ-84 zmq_server stops to respond ZMQ-89 Make i_pollable derived from i_engine ZMQ-94 Report error when malloc fails ZMQ-95 Add /dev/poll method of polling ZMQ-96 Add support for kqueue method of polling ZMQ-97 OpenBSD port ZMQ-98 QNX port ZMQ-99 use pyexec_LTLIBRARIES primary for libpyzmq ZMQ-103 Use non blocking sockets ZMQ-106 memory leak when sending message from Java ZMQ-111 Get rid of speculative operations ZMQ-113 Windows compiler (_MSC_VER 1310) doesn't support strncpy_s function ZMQ-117 select_thread doesn't implement rm_fd function ZMQ-119 select thread fails on shudown ZMQ-121 Fix all I/O threads to handle rm_fd correctly ZMQ-124 include gaurd is wrong ZMQ-126 Refactor I/O threads implementation to avoid duplication of common functionality. ZMQ-131 select_thread fails on Windows ZMQ-132 Pointer to poller_t is used before it is fully initialised ZMQ-134 Thread management in constructors/destructors ZMQ-135 Move retired list to the polling strategy-specific object ZMQ-137 Assertion fails at bp_engine, line 132, error_handler is not set Version 0.3.2 ZMQ-54 Test programs are compiled with --rpath Version 0.3.1 ZMQ-25 Allow to use network interface name instead of IP address ZMQ-29 Implement speculative write to socket ZMQ-33 Assign ports to global objects automatically ZMQ-34 Message size of zero causes application to hang up ZMQ-42 Change locators to deal with a single object type ZMQ-44 Some of the objects have non-functional auto-generated copy constructors ZMQ-47 Camera example is broken ZMQ-48 Sender fails when receiver disconnects ZMQ-50 Warning in chat example ZMQ-51 Make it possible to use single include (zmq.hpp) for client apps ZMQ-53 Segmentation fault when binding to non-existent queue ZMQ-55 raw_message_init (data,size,ffn) allocates more memory than needed ZMQ-56 zmq_server fails if too many apps disconnect abruptly ZMQ-58 Implement C binding for 0MQ ZMQ-59 Implement Java binding for 0MQ ZMQ-60 Implement Python binding for 0MQ ZMQ-62 Write man pages Version 0.3 ZMQ-1 poll_thread hangs in destructor ZMQ-4 Missing -D_REENTRANT command line parameter while compiling 0MQ ZMQ-5 Check for buffer overflows in AMQP/0-9 marshaller/unmarshaller ZMQ-6 Allow dynamic adding of engines to poll_thread ZMQ-7 Implement dynamic assignment of engine IDs to engines ZMQ-9 Implement event batching in ysocketpair ZMQ-10 Remove remaining references to HAVE_CONFIG_H from the code ZMQ-11 Move 'alive' flag to the dispatcher ZMQ-12 Move dispatcher signalers into a separate array ZMQ-13 Allow up to 63 threads on x86_64 platform ZMQ-14 Implement new type of lock-free pipe ZMQ-15 Implement an infrastructure to pass arbitrary commands between threads ZMQ-16 missing stats_raw_den.R, stats_raw_lat.R in dist package ZMQ-20 Sync problem with ypollset/atomic_bitmap ZMQ-24 Redundant poll ZMQ-30 Implement epoll suport ZMQ-37 Identify SPARC V9 microarc and/or availability of CAS instruction Version 0.2 ZMQ-2 Failure when mutexes are used atomic_uint32 ZMQ-3 socket hangup at OS X