Release Name: 3.1.0
Notes:
sleepy_penguin 3.1.0 - minor fixes and features
sleepy_penguin provides access to newer, Linux-only system calls to wait
on events from traditionally non-I/O sources. Bindings to the eventfd,
timerfd, inotify, and epoll interfaces are provided.
* http://bogomips.org/sleepy_penguin/
* sleepy.penguin@librelist.org
* git://bogomips.org/sleepy_penguin.git
* http://bogomips.org/sleepy_penguin/NEWS.atom.xml
Changes:
* add TimerFD::CANCEL_ON_SET constant
ref: http://www.man7.org/tlpi/api_changes/
* fix concurrent Epoll#wait on the same epoll fd
* SignalFD interface removed (unworkable with Ruby runtimes)
* use rb_update_max_fd() if available (Ruby 1.9.3)
* reintroduce SLEEPY_PENGUIN_VERSION constant ("3.1.0")
Changes:
GIT-VERSION-GEN | 2 +-
README | 4 +-
ext/sleepy_penguin/epoll.c | 237 ++++++++++---------------
ext/sleepy_penguin/epoll_green.h | 95 ++++++++++
ext/sleepy_penguin/extconf.rb | 8 +-
ext/sleepy_penguin/inotify.c | 1 -
ext/sleepy_penguin/missing_rb_update_max_fd.h | 3 +
ext/sleepy_penguin/signalfd.c | 6 +-
ext/sleepy_penguin/sleepy_penguin.h | 1 +
ext/sleepy_penguin/timerfd.c | 6 +
lib/sleepy_penguin.rb | 6 +
sleepy_penguin.gemspec | 2 +-
test/test_epoll.rb | 102 ++++++++++-
13 files changed, 323 insertions(+), 150 deletions(-)
commit db1eb67855149050e448c63df12ade22135916cd
Author: Eric Wong
Date: Wed May 2 08:56:22 2012 +0000
sleepy_penguin 3.1.0 - minor fixes and features
* add TimerFD::CANCEL_ON_SET constant
ref: http://www.man7.org/tlpi/api_changes/
* fix concurrent Epoll#wait on the same epoll fd
* SignalFD interface removed (unworkable with Ruby runtimes)
* use rb_update_max_fd() if available (Ruby 1.9.3)
* reintroduce SLEEPY_PENGUIN_VERSION constant ("3.1.0")
commit 455bd1f97e978d337764e2c917353889c3fa4d9c
Author: Eric Wong
Date: Wed May 2 08:52:03 2012 +0000
reintroduce SLEEPY_PENGUIN_VERSION constant
We unfortunately need it since we switched to the
per-thread epoll_wait structures.
commit 1264e45ee8776e68df08e76a75d08fa745266e22
Author: Eric Wong
Date: Wed May 2 08:24:52 2012 +0000
timerfd: remove unusable constants (never released)
timerfd currently (Linux 3.3.x) only supports CLOCK_REALTIME and
CLOCK_MONOTONIC, and not every single clock supported by POSIX
clocks.
commit e2a9b831ec9ab2c8fad622deec1aef8853f4cb41
Author: Eric Wong
Date: Sun Apr 22 08:13:46 2012 +0000
epoll: update comment on free(NULL) usage
It's POSIX, and since epoll is Linux-only and Linux
uses glibc which is pretty up-to-date w.r.t POSIX,
we don't have to worry...
commit b6982e360e00adc2a15c6d75dc6a5cde56cd9e7f
Author: Eric Wong
Date: Sat Dec 10 20:50:41 2011 +0000
teset: epoll used as a queue
This is a testcase I wrote a few months ago
commit 6fa0bc3f4c6fd959463a3906a820a724076a416c
Author: Eric Wong
Date: Thu Mar 22 08:29:13 2012 +0000
epoll: use per-thread data structure for concurrent Epoll#wait
This allows multiple threads to park on Epoll#wait (without
holding onto the GVL). This allows a single, one-shot notification
to wake up a single thread (another notification to a different
IO object would wake up another thread).
This allows using the same multi-threaded, EPOLLONESHOT-based
design as cmogstored:
http://bogomips.org/cmogstored/queues.txt
commit ec3be1488e53036a9a502fbb670ea584c41d5ade
Author: Eric Wong
Date: Thu Mar 22 08:27:31 2012 +0000
test_epoll: disable expensive test without STRESS
Tests run a lot faster, now, and this isn't functionality
we have to worry about often now that I better understand
MRI internals.
commit e38bb616f8dc15ba3cf082388aca75ac449645e6
Author: Eric Wong
Date: Thu Mar 22 08:24:59 2012 +0000
sleepy_penguin.h: add prototype for rb_thread_io_blocking_region
This function is exposed in the libruby-static archive for
Ruby 1.9.3, but there is no publically-declared prototype for it.
commit c72bc3f27b1ea65baa36eba3d24a32a1b9647ac1
Author: Eric Wong
Date: Wed Mar 7 09:21:45 2012 +0000
epoll: split out ugly green thread code
It's ugly and confusing to look at, so split it out.
commit c309a1eca250ae55f454f5cbe9248191d7ff0e82
Author: Eric Wong
Date: Thu Feb 23 08:15:21 2012 +0000
test: new testcase for edge-triggered accept
Found uncommited in my working directory, I can't remember
when/where I wanted to test this, but we might as well for
documentation purposes...
commit ef6beed6ae65e1d66e7a23a61aadee68a65d9757
Author: Eric Wong
Date: Tue Jul 26 17:20:10 2011 -0700
use sleepy.penguin@librelist.org address instead of .com
Neither we nor librelist are commercial projects, so use
the TLD preferred for non-profit entities.
commit c77c7e4cf7f2850d7163db3fcbed5a0ef829edb9
Author: Eric Wong
Date: Tue Jul 26 17:11:43 2011 -0700
disable SignalFD interface
It's a waste of memory to have something that has no chance
of working reliably with any existing Ruby runtimes.
commit 73732a743e90cb40336946168619e0d328f7e213
Author: Eric Wong
Date: Tue Jul 26 17:07:27 2011 -0700
rb_update_max_fd() support for epoll
This is the only descriptor we manage ourselves and don't
use IO.for_fd with (epoll is quite "special" wrt fork).
commit 39a80da93d03c30b4e39e9363e0233a891c83935
Author: Eric Wong
Date: Thu Jun 16 07:45:40 2011 +0000
fix unused variable warnings
Oops...
commit e71c6f4f4a79ae6d21a0da1a767af2ed168df0f3
Author: Eric Wong
Date: Wed Jun 15 16:36:56 2011 -0700
timerfd: add new constants from 2.6.39 and 3.0
We still need to document these.
ref: http://www.man7.org/tlpi/api_changes/
commit c4e6fa6fed7213ca4f7ac270b56bfd4c044c7b91
Author: Eric Wong
Date: Wed Jun 8 17:00:42 2011 -0700
test_epoll: add level trigger test
Just to ensure we still work with level triggered usage.
|