about summary refs log tree commit homepage
DateCommit message (Collapse)
2011-01-21sleepy_penguin 1.3.1 - safety checks for delete v1.3.1
One bugfix for Epoll#delete: Eric Wong (1): safer closed checks for proxied objects
2011-01-21safer closed checks for proxied objects
Proxied objects may not be IOs at all, so have type-dependent checks to ensure they're closed.
2011-01-21sleepy_penguin 1.3.0 - incremental improvements v1.3.0
This release introduces compatibility with pre-EPOLLRDHUP systems. It also optimizes syscalls away for Epoll#set and Epoll#delete. Epoll#add, Epoll#mod and Epoll#del should no longer be needed in most code.
2011-01-21git.bogomips.org => bogomips.org
Shortening URLs to save precious bytes!
2011-01-21epoll: rdoc updates
2011-01-19move common packaging tasks into pkg.mk
Makes it easier to share common code between projects and still use sh/make instead of Ruby :P
2011-01-19use wrongdoc for URLs in Rakefile and gemspec
Trying to be DRY, but we're sleepy and drool a lot
2011-01-19GNUmakefile: fix manifest target
2011-01-18epoll: add a note about CLOCK_MONOTONIC for 1.8
We won't be spending too much time on 1.8 support anymore.
2011-01-17epoll: add cache/mark array debugging methods
Occasionally users may want a way to check if they stored an IO object or not, this makes it easier.
2011-01-17use FIX2INT when we know we have a FIXNUM
It's slightly faster
2011-01-17use flag cache and marks array to optimize away syscalls
We can have simplify user code by caching flags and using the GC mark array to avoid syscalls and unnecessary errors/exceptions.
2011-01-16lazily initialize the mark array
We don't want to end up accidentally splitting arrays for the same epoll file descriptor since they'll be linked.
2011-01-16epoll: deal with missing EPOLLRDHUP on older systems
Out-dated "enterprise" distros suck :P
2011-01-15sleepy_penguin 1.2.0 - epoll GC help v1.2.0
One convenience fix: epoll: prevent IO objects from getting GC-ed Users of our code may forget to keep references for their IO objects at all, and since it's not possible for GC to mark kernel memory, we just hold on to the IO objects for them. We can't unmark close()d file descriptors, ever, so we don't bother with the EPOLL_CTL_DEL case, either. Just storing IO objects in an array using the raw descriptor as a key will allow bounded space usage just like the in-kernel FD tables as long as the user remembers to close descriptors themselves.
2011-01-15epoll: prevent IO objects from getting GC-ed
Users of our code may forget to keep references for their IO objects at all, and since it's not possible for GC to mark kernel memory, we just hold on to the IO objects for them. We can't unmark close()d file descriptors, ever, so we don't bother with the EPOLL_CTL_DEL case, either. Just storing IO objects in an array using the raw descriptor as a key will allow bounded space usage just like the in-kernel FD tables as long as the user remembers to close descriptors themselves.
2011-01-13sleepy_penguin 1.1.1 - soft feathers, soft delete v1.1.1
SleepyPenguin::Epoll#delete method added for "soft" failures Documentation updates and cleanups, the website is now JavaScript-free! (Ignore the 1.1.0 "release", it was a lie)
2011-01-13packaging fixups, oops
Ugh, release got fat-fingered :<
2011-01-13sleepy_penguin 1.1.0 - soft feathers, soft delete
SleepyPenguin::Epoll#delete method added for "soft" failures Documentation updates and cleanups, the website is now JavaScript-free!
2011-01-13epoll: add "delete" for soft failures
No need to burden applications.
2011-01-13minor doc updates, use wrongdoc
Switch documentation over to wrongdoc, no more JavaScript! Our documentation still sucks.
2011-01-13test_epoll: redundant, redefined method, oops!
2011-01-13extconf.rb: remove unnecessary dir_config
We do not depend on external libraries other than the system C library
2010-09-27README: update summary
It seems to make more sense this way... Editors wanted :)
2010-09-26update documentation and build v1.0.0
Should be ready for release
2010-09-26test_epoll: workaround less aggressive GC in rbx
Some of the GC tests aren't realistic, but if they work in MRI then we can expect them to work reasonably well everywhere.
2010-09-26provide rb_io_close() for Rubinius
Rubinius 1.1.1 does not include this function ref: http://github.com/evanphx/rubinius/issues/497
2010-09-26epoll: fix typo for rb_memerror()
Tested on Rubinius.
2010-09-26misc documentation updates
We shall release without SignalFD support
2010-09-26wire up EventFD class
This wraps the eventfd(2) interface of Linux. Like TimerFD, it is not available on older distributions.
2010-09-26add TimerFD class
This wraps the timerfd_* interface in the Linux kernel. It is not available on older distributions.
2010-09-26epoll: add cross-thread test/example
This can potentially be very powerful under 1.9 with native threads
2010-09-26epoll: fix MRI 1.8 build
It was just st.h in the old days.
2010-09-26Epoll#dup and Epoll#clone inherit close-on-exec
There can be ways (in the future) where supporting Epoll#dup/Epoll#clone can proveuseful, so continue to support them until proven otherwise.
2010-09-26simplify epoll_create1 wrapper
There are no FD flags besides FD_CLOEXEC, so there's no point in making an extra fcntl() call.
2010-09-26epoll: add fork protection
It's dangerous to preserve epoll descriptors across fork, especially in Ruby where the GC can invalidate objects at any time. Installing pthread_atfork hooks prevents VALUE references stored in the kernel from leaking across process boundaries, making it far more difficult for a sanely written application to leak invalid VALUEs to the user.
2010-09-25Epoll#del only takes one argument
We don't have to emulate the C API exactly, and it makes life saner/easier for our users.
2010-09-25epoll: factor out event data packing/unpacking
Storing Ruby object values in the kernel means they won't be visible to the GC, but for the most part it's safe.
2010-09-25tests for EPOLLET and EINPROGRESS
Just to make sure edge-triggering works on newly created TCP connections.
2010-08-21extconf: enable detection of {timer,signal,event}fd.h
2010-08-21README: clarify that we're a Ruby library
2010-08-21initial - epoll support working