I have noticed a different program behavior in Ruby 3.4 compared to previous versions. This is a simplified example for debugging that returns the expected result in Ruby 3.3 but nil in Ruby 3.4
I am expecting the Ruby 3.3 output even for Ruby 3.4. This appears to be a bug, since the program implementation is unchanged. Perhaps there is a bug in the code that is now only showing up with Ruby 3.4, but that seemed unlikely since it's working as expected in other versions.
memo) This does not occur even in Ruby 3.4.1 when --parser=parse.y.
❯ ruby --parser=parse.y -e 'puts "Ruby: #{RUBY_VERSION}"
# okay all versions
# RUN_ARRAY = [1]
# fails ruby 3.4 only
RUN_ARRAY = [1,2]
MAP_PROC = Proc.new do |&blk|
block_results = []
RUN_ARRAY.each do |value|
block_value = blk.call(value)
block_results.push block_value
end
block_results
ensure
next block_results
end
test_fn_results = MAP_PROC.call do |value|
break if value > 1
next value
end
puts test_fn_results.inspect'
Ruby: 3.4.1
[1]