0.3.2:

* Perform a blocking system call if we're the only thread running (1.8 only)

* Run in non-blocking mode if we're the only thread in the process (1.8 only)

* Make Rev::Loop#run_nonblock signal-safe

* Fix spurious firing of Rev::AsyncWatchers

0.3.1:

* Configurable intervals for Rev::StatWatcher

* Fix broken version number :(

* Removed warning about spuriously readable sockets from Rev::Listener

* Rev::Listener ignores ECONNABORTED from accept_nonblock

* Document rationale for EAGAIN/ECONNABORTED handling in Rev::Listener

0.3.0:

* Add Rev::StatWatcher to monitor filesystem changes

* Add Rev::Listener#fileno for accessing the underlying file descriptor

* Support for creating Rev::Listeners from existing TCPServers/UNIXServers

* Upgrade to libev 3.8

* Simplified code loading

* Pull in iobuffer gem and change outstanding uses of Rev::Buffer to IO::Buffer

* Fix memory leaks resulting from strange semantics of Ruby's xrealloc

* Rev::UNIXServer: use path instead of the first argument

* Rev::Server-based classes can build off ::*Server objects

0.2.4:

* Ugh, botched my first release from the git repo.  Oh well.  Try, try again.

0.2.3:

* Initial Windows support

* Initial Ruby 1.8.7 and 1.9.1 support

* Upgrade to libev 3.52

* Add checks for sys/resource.h and don't allow getting/setting maxfds if it
  isn't present

0.2.2:

* Correct a pointer arithmetic error in the buffering code that could result
  in data corruption.

* Upgrade to libev 3.41

* Relax HTTP/1.1 reponse parser to allow the "reason" portion of the response
  header to be omitted

0.2.1:

* Upgrade to libev 3.31

* Rev::Loop#run_once and Rev::Loop#run_nonblock now return the number of events
  received when they were running

* Remove inheritence relationship between Rev::IO and Rev::IOWatcher

* Loosen HTTP/1.1 response parser to accept a common malformation in HTTP/1.1
  chunk headers

* Add underscore prefix to instance variables to avoid conflicts in subclasses

* Remove Rev::SSLServer until it can be made more useful

0.2.0:

* Initial Ruby 1.8.6 support

* Omit Rev::LIBEV_VERSION constant

* Catch Errno::ECONNRESET when writing to sockets

* SSL support via Rev::SSL, with a small C extension subclassing Ruby's
  OpenSSL::SSL::SSLSocket allowing for non-blocking SSL handshakes

* Initial Rev::Utils implementation with #ncpus and methods to query and
  change the maximum number of file descriptors for the current process.

* Initial Rev::AsyncWatcher implementation for cross-thread signaling

* Handle unspecified Content-Length when encoding is identity in HttpClient

* Fix bug in HttpClient processing zero Content-Length

* Get rid of method_missing stuff in Rev::HttpClient

* Have Rev::HttpClient close the connection on error

* Allow Rev::TCPSocket#on_connect to be private when accepting connections
  from a Rev::TCPServer

0.1.4:

* Calibrate Rev::TimerWatchers against ev_time() and ev_now() when the watcher
  is attached to the loop to ensure that the timeout interval is correct.

* Add check to ensure that a Rev::Loop cannot be run from within a callback

* Store Rev::Loop.default in a Thread-specific instance variable

* Upgrade libev to 0.3.0

* Rename BufferedIO to IO

* Fixed bug in BufferedIO#write_output_buffer causing it to spin endlessly on
  an empty buffer.

* Added has_active_watchers? to Rev::Loop to check for active watchers

0.1.3:

* Fixed bug in Rev::Buffer read_from and write_to: now rb_sys_fail on failed
  reads/writes.

* Change Rev::Buffer memory pools to purge on a periodic interval, rather than
  whenever the GC marks the object.

* Fix bug in tracking the active watcher count.  Factor shared watcher behavior
  from rev_watcher.h to rev_watcher.c.

0.1.2:

* Commit initial specs

* Improve RDoc for the library

* Eliminate "zero copy" writes as they bypass the event loop

* Added Rev::Buffer C extension to provide high speed buffered writes

* Implement Rev::TCPSocket#peeraddr to improve compatibility with Ruby sockets

* Added Rev::Listener.close for clean shutdown of a listener

* Rev::Loop.default used to call ev_loop_default() (in C).  However, this
  registers signal handlers which conflict with Ruby's own.  Now the behavior
  has been changed to return a thread-local singleton of Rev::Loop.

* Creating a new Rev::TCPListener will disable reverse lookups in BasicSocket

* Made backlog for Rev::TCPListener user-definable

* Rev::TCPSocket now implements an on_resolve_failed callback for failed DNS
  resolution.  By default it's aliased to on_connect_failed.

* Changed event_callbacks to use instance_exec rather than passing the
  watcher object as an argument.  Documented use of defining an event
  callback as a block

* Subsecond precision for Rev::TimerWatchers

0.1.1:

* Added Rev::HttpClient, an asynchronous HTTP/1.1 client written on top of
  the Rev::TCPSocket class

* Imported HTTP response parser from the RFuzz project

* Added exception handling for Errno::ECONNRESET and Errno::EAGAIN

* Fixed bugs in buffered writer which resulted in exceptions if all data
  couldn't be written with a nonblocking write.

0.1.0:

* Initial public release