Very cute!
However, i'm curious about the choice of interface. Having individual ops for something like a socket API seems rather peculiar to me.
Why do we not have an object oriented interface on a socket class?
(ditto for non-trivial file IO)
I arrived at the same conclusion but I wanted something to play with for now. It just isn't elegant to have "opcodes" for things like sockets and extended IO APIs.
I'm going to put my effort towards the class/object internals and imcc for a bit, then I plan to convert all of the IO API to methods (not just the socket API). But, there is no reason we can't leave a few common calls exposed as opcodes (open, close, print, etc.)
You make a good point though. Do not consider what I've done for IO to be the "official" API going forward. There were a lot of things written before objects (and even PMCs) that are just temporary.
-Melvin