History.txt in ffi-rzmq-0.7.2 vs History.txt in ffi-rzmq-0.8.0
- old
+ new
@@ -1,5 +1,25 @@
+== 0.8.0 / 20110307
+ * API change!
+ Socket#send_message no longer automatically calls
+ Message#close on behalf of the user. The user is completely
+ responsible for the lifecycle management of all buffers associated
+ with the ZMQ::Message objects.
+ This is a breaking change.
+ If you want the old behavior (auto-close messages on send) then
+ use the new Socket#send_and_close method which does as its name
+ implies.
+ * Fixed bug with type :size_t on Windows (thank you to arvicco)
+
+== 0.7.3 / 20110304
+ * Fixed a bug where we had a small memory leak. When closing a socket
+ I forgot to release a small amount of native memory used as a cache
+ for doing #getsockopt calls.
+ * Util.minimum_api? didn't work. Fixed.
+ * Added ROUTER/DEALER constants to reflect new naming for XREQ/XREP.
+ XREQ and XREP remain aliased for backward compatibility.
+
== 0.7.2 / 20110224
* Several minor refactorings to make the code intent clearer and to allow
for better testing. In particular, the error condition checking for
a non-blocking send/recv is much clearer.
@@ -10,14 +30,14 @@
== 0.7.0 / 20101222
* Improved performance of calls to Socket#getsockopt. There are usually
a lot of calls passing RCVMORE, so we now cache those buffers instead
of reallocating them every time.
-
+
* Updated the docs on Poller#poll to warn about a possible busy-loop
condition.
-
+
* Fixed some more specs to conform with the 0mq 2.1 requirement that
all sockets must be closed explicitly otherwise the program may
hang on exit.
== 0.6.1 / 20101127
@@ -26,40 +46,40 @@
method instead. Invoke as ZMQ::Util.version. Used for conditionally
enabling certain features based upon the 0mq version that is loaded.
* Preliminary support for the Windows platform. Patches supplied
by arvicco.
-
+
* Added support for FD and EVENTS socket options. These were added
in 0mq 2.1.0. Patches + specs supplied by andrewvc.
-
+
* Added support for LINGER, RECONNECT_IVL, BACKLOG and
RECOVERY_IVL_MSEC socket options.
-
+
* Conditionally re-enable the socket finalizer when we are running
with 0mq 2.1.0 or later.
-
+
* Drop support for MRI 1.8.x since the 'ffi' gem has dropped it as a
supported Ruby runtime with its 1.0 release. No action is taken to
prevent running with MRI 1.8.x but it won't be supported.
-
+
* Misc. spec fixes. Need more specs!
== 0.6.0 / 20100911
* API Change! Modified ZMQ::Message by removing automatic memory
management. While doing some performance tests I saw that
- defining/undefining the finalizer added 15-30% processing
+ defining/undefining the finalizer added 15-30% processing
overhead on the latency test. So, I split this functionality
out to a subclass called ZMQ::ManagedMemory. Any existing code
that relies on the default Message class to clean up after itself
will now have a memory leak. Explicitly call #close on these
received messages *unless* they are sent out again. The #send
method automatically closes call on your behalf.
* Rubinius/rbx compatibility! Requires an rbx code pull from git
from 20100911 or later to get the necessary code fixes.
-
+
* Modify Message to use the @pointer directly rather than indirectly
via the @struct object. Provides better compatibility for rbx
since rbx does not yet support the FFI pointer protocol for structs
like the FFI gem.
@@ -74,42 +94,42 @@
* Modify FFI wrapper to capture the libC dynamic library to fetch
a pointer to the free function.
* Modify FFI wrapper to remove the FFI::Function callback used
- by Message. It's no longer necessary since we now use free
+ by Message. It's no longer necessary since we now use free
directly.
== 0.5.1 / 20100830
* Works with 0mq 2.0.8 release.
-
+
* Removed the socket finalizer. The current 0mq framework cannot
handle the case where zmq_close is called on a socket that was
created from another thread. Therefore, the garbage collection
thread causes the framework to break. Version 2.1 (or later)
should fix this 0mq limitation.
-
+
* Misc fixes. See commits.
== 0.5.0 / 20100606
* Updated the bindings to conform to the 0mq 2.0.7 release.
Several parts of the API changed.
-
+
* Updated all examples to use the new Context api.
-
+
* Added Socket#getsockopt.
-
+
* Added a Socket#identity and Socket#identity= method pair to
allow for easy get/put on socket identities. Useful for async
request/reply using XREQ/XREP sockets.
-
+
* Added more specs (slowly but surely).
-
+
* Support multi-part messages (new as of 2.0.7). I am unsure how
to best support multi-part messages so the Message (and related)
API may change in the future. Added Socket#more_parts?.
-
+
* Lots of fixes. Many classes use finalizers to deallocate native
memory when they go out of scope; be sure to use JRuby 1.5.1 or
later to get important finalizer fixes.
== 0.4.1 / 20100511
@@ -118,67 +138,67 @@
used by libzmq.
== 0.4.0 / 20100510
* Changed the Socket#recv method signature to take an optional
message object as its first argument. This allows the library
- user to allocate and pass in their own message object for the
+ user to allocate and pass in their own message object for the
purposes of zero-copy. Original behavior was for the library to
*always* allocate a new message object to receive a message into.
Hopefully this is the last change required.
-
+
* Modified the Socket constructor to take an optional hash as its
final argument. It honors two keys; :receiver_klass and
:sender_klass. Passing in a new constant for either (or both) keys
will override the class used by Socket for allocating new
- Message objects.
+ Message objects.
== 0.3.1 / 20100509
* Modified ZMQ::Message so we have both an UnmanagedMessage where
memory management is manual via the #close method, and Message where
memory management is automated via a finalizer method run during
garbage collection.
-
+
* Updated ZMQ::Message docs to make it clearer how to use a subclass
and FFI::Struct to lazily access the message buffer. This gets us as
close to zero-copy as possible for performance.
-
+
* Fixed a memory leak in Message where the FFI::Struct backing the
C struct was not being freed.
-
+
* Tested the FFI code against MRI 1.8.x and 1.9.x. It works!
-
+
* Patched a potential problem in LibZMQ::MessageDeallocator. It was
crashing under MRI because it complained that FFI::Pointer did not
- have a free method. It now checks for :free before calling it.
+ have a free method. It now checks for :free before calling it.
Need to investigate this further because it never happened under
JRuby.
-
+
* Modified the Socket constructor slightly to allow for using
unmanaged or managed messages.
-
+
* Changed the /examples to print a throughput (msgs/s) number upon
completion.
== 0.3.0 / 20100507
* ZMQ::Socket#send and ZMQ::Socket#recv semantics changed
* The official 0mq ruby bindings utilize strings for #send and #recv.
However, to do so requires lots of copying to and from buffers which
greatly impacts performance. These methods now return a ZMQ::Message
object which can be subclassed to do lazy evaluation of the buffer.
-
+
* Added ZMQ::Socket#send_string and ZMQ::Socket#recv_string. They
automatically convert the messages to strings just like the official
0mq ruby bindings.
* Fixed bug in ZMQ::Util#error_string
-
+
* Split the ZMQ::Message class into two classes. The base class called
UnmanagedMessage requires manual memory management. The Message
class (used by default by Socket) has a finalizer defined to
automatically release memory when the message object gets garbage
collected.
-
-
+
+
== 0.2.0 / 20100505
* 1 major enhancement
* Birthday!