From: "mame (Yusuke Endoh) via ruby-core" Date: 2025-03-14T07:12:28+00:00 Subject: [ruby-core:121360] [Ruby Misc#20968] `Array#fetch_values` unexpected method name in stack trace Issue #20968 has been updated by mame (Yusuke Endoh). So now Method#call can directly invoke a block? No, it's just the stack trace deceiving you by hiding crucial details. At the dev meeting, @ko1 also raised this issue. He suggested that, for this reason, we should stop writing in Ruby and revert to C. However, I expect @k0kubun to oppose this change due to YJIT���s performance benefits. The root of the problem lies in the distinction between different types of function calls: standard C function calls do not appear in the Ruby backtrace, whereas calls made via `rb_funcall`, etc., do. I proposed that the Ruby method should maintain this distinction: normal method calls should not appear in the backtrace, and if a Ruby method is invoked explicitly using `Primitive.rb_funcall` or something, it should be included in the backtrace. However, a decision on my proposal was postponed until we could confirm whether there are sufficient real-world cases where naive hiding would cause issues. In any case, it was reaffirmed that matz strongly prefers that `' $ ruby -e '[1].fetch_values(42)' -e:1:in 'Array#fetch_values': index 42 outside of array bounds: -1...1 (IndexError) from -e:1:in '
' ``` ## Actual The stack trace displays the `Array#fetch` method, which user is not aware of, along with the `` stack trace. ```console $ ruby -e '[1].fetch_values(42)' :211:in 'Array#fetch': index 42 outside of array bounds: -1...1 (IndexError) from :211:in 'block in Array#fetch_values' from :211:in 'Array#map!' from :211:in 'Array#fetch_values' from -e:1:in '
' ``` It likely requires an approach such as implementing it in C, as suggested in https://github.com/ruby/ruby/pull/11555. -- 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/