So thanks to a few people who replied, IO::KQueue is now up on CPAN.
So I'm going to do the naughty and upload a new version that breaks backward compatibility so that I can clean up a few features. The returned events only included the fd and the filter, whereas it makes sense for me to include everything returned to me by the kevent() system call.
So I'm just going to return a list of arrayrefs. Hopefully calling newAV() isn't too expensive to make this overkill. The only alternative would be to call a callback for each event, and I think that would have much more overhead (crossing the C->perl boundary too often) compared to returning a list.
Now I have to go back and patch Danga::Socket again.