Bug #7152

Is the order of Module#instance_methods intended to be preserved?

Added by Hiro Asari almost 3 years ago. Updated almost 3 years ago.

[ruby-core:47950]
Status:Closed
Priority:Normal
Assignee:-
ruby -v:ruby 1.9.3p286 (2012-10-12 revision 37165) [x86_64-darwin12.2.0] Backport:

Description

https://github.com/jruby/jruby/issues/277 asks this question:

results = 10000.times.map do
chars = ('A'..'Z').map(&:to_sym).shuffle

cls = Class.new do

chars.each do |chr|
  define_method(chr) {}
end

end

chars == cls.instance_methods.take(26)
end

p results.all?{|o|o.equal? true} # => true on MRI

History

#1 Updated by Charles Nutter almost 3 years ago

I vote no! Imposing order upon the method table requires all implementations to use an ordered data structure here where unordered structures might serve better. Also consider that reflective method access on most other platforms does not guarantee any ordering.

#2 Updated by Nobuyoshi Nakada almost 3 years ago

  • Status changed from Open to Closed

No.

Also available in: Atom PDF