I've updated my patch that updates IO, net, and NIO to better support non-blocking IO, which also includes my kqueue Selector, and the implementation of NetworkInterface. Along with implementing real non-blocking IO, I've rewritten parts of the IO and net code to use the NIO implementation, reducing the amount of code use. I've also tried to make the JNI code as simple as possible, and to abstract out as much of this native code logic into the VM interface classes (IOW, the native logic is private instance data of our VM interface reference implementation).
I only get a few Mauve failures with this patch; most of them look like my tree is just out of date (serialization, URL and InetAddress, none of which I've changed here). Mauve may not be testing everything, though, so it's likely that there are bugs lurking here. The patches are big, so I'll just link to them here: <http://metastatic.org/source/io-nio.patch> <http://metastatic.org/source/io-nio2.patch> I haven't cleaned everything up, yet, so there are still some obsolete files that aren't removed yet, and I haven't addressed SIGPIPE at all. I've only tested this so far on Darwin/x86, but I'll try this on Linux/x86 too. Comments appreciated! Especially on whether or not this is good enough to commit, or what's lacking. Thanks.
