Bug #7152

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

Added by Hiro Asari over 1 year ago. Updated over 1 year ago.

[ruby-core:47950]
Status:Closed
Priority:Normal
Assignee:-
Category:-
Target version:-
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 over 1 year 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 over 1 year ago

  • Status changed from Open to Closed

No.

Also available in: Atom PDF