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