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