ChangeLog in sleepy_penguin-3.2.0 vs ChangeLog in sleepy_penguin-3.3.0
- old
+ new
@@ -1,6 +1,212 @@
ChangeLog from http://bogomips.org/sleepy_penguin.git
+ commit 6ea1667ab4f5e96e3f761493a8c82a844aa4922b
+ Author: Eric Wong <normalperson@yhbt.net>
+ Date: Mon Dec 30 01:22:58 2013 +0000
+
+ sleepy_penguin 3.3.0 - fixes and compatibility improvements
+
+ Most notably, this fixes memory leaks for any users of inotify
+ reads, epoll/kevent waiting using short-lived thread. Users of
+ long-lived threads for these functions (all Rainbows!, yahns, and
+ zbatery users) are not affected. A fair amount of internal cleanup
+ was necessary for this.
+
+ Compatibility with non-Linux systems without clock_gettime is
+ improved, thanks to Lin Jen-Shin.
+
+ Note: the kevent code is not at all optimized and still uses
+ RARRAY_PTR, so it likely sucks under rbx and MRI 2.1.
+
+ Eric Wong (13):
+ test_epoll: minor compatibility fix for Ruby 2.1.0
+ avoid RARRAY_PTR usage for Linux-only bits
+ init: avoid redefinition warning for _GNU_SOURCE
+ Rakefile: kill raa_update task
+ util: minor cleanup to favor rb_io_get_io
+ tests: switch to minitest
+ test_epoll: switch test_dup_and_fork to exit!
+ remove all signalfd-related files
+ tests: remove version-dependent FD_CLOEXEC checks
+ work around lack of rb_io_get_io in Rubinius
+ value2timespec: use StringValueCStr for correctness
+ refactor and fix leak from thread-local storage use
+ extconf: avoid unnecessary linkage against libkqueue
+
+ Lin Jen-Shin (1):
+ Support for broken system without clock_gettime.
+
+ commit 117a81eddb1375dd1d08d7e7b57c585354dd2d90
+ Author: Eric Wong <normalperson@yhbt.net>
+ Date: Fri Dec 27 23:09:24 2013 +0000
+
+ extconf: avoid unnecessary linkage against libkqueue
+
+ The check for libkqueue may succeed out-of-the-box on Debian systems
+ where libkqueue-dev is installed. However, libkqueue-dev on Debian
+ installs sys/event.h in a non-standard include path
+ (/usr/include/kqueue), so it is not picked up by default and
+ kqueue support is never compiled.
+
+ So only check for (and link to) libkqueue if we are configured
+ to detect sys/event.h. This should not affect users on *BSD
+ platforms with native kqueue support.
+
+ commit 45ce6646ab7cc62ad30ec0bf9c68719f9c467866
+ Author: Eric Wong <e@80x24.org>
+ Date: Fri Dec 27 23:02:48 2013 +0000
+
+ refactor and fix leak from thread-local storage use
+
+ Storing heap-allocated memory in __thread is not feasible for a
+ library since it provides no automatic resource de-allocation.
+
+ This oversight caused rare applications which use short-lived
+ threads for epoll_wait, kevent, or inotify read to leak memory over
+ time. So we refactor everything to use pthread_* thread-local
+ storage APIs instead.
+
+ While we're at it, we can safely use a common, generic buffer for
+ inotify, epoll, and kevent to avoid running into PTHREAD_KEYS_MAX
+ limitations.
+
+ These leaks only affected sleepy_penguin v3.2.0 and later, and
+ only applications which use short-lived threads to call epoll_wait,
+ kevent and inotify read.
+
+ commit a00b3766fa4c498a65f5742e161a382717db3041
+ Author: Eric Wong <normalperson@yhbt.net>
+ Date: Thu Nov 21 18:29:25 2013 +0000
+
+ value2timespec: use StringValueCStr for correctness
+
+ rb_inspect is unlikely to put a \0 byte in the middle of a string,
+ but use StringValueCStr anyways just in case to catch potential bugs.
+
+ commit 25e4c572eb30e2caae6528ef4f2b784fe5540aff
+ Author: Eric Wong <normalperson@yhbt.net>
+ Date: Thu Nov 21 18:24:46 2013 +0000
+
+ work around lack of rb_io_get_io in Rubinius
+
+ https://github.com/rubinius/rubinius/issues/2771
+
+ commit 099f4464e034e76d46493dae8fc211fdd93c9127
+ Author: Eric Wong <normalperson@yhbt.net>
+ Date: Sat Oct 19 11:56:57 2013 +0000
+
+ tests: remove version-dependent FD_CLOEXEC checks
+
+ Not all versions/implementations of Ruby set FD_CLOEXEC by default.
+ And it is conceivable MRI will disable the current FD_CLOEXEC
+ default out of portability concerns, so we only test that our
+ code matches.
+
+ commit 620b6c13a00225d8f154bba875b710df15a64311
+ Author: Eric Wong <normalperson@yhbt.net>
+ Date: Sat Oct 19 11:17:03 2013 +0000
+
+ remove all signalfd-related files
+
+ They're long disabled, and there's no way for them to work sanely
+ inside any VM/language which supports signal handlers. There's
+ little need, even, as Ruby has a good API for signal handlers and we
+ have eventfd support.
+
+ commit 50763e8a3f5fac33e456c459e187f6a9b1c91fe3
+ Author: Eric Wong <e@80x24.org>
+ Date: Sat Oct 19 08:42:56 2013 +0000
+
+ test_epoll: switch test_dup_and_fork to exit!
+
+ exit! is preferable for forked processes in tests since
+ exit may fire at_exit handlers for tests depending on
+ which test suite or version of Ruby is loaded.
+
+ This was problematic in minitest 5.0.8 but not 4.3.2
+
+ commit 18f96b1a5386dec0dc9b5f14c64c7de8b4230ca2
+ Author: Eric Wong <normalperson@yhbt.net>
+ Date: Sat Oct 19 07:21:41 2013 +0000
+
+ tests: switch to minitest
+
+ Add a compatibility shim in test/helper to avoid noisy warnings with
+ Minitest (out-of-the-box on Ruby 2.0.0) and also Minitest 5.
+
+ Automated conversion via:
+ perl -i -p -e 's,test/unit,./test/helper,g' test/test_*.rb
+ perl -i -p -e 's,Test::Unit::TestCase,Testcase,g' test/test_*.rb
+
+ Yes, I prefer Perl for one-liners :P
+
+ commit 782dba32b5534ffaa5727a762a4c628bdac32331
+ Author: Eric Wong <normalperson@yhbt.net>
+ Date: Sat Oct 19 07:16:22 2013 +0000
+
+ util: minor cleanup to favor rb_io_get_io
+
+ This makes our code slightly smaller on Ruby 1.9+
+
+ commit 23447e63e64753223768d8481eb3c98f1c933bdf
+ Author: Eric Wong <normalperson@yhbt.net>
+ Date: Mon Sep 30 18:21:30 2013 +0000
+
+ Rakefile: kill raa_update task
+
+ RAA is dead
+
+ commit 81b0e8e247746ed9c30fb4dc8e911b38eedd38bc
+ Author: Eric Wong <normalperson@yhbt.net>
+ Date: Thu Sep 26 21:37:12 2013 +0000
+
+ init: avoid redefinition warning for _GNU_SOURCE
+
+ This is already defined for most (if not all) Rubies when ruby.h
+ is included.
+
+ commit cda98c580e7fdc12f996d29436a13b282affc92e
+ Author: Eric Wong <normalperson@yhbt.net>
+ Date: Thu Sep 26 21:32:44 2013 +0000
+
+ avoid RARRAY_PTR usage for Linux-only bits
+
+ RARRAY_PTR incurs extra overhead on the Ruby 2.1.0 and Rubinius
+ GC implementations, so avoid it. None of these are believed
+ to be performance-critical enough to benefit from RARRAY_PTR
+ in older Rubies, either.
+
+ commit 5deb65e7274a4187033a60c6c859fd92ccfce88e
+ Author: Eric Wong <normalperson@yhbt.net>
+ Date: Thu Sep 26 21:31:27 2013 +0000
+
+ test_epoll: minor compatibility fix for Ruby 2.1.0
+
+ Ruby 2.1.0 raises a subclass of Errno::EINPROGRESS, which fails the
+ exact matching of assert_raises. This does not affect any known
+ real code.
+
+ commit df5628fee6d8f6c854302d90db5c35ba8dea83c7
+ Author: Lin Jen-Shin <godfat@godfat.org>
+ Date: Tue Sep 24 16:55:47 2013 +0800
+
+ Support for broken system without clock_gettime.
+
+ Fallback mechanism was copied from clogger:
+
+ http://clogger.rubyforge.org/
+
+ This would also make sleepy_penguin compiles on Mac OS X,
+ which is lacking clock_gettime. All tests passed for me.
+
+ [ew: fixed indentation
+ Note: this project does not and will never officially support
+ non-Free OSes, but there are likely other systems without
+ clock_gettime but has kqueue (perhaps via libkqueue).]
+
+ Signed-off-by: Eric Wong <normalperson@yhbt.net>
+
commit f039e80b90260f7c4a831806ddc4d22fc9d27eb4
Author: Eric Wong <normalperson@yhbt.net>
Date: Tue Jul 16 18:09:51 2013 +0000
sleepy_penguin 3.2.0 - minor bug fixes, preliminary kqueue support