From: Joel VanderWerf Date: 2003-11-29T10:24:16+09:00 Subject: Re: anything disappearing from Ruby for 2.0? David A. Black wrote: > Hi -- > > An open question for Matz: > > Is anything disappearing from Ruby in 2.0? Not that I have a very big > list of things I want removed :-) but I'm wondering, for example, > about the Perl-like special variables. And just wondering generally > if there's anything in that category. If the perlish globals are going away, then that suggests another possibility that would make the remaining globals more regular. I often have to look up which globals are per-thread (and this was especially true when I was starting out with ruby). What if the name of the global determined in a very simple way whether is was per-thread or not? For example, the rule could be: all globals matching /\$_\w*/ are per-thread. All others are per-process. That's consistent with the current use of $_, which is per-thread. What breaks? Well, if you take out all the perlish variables from the list in the Pickaxe (pp.216-218), the only variable whose behavior would change is $SAFE. So that would have to be replaced with $_SAFE, or left as a special case (perhaps with a warning, and expiring after a while). I'd rather remember one special case than two pages of them. The standard library is unaffected, aside from any use of $SAFE, since there are no variables in it that match /\$_\w+/. Same goes for all the RAA projects that I've downloaded. This change would also make it easy to work with user-defined thread local variables. Instead of Thread.new { Thread.current[:foo] = 3 } you could simply do Thread.new { $_foo = 3 } I guess that's probably more efficient, too, since it saves a method call.