Feature #5977

Remove $, and avoid perlish global variables

Added by Benoit Daloze about 2 years ago. Updated about 2 years ago.

[ruby-core:42396]
Status:Rejected
Priority:Normal
Assignee:-
Category:core
Target version:2.0.0

Description

Hello,

As I mentioned at RubyConf, I would like the $, global variable to be removed for 2.0.

I would like to avoid "perlish" global variables in general, but I think many can't be removed for compatibility, and a few are actually useful shortcuts (mostly to the pattern matching variables). They are nice for golfing and small scripts, but I believe they hurt bigger scripts/code.

$, is used as the default separator for Array#join (and Kernel#print), and I think it causes more harm than good:
* I believe many ruby codes would fail (different and unexpected output) when setting $, , because it means a simple ary.join is not deterministic: you need ary.join('') which is long and quite unexpected for a "default" behavior.
* The behavior would be much clearer (a simple method with a sensible default) and so the documentation.
* It's mostly unused, and except for trivial scripts it will just be complicated to manage as it impacts globally the output.

What do you think?

History

#1 Updated by Roger Pack about 2 years ago

+1 those are incomprehensible for beginners.

#2 Updated by Thomas Sawyer about 2 years ago

Yes, but is is serious incompatibility and would have to wait for after 2.0, according to Matz' plans.

#3 Updated by Benoit Daloze about 2 years ago

It is some kind of incompatibility, but I think most code does not use $, at all, thus only some rare small scripts would be affected.

However, if this is unacceptable for compatibility, please change the target.

#4 Updated by Yukihiro Matsumoto about 2 years ago

  • Status changed from Open to Rejected

As Thomas mentioned, Ruby 2.0 would not introduce serious incompatibility. Reopen in the future (3.0?).

matz.

Also available in: Atom PDF