From: "jeremyevans0 (Jeremy Evans) via ruby-core" Date: 2024-10-21T15:12:24+00:00 Subject: [ruby-core:119573] [Ruby master Bug#20716] Different instance_method behavior in Ruby 2.7 and Ruby 3.x Issue #20716 has been updated by jeremyevans0 (Jeremy Evans). natton (Tien Truong) wrote in #note-9: > Is there a way to backport this fix to Ruby version 3.1 and 3.2 Ruby 3.2 was recently fixed, and it will be in the next Ruby 3.2 release. Ruby 3.1 is in security fix only mode, and this is not a security fix, so I do not think it will be patched. ---------------------------------------- Bug #20716: Different instance_method behavior in Ruby 2.7 and Ruby 3.x https://bugs.ruby-lang.org/issues/20716#change-110192 * Author: natton (Tien Truong) * Status: Closed * ruby -v: 3.3.1 * Backport: 3.1: REQUIRED, 3.2: DONE, 3.3: REQUIRED ---------------------------------------- Hi, I am working on upgrading our project from 2.7 to 3.x and found a breaking change in `instance_method` behavior. Here is the code snippet ``` module A def test(*args) super end end module B def test(a) puts a end end B.prepend(A) a = lambda do puts 'lambda' end class C include B end B.instance_method(:test).bind(C.new).call(1) # Ruby 2.7: 1 # Ruby 3.0: 1 # Ruby 3.1: 1 B.module_exec do define_method(:test, a) end B.instance_method(:test).bind(C.new).call # Ruby 2.7: lambda # Ruby 3.0: wrong number of arguments (given 0, expected 1) (ArgumentError) # Ruby 3.1: wrong number of arguments (given 0, expected 1) (ArgumentError) ``` I don't know if this is a bug or a correct intention. My specs: - Ruby manager: rbenv - Tested on - ruby 2.7.4p191 (2021-07-07 revision a21a3b7d23) [x86_64-linux] - ruby 3.0.7p220 (2024-04-23 revision 724a071175) [x86_64-linux] - ruby 3.1.4p223 (2023-03-30 revision 957bb7cb81) [x86_64-linux] - ruby 3.2.3 (2024-01-18 revision 52bb2ac0a6) [x86_64-linux] - ruby 3.3.1 (2024-04-23 revision c56cd86388) [x86_64-linux] -- https://bugs.ruby-lang.org/ ______________________________________________ ruby-core mailing list -- ruby-core@ml.ruby-lang.org To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org ruby-core info -- https://ml.ruby-lang.org/mailman3/lists/ruby-core.ml.ruby-lang.org/