Hello I am not following 1.9 development. However, I found some features in 1.8 that seem quite disturbing, and they are still present in my copy of 1.9. For one there is the behaviour of Kernel#gets. It by default tries to open the script arguments as input files. I see that this is why we have Kernel#gets in the first place - to do more than STDIN.gets. However, I find this behaviour quite surprising and undesirable in anything but the simplest one-liner scripts. I personally would feel better if this was available as a command line option, and Kernel#gets did STDIN.gets by default. There are also parts in Ruby core and stdlib that still depend on global constants for returning results. I find this very hard to use, leading to unreadable code and possible treading problems. The one I saw recently is IO::popen. It returns the PID of the created process in $?. Unlike some of the Regex methods this one really stores a piece of information that is otherwise inaccessible into a global variable. Given that Ruby supports threading, and even real concurrent threads in 1.9 this is a disastrous interface. There is an alternative to popen in 1.9 - it is possible to emulate it, and do even more with IO::pipe and Kernel#spawn without using global variables. However, the docs do not mention this possibility. Thanks Michal