The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

1.59
   -- Don't keep watching for write after all writing is completed OK
      (Dave Leadbeater)
   -- Reset() now closes the Epoll or KQueue socket (Radu Greab)

1.58
   -- Remove unnecessary bless() calls in tests (5.10 compatibility)
      (msergeant)

1.57
   -- Make tcp_cork be a no-op (rather than exploding) when operating on
      a fd that isn't a network socket (like a local pipe, which doesn't do
      TCP).

1.56
   -- Reset method _still_ wasn't resetting enough.  had to reset the
      EventLoop method as well, so _InitPoller would get called and reset
      stuff.

1.55
   -- Reset method wasn't resetting enough.

1.54 (2006-11-13)
   -- cap sysreads at 1MB, not 5MB.  seems to crash perl less for
      more people.  *sigh*

1.53 (2006-08-24)
   -- Don't allow ->read() if socket has been closed (msergeant).
   -- Added local_ip_string() and local_addr_string() (msergeant).
   -- Removed bogus 'ticker' code from KQueue event loop (msergeant).
   -- Converted comment based docs to POD and fix some of those docs
      to match reality (msergeant).

1.52: (2006-07-09)
   -- AddTimer now returns a Danga::Socket::Timer object which you can
      call the 'cancel' method on.

   -- A good catch by Whitaker. If an epoll_ctl problem occurs when
      manipulatiing something that isn't an INET domain socket, the
      unpacking of remote information will fail.

1.51: (2006-04-27)
   -- let subclasses overwrite the behavior on incomplete writes.
      default, as always, is just to force watching of writability.
      but during, say, SSL stuff, it's useful to disable that.

1.50: (2006-04-17)
   -- use bytes.  was affecting djabberd with unicode XML messages.
      diagnosis by Artur Bergman and Tatsuhiko Miyagawa.

1.49: (2006-03-02)
   -- patch to allow pluggable writer functions per socket.  so you
      can have SSL connections that do Net::SSLeay writes (or whatever)
      instead of relying on tied handles.

1.48: (2005-10-12)
   -- patch from Eric Lambrecht <eml@guba.com> who noticed that calling
      sysread in Perl w/ over ~5MB could cause Perl to just die and quit.
      so limit reads to 5MB.

1.47: (2005-08-29)
   -- new $ENV{DS_DEBUG} to warn about weird conditions, which currently
      means just peer_ip_string returning undef.  trying to trace that down
      in perlbal occasionally, but DS_DEBUG might be useful in the future
      for other things
   -- account for PostEventLoop running with two items in %PushBackSet,
      the first of which closes the second, so the second would crash
      trying to deref undef when it can't find the previously evaluated
      key in the now-empty hash.

1.46: (2005-08-24)
   -- warn about undef sockets in Danga::Socket's constructor, or overwriting
      the descriptor map with a socket using the same fd as another in use.
   -- change all print STDERR to warn (so we can trap 'em with $SIG{__WARN__})
   -- delay the removal of fds from DescriptorMap to eliminate warnings
      when one fds in the same epoll_wait/etc return set kills one of
      the others which hasn't been processed yet.  new test t/12-closerace.t to
      demonstrate the situation.

1.45: (2005-08-23)
   -- don't hang forever if there is a timer but no sockets
      and looptimeout is -1.  the problem was we always picked the
      lesser time of LoopTimeout and NextTimerTimeout, but if LoopTimeout
      was -1 (which means infinity), we preferred that, wrongly.
   -- in RunTimers, calculate the milliseconds in integer, and add 1
      to remove some floating point weirdness which caused 20-30 extra
      loops which accomplished nothing.  see comments.

1.44: (2005-08-16)
   -- fix another bug in push_back_read... ancient:  comma instead of
      semi-colon (can you tell nobody used this function before?)
   -- fix a bug in push_back_read ... apparently it never actually
      worked when you asked for less bytes than were available.
   -- adds code for when kqueue returns a fd we don't have a
      mapping for (Matt Sergeant)
   -- generic timer support (Matt Sergeant), use HiRes and rearrange
      to share some code (Brad)
   -- make tcp_cork a noop on non-linux (FIXME: port to bsd at least)

1.43:
   -- don't even try epoll if not on a known/tested arch
   -- updated POD docs

1.42:
   -- use the right epoll system call numbers on non-x86
      machines
   -- start of a good test suite
   -- 64-bit struct support (test suite passes on ia64, ppc)
      (and presumably ppc64, but yet untested)


1.41:
   -- make the Poll mode behave like Epoll/Kqueue in that
      fds returned w/ no corresponding Danga::Socket object
      or OtherFds coderef just get ignored.  make it robust
      against apps with races, perhaps?  patch from Justin Azoff
      <JAzoff@uamail.albany.edu>

1.40:

   -- Kqueue support from Matt Sergeant

1.39:

   -- make BSD::Resource optional

1.38:

   -- added support for profiling (epoll only at the moment while this
      feature is further fleshed out); user application is required to
      enable profiling and actually process the resultant data

   -- if epoll_wait returns an event we can't handle, delete it.
      this means the application fucked up and lost its state somehow.
      or maybe Danga::Socket did?  still debugging this in Perlbal.

1.25: (2004-10-22)

   -- move the syscall.ph require into "package main" rather than stealing
      all its definitions into our namespace.  now other modules can
      use syscall.ph and Danga::Socket at the same time (as long as they're
      also polite and load it into main)  (NOTE: if you know a better way
      to do this, let us know...)

1.24: (2004-10-21)

   -- ability to steal the underlying socket from the Danga::Socket
      object.  this is useful if a caller wants to hold onto the socket
      but destroy the Danga::Socket object (previously the Danga::Socket
      close would close the underlying socket)

1.22: (2004-10-21)

   -- minimal POD docs
   -- first public release