I browsed through the ruby source code. It seems that Ruby manages threads on its own with the setjmp longjmp stuff. Doesn't that imply that I/O operations are blocking on all the Ruby threads at once? I have also seen that the interpreter actually executes an evaluation tree instead of PCodes. I have not yet written a single line of code in Ruby, so I do not know wether there are constructs in the language which would imped the use of a "classic" bytecode machine. My guess is that the compiler would be much more complex ? Would there by any performance gains to expect? Anybody tell me if I'm wrong?