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.

Reply via email to