1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
|
0MQ version 2.0.7 (Beta), released on 2010/06/XX
================================================
Interface
---------
* zmq_init has a single parameter now: number of I/O threads in the thread pool.
All the remaining parameters where dropped.
* ZMQ_P2P socket type was renamed to ZMQ_PAIR.
* LWM socket option was dropped.
New functionality
-----------------
* Multi-hop REQ/REP pattern is fully supported. This feature allows to put
a device(s) between REP and REP sockets thus allowing for scenarios like
multi-threaded server, shared service queue etc. The whole infrastructure
is transparent to the applications.
* Multi-part messages. Message may now be composed from several parts. This
feature allows for seamless zero-copy message passing when data are scattered
in the memory. Moreover it gives 0MQ message some basic structure.
* Sane termination of multiple threads. This means that main thread can
terminate the messaging library causing all blocking functions to unblock
and allow for orderly application termination.
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 <avbidder@fortytwo.ch>, for contributing Debian packages.
* Aleksey Yeschenko <aleksey@yeschenko.com>, for contributing a Lua binding.
* Alessio Spadaro <alessio.spadaro@finservice.com>, for help with porting to
HP-UX.
* Bernd Prager <bernd@prager.ws>, for help with porting to Cygwin.
* Brian E. Granger <ellisonbg@gmail.com>, for maintaining the Python binding.
* Martin Hurton <hurtonm@gmail.com>, for implementing flow control.
* Martin Lucina <mato@kotelna.sk>, for rewriting the 0MQ reference manual and
many portability fixes.
* Michael Santy <Michael.Santy@dynetics.com>, for testing this release with
Infiniband.
* Steven McCoy <steven@miru.hk>, for help with OpenPGM.
* Toralf Wittner <toralf.wittner@gmail.com>, 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
|