From: eregontp@... Date: 2021-02-27T15:51:20+00:00 Subject: [ruby-core:102638] [Ruby master Feature#17660] Expose information about which basic methods have been redefined Issue #17660 has been updated by Eregon (Benoit Daloze). It sounds useful, +1 from me. I think we should clarify in the name that only redefined basic methods are reported, and not all redefined methods. How about `redefined_basic_methods`? Putting it under `RubyVM` increases the issue that `RubyVM` is becoming less and less CRuby-specific. But I'm pretty much convinced this will happen anyway since ruby-core doesn't seem to want to avoid that (https://bugs.ruby-lang.org/issues/15752#note-28). So I'm not against it, just making note of this aspect. I think having this method under a "VM"-named module makes sense at least. We should consider this method like any other new method, i.e., `RubyVM` is de facto no longer experimental. Another place where this method might make sense is as a instance method of `Class` (or `Module`). ---------------------------------------- Feature #17660: Expose information about which basic methods have been redefined https://bugs.ruby-lang.org/issues/17660#change-90630 * Author: tenderlovemaking (Aaron Patterson) * Status: Open * Priority: Normal ---------------------------------------- I would like to tell if code is redefining methods that can impact MRI's optimizations. This commit exposes which basic methods have been redefined. For example: ```ruby class Integer def +(x); x ** self; end end p RubyVM.redefined_methods # => {Integer=>[:+]} ``` This will allow us to prevent basic method redefinitions from happening by checking for them in CI environments. For example: ```ruby Minitest.after_run { fail "Basic methods have been redefine" if RubyVM.redefined_methods.any? } ``` ---Files-------------------------------- 0001-Expose-information-about-which-basic-methods-have-be.patch (3.89 KB) -- https://bugs.ruby-lang.org/ Unsubscribe: