- The protocol reader now forces all strings to be encoded using
- Make tests explicitly require files from the local tree to prevent files from the search path to be accidentally required.
- Fix bug that caused EAGAIN to be raised after the cumulative time spent waiting for the socket to become readable/writable exceeded the connection-wide timeout.
- Use patched version of hiredis to support multi bulk depth of 2.
- Block indefinitely when timeout is set to zero.
Refactor both the pure Ruby and the native connection class to use non-blocking I/O. The code now uses
IO.selectfor the pure Ruby connection class, and
rb_thread_selectfor the native connection class, to detect if a socket is readable/writable. This makes the code more portable (w.r.t. timeouts on connect/read/write), and more friendly towards threads running in the same interpreter (they can now be properly scheduled while hiredis blocks on select(2)).
#flushmethod to connection class that flushes the write buffer to the socket. This buffer was previously only flushed whenever
Always statically link to the bundled hiredis version instead of searching the system-wide paths.
Update hiredis to 0.10.0.
- Fix bug where one or more arguments passed to #write were garbage collected before being appended to the write buffer.
Connection#connect_unixto accept an extra timeout argument. When connecting times out,
Errno::ETIMEDOUTis raised. The timeout value should be given as number of microseconds to wait.
Add support for connecting to Unix sockets via
Drop dependency on redis-rb so it can be used independently, or in another library that doesn't require redis-rb.
Add pure Ruby protocol parser and connection class to use as fallback when the extension cannot be loaded. These classes have the same API as the extension and use the same unit tests to ensure compatibility.