Ruby 2.0-preview2 arrives while Refinements are being refined
The second preview of Ruby 2.0 has been released, just under a month after the arrival of the first preview. As the development moves forward, hard decisions are being made. One of the headline features of Ruby 2.0 is Refinements, a language enhancement designed to solve the problem of monkey-patching. Monkey-patching is a process where the Ruby classes are mutated to take on different properties; this has been used by many Ruby libraries.
Refinements are designed to localise the types of changes monkey-patching was used for and make it more managable. But, discussions after a detailed analysis of the proposed Refinements by jRuby creator Charles Nutter, have lead to a rethink taking place over the extent of the Refinements implementation.
Yukihiro "Matz" Matsumoto, the original creator of Ruby, announced at the weekend that "Since there still remain undefined corner case behavior in refinements, and the time is running out, I decided not to introduce full refinement for Ruby 2.0". Refinements will now be limited to file scope among other changes. This should avoid the likely performance problems that wider scopes for Refinements would have caused. The issue is, though, still under discussion and no final decisions have been taken on how the far the changes on refinements will go.