Issue #21757 has been updated by jeremyevans0 (Jeremy Evans). I submitted a pull request to fix this: https://github.com/ruby/ruby/pull/15383 ---------------------------------------- Bug #21757: Splatted args array is mutated when passing unexpected kwargs https://bugs.ruby-lang.org/issues/21757#change-115418 * Author: apotonick (Nick Sutterer) * Status: Open * Assignee: jeremyevans0 (Jeremy Evans) * ruby -v: ruby 3.4.7 (2025-10-08 revision 7a5688e2a2) +PRISM [x86_64-linux] * Backport: 3.2: DONTNEED, 3.3: DONTNEED, 3.4: REQUIRED ---------------------------------------- The bug is very simple to provoke. ``` ruby proc = ->(*) { } # we do NOT expect any keyword arguments. args = [1, 2] proc.(*args, bug: true) pp args #=> [1, 2, {bug: true}] ``` The `args` array now has a third element which is exactly what got passed as keyword arguments. This is only in Ruby 3.4, 3.3 and below discard the "unexpected" keyword arguments as expected. -- https://bugs.ruby-lang.org/