Project

General

Profile

Actions

Bug #5698

closed

rexml Encoding logic creates unnecessary singleton classes, aliases at runtime

Added by headius (Charles Nutter) over 12 years ago. Updated over 11 years ago.

Status:
Rejected
Assignee:
-
Target version:
ruby -v:
1.8.7 head
[ruby-core:41440]

Description

The logic for switching a given parser to a new encoding currently does the following:

  • Reopens the Encoding module (only on first use of the encoding)
  • Defines two new methods for the encoding being applied (only on first use)
  • Singletonizes the parser object and aliases the encoding-specific methods to "encode" and "decode"

This last phase is unnecessary, but happens at runtime whenever an encoding is applied to a parser. The resulting singletonizing and method aliasing causes cache flushes.

I have created a patch that does not use this singleton logic and which will not cause any singletons or method table updates at steady-state.

https://gist.github.com/1420708

I know 1.8.7 is only in security patch mode, but I thought I'd throw this out there. JRuby will probably apply it to our fork of 1.8.7 stdlib.

Updated by headius (Charles Nutter) over 12 years ago

Oops, I realized that also has my baseparser.rb patch. It can be ignored; there's a separate bug for that applied against ruby-trunk. I'd love to see that backported to 1.8.7, but it's not related to this bug.

Updated by headius (Charles Nutter) over 11 years ago

This should be fixed if 1.8 is still open, or closed if it is not.

Updated by kou (Kouhei Sutou) over 11 years ago

  • Status changed from Open to Rejected

http://www.ruby-lang.org/en/news/2011/10/06/plans-for-1-8-7/ says "We continue to provide normal maintenance for 1.8.7 as usual, until June 2012. ... After that we stop bugfixes.". Now, "after June 2012" is true. So I close this.

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0