JRuby 9.4.1.0 Released
Tuesday, February 07 2023
The JRuby community is pleased to announce the release of JRuby 9.4.1.0.
- Homepage: https://www.jruby.org/
- Download: https://www.jruby.org/download
JRuby 9.4.x targets Ruby 3.1 compatibility.
Thank you to our contributors this release, you help keep JRuby moving forward! @ahorek, @cboos, @evaniainbrooks, @jcharaoui, @k77ch7, @knovok, @Panxuefeng-loongson, @ydah
Thanks also to the community of JRuby users for trying out JRuby 9.4.0.0 and filing issues! We’re proud to include so many fixes in this update release and we couldn’t have done it without your bug reports.
Ruby Compatibility
- Several fixes to keyword arguments are included in this release. #7434, #7494, #7497, #7502, #7513, #7537, #7552, #7561, #7572, #7573, #7574, #7583, #7592, #7593
- Random has been fixed to work properly with SecureRandom, which was generating all zeros. #7586, #7597, #7607, #7617
Standard Library
- The Psych YAML library is updated to 5.1.0. This version switches the JRuby extension to SnakeYAML Engine, avoiding CVEs against the original SnakeYAML and updating YAML compatibility to specification version 1.2. #6365, #7570, #7626
Platform Support
- Final changes to support the LoongArch64 architecture have been merged in. #7518
Performance
- Overall JIT bytecode size has been improved, allowing more methods to compile to JVM bytecode. The maximum IR size eligible for JIT has been increased from 1000 instructions to 3000 instructions. #7589
84 Issues resolved for 9.4.1.0
- #5534 - irb and rails console broken on windows 10
- #6297 - jruby-jars profile fails on Java 11
- #6365 - Psych syntax error changed in JRuby 9.2.13.0
- #7112 - RSpec can’t match errors in jruby-9.4.0.0
- #7434 - [9.4.0.0]
IR compiler/interpreter bug: org.jruby.ir.operands.UndefinedValue should not be used as a valid value during execution.
- #7476 -
Zlib::GzipWriter
cannot be properly sub-classed
- #7479 - Cannot sub-class
Zlib::GzipWriter
and call .wrap
- #7481 -
Symbol#to_s
returns a frozen String
- #7485 - JRuby 9.4 defines Hash#index, and defines Hash.ruby2_keywords_hash{,?} as instance methods
- #7486 - Regression in 9.4 (optimizer? JIT?)
- #7487 - Regression in 9.4 IRB parser
- #7488 - Remove Hash index method, and fix ruby2_keywords_hash module method
- #7489 - Symbol to_s returns frozen string
- #7490 - Update actions/checkout version to v3
- #7491 - Enumerator using Enumerable method with Symbol#to_proc passing wrong value to yield
- #7492 - Possible regression in JRuby v9.4.0.0
- #7493 - one-time-execute can sometimes contain a closure. guard it.
- #7494 - Specific arity kwargs undefined
- #7497 - We should not be setting callInfo anywhere but the call(site) sans (K…
- #7499 - Warnings in Rake’s extension code to FileUtils under JRuby 9.4.0.0
- #7500 - “Unknown node encountered in builder” error on previously working code
- #7501 - DNodes are ListNodes and get compiled wrong in presence of a splat.
- #7502 - Excessive kwargs duplicate key warns
- #7503 - [refactor] make Java embed utils generic
- #7506 - JRuby 9.4.0.0 Anonymous block argument after a splat is broken
- #7509 - Fix syntax error in all cases where & is a param.
- #7510 - Fixes #7479. Cannot sub-class Zlib::GzipWriter and call .wrap
- #7511 - Fixes #7476. Zlib::GzipWriter cannot be properly sub-classed
- #7513 - Kwargy
- #7518 - Support for LoongArch64
- #7520 - Error running rubocop with JRuby 9.4.0.0
- #7521 - FFI errno spec fails on JRuby on Windows
- #7525 - ENV encoding fixes (windows)
- #7526 - Refinement does not self-refine properly
- #7527 - alias winapi_error to lasterror
- #7529 - Enumerator#inspect produces an ASCII-8BIT encoded String
- #7531 - Enumerator#inspect: Use String concatenation not just bytelist appends
- #7532 - Enumerator inspect tests
- #7534 - [feat] allow enabling warnings wout changing $VERBOSE
- #7535 - Refinement regression on 9.4
- #7536 - Fixes #7492. define_method should use definition scope.
- #7537 - Keyword argument regression in JRuby 9.4
- #7539 - The
:binmode
keyword argument isn’t applied on Tempfile
in JRuby 9.4
- #7541 - passthrough anno added
- #7547 - jruby-complete cannot start irb in windows
- #7549 - [ji] support converting RubyThread to a java.lang.Thread
- #7550 - Fix Enumerable#zip when an argument does not have each method
- #7551 - UnboundMethod#bind should use virtual include class for module methods
- #7552 - Fixes #7537. Kwargs arg regression.
- #7556 - jRuby 9.4 fails to load Celluloid gem
- #7557 - [ji] revert Thread#to_java behavior to stay compatible, for now
- #7561 - Delegating methods must be able to set ruby2_keywords on delegate.
- #7563 - Fix comparator of Bignum and Infinity
- #7564 - Fix Numeric#remainder when divisor is infinity
- #7566 - Fix Float#floor and Float#round for some edge cases
- #7567 - Fix missing require in mri-core tests
- #7570 - New snakeyaml vulnerability has dropped, affects jruby-complete
- #7571 - [refactor] warnings which assumed a message is being passed
- #7572 - Keyword arguments are catched as arguments instead of keyword arguments
- #7573 - Fixes #7572. Blocks with only keywords losing keyword status.
- #7574 - Simplify logic in IRBuilder for keyword arguments.
- #7576 - yield from Enumerator raises “no receiver given”
- #7580 - Enumerator acts differently when Symbol#to_proc is used
- #7583 - Dir[] with multiple patterns fails if kwargs given.
- #7586 - SecureRandom.random_number is always 0
- #7589 - JIT size and perf improvements
- #7591 - Fix Float#round with half even option
- #7592 - Unexpected ArgumentError due to a JIT bug in JRuby 9.4.0.0
- #7593 - Code was trying to make an int out of the kwargs hash.
- #7594 - Attempt at making proper inflate error happen.
- #7595 - Set refinement bit before building closure
- #7596 - Java::JavaLang::ClassCastException when initializing instance variable
- #7597 - If no seed given, use default random for seed
- #7599 - Treat send of using or refine as refinement
- #7601 - Fixed launch jruby in MSYS2 environment
- #7602 - Some ranges will ‘warning: … at EOL, should be parenthesized?’
- #7603 - Fix errant … warning
- #7606 - Use an identity map for the partial objects
- #7607 - Array#sample does not honor random byte gen
- #7617 - Implement ulong random logic with random bytes
- #7619 - Small internal optimizations found profiling CSV
- #7620 - Use Region accessors in prep for privatizing fields
- #7626 - Use Psych 5.1
- #7628 - RUBY_REVISION is a short sha, not the full sha like on other Rubies
The JRuby community is pleased to announce the release of JRuby 9.4.1.0.
- Homepage: https://www.jruby.org/
- Download: https://www.jruby.org/download
JRuby 9.4.x targets Ruby 3.1 compatibility.
Thank you to our contributors this release, you help keep JRuby moving forward! @ahorek, @cboos, @evaniainbrooks, @jcharaoui, @k77ch7, @knovok, @Panxuefeng-loongson, @ydah
Thanks also to the community of JRuby users for trying out JRuby 9.4.0.0 and filing issues! We’re proud to include so many fixes in this update release and we couldn’t have done it without your bug reports.
Ruby Compatibility
- Several fixes to keyword arguments are included in this release. #7434, #7494, #7497, #7502, #7513, #7537, #7552, #7561, #7572, #7573, #7574, #7583, #7592, #7593
- Random has been fixed to work properly with SecureRandom, which was generating all zeros. #7586, #7597, #7607, #7617
Standard Library
- The Psych YAML library is updated to 5.1.0. This version switches the JRuby extension to SnakeYAML Engine, avoiding CVEs against the original SnakeYAML and updating YAML compatibility to specification version 1.2. #6365, #7570, #7626
Platform Support
- Final changes to support the LoongArch64 architecture have been merged in. #7518
Performance
- Overall JIT bytecode size has been improved, allowing more methods to compile to JVM bytecode. The maximum IR size eligible for JIT has been increased from 1000 instructions to 3000 instructions. #7589
84 Issues resolved for 9.4.1.0
- #5534 - irb and rails console broken on windows 10
- #6297 - jruby-jars profile fails on Java 11
- #6365 - Psych syntax error changed in JRuby 9.2.13.0
- #7112 - RSpec can’t match errors in jruby-9.4.0.0
- #7434 - [9.4.0.0]
IR compiler/interpreter bug: org.jruby.ir.operands.UndefinedValue should not be used as a valid value during execution.
- #7476 -
Zlib::GzipWriter
cannot be properly sub-classed - #7479 - Cannot sub-class
Zlib::GzipWriter
and call.wrap
- #7481 -
Symbol#to_s
returns a frozen String - #7485 - JRuby 9.4 defines Hash#index, and defines Hash.ruby2_keywords_hash{,?} as instance methods
- #7486 - Regression in 9.4 (optimizer? JIT?)
- #7487 - Regression in 9.4 IRB parser
- #7488 - Remove Hash index method, and fix ruby2_keywords_hash module method
- #7489 - Symbol to_s returns frozen string
- #7490 - Update actions/checkout version to v3
- #7491 - Enumerator using Enumerable method with Symbol#to_proc passing wrong value to yield
- #7492 - Possible regression in JRuby v9.4.0.0
- #7493 - one-time-execute can sometimes contain a closure. guard it.
- #7494 - Specific arity kwargs undefined
- #7497 - We should not be setting callInfo anywhere but the call(site) sans (K…
- #7499 - Warnings in Rake’s extension code to FileUtils under JRuby 9.4.0.0
- #7500 - “Unknown node encountered in builder” error on previously working code
- #7501 - DNodes are ListNodes and get compiled wrong in presence of a splat.
- #7502 - Excessive kwargs duplicate key warns
- #7503 - [refactor] make Java embed utils generic
- #7506 - JRuby 9.4.0.0 Anonymous block argument after a splat is broken
- #7509 - Fix syntax error in all cases where & is a param.
- #7510 - Fixes #7479. Cannot sub-class Zlib::GzipWriter and call .wrap
- #7511 - Fixes #7476. Zlib::GzipWriter cannot be properly sub-classed
- #7513 - Kwargy
- #7518 - Support for LoongArch64
- #7520 - Error running rubocop with JRuby 9.4.0.0
- #7521 - FFI errno spec fails on JRuby on Windows
- #7525 - ENV encoding fixes (windows)
- #7526 - Refinement does not self-refine properly
- #7527 - alias winapi_error to lasterror
- #7529 - Enumerator#inspect produces an ASCII-8BIT encoded String
- #7531 - Enumerator#inspect: Use String concatenation not just bytelist appends
- #7532 - Enumerator inspect tests
- #7534 - [feat] allow enabling warnings wout changing $VERBOSE
- #7535 - Refinement regression on 9.4
- #7536 - Fixes #7492. define_method should use definition scope.
- #7537 - Keyword argument regression in JRuby 9.4
- #7539 - The
:binmode
keyword argument isn’t applied onTempfile
in JRuby 9.4 - #7541 - passthrough anno added
- #7547 - jruby-complete cannot start irb in windows
- #7549 - [ji] support converting RubyThread to a java.lang.Thread
- #7550 - Fix Enumerable#zip when an argument does not have each method
- #7551 - UnboundMethod#bind should use virtual include class for module methods
- #7552 - Fixes #7537. Kwargs arg regression.
- #7556 - jRuby 9.4 fails to load Celluloid gem
- #7557 - [ji] revert Thread#to_java behavior to stay compatible, for now
- #7561 - Delegating methods must be able to set ruby2_keywords on delegate.
- #7563 - Fix comparator of Bignum and Infinity
- #7564 - Fix Numeric#remainder when divisor is infinity
- #7566 - Fix Float#floor and Float#round for some edge cases
- #7567 - Fix missing require in mri-core tests
- #7570 - New snakeyaml vulnerability has dropped, affects jruby-complete
- #7571 - [refactor] warnings which assumed a message is being passed
- #7572 - Keyword arguments are catched as arguments instead of keyword arguments
- #7573 - Fixes #7572. Blocks with only keywords losing keyword status.
- #7574 - Simplify logic in IRBuilder for keyword arguments.
- #7576 - yield from Enumerator raises “no receiver given”
- #7580 - Enumerator acts differently when Symbol#to_proc is used
- #7583 - Dir[] with multiple patterns fails if kwargs given.
- #7586 - SecureRandom.random_number is always 0
- #7589 - JIT size and perf improvements
- #7591 - Fix Float#round with half even option
- #7592 - Unexpected ArgumentError due to a JIT bug in JRuby 9.4.0.0
- #7593 - Code was trying to make an int out of the kwargs hash.
- #7594 - Attempt at making proper inflate error happen.
- #7595 - Set refinement bit before building closure
- #7596 - Java::JavaLang::ClassCastException when initializing instance variable
- #7597 - If no seed given, use default random for seed
- #7599 - Treat send of using or refine as refinement
- #7601 - Fixed launch jruby in MSYS2 environment
- #7602 - Some ranges will ‘warning: … at EOL, should be parenthesized?’
- #7603 - Fix errant … warning
- #7606 - Use an identity map for the partial objects
- #7607 - Array#sample does not honor random byte gen
- #7617 - Implement ulong random logic with random bytes
- #7619 - Small internal optimizations found profiling CSV
- #7620 - Use Region accessors in prep for privatizing fields
- #7626 - Use Psych 5.1
- #7628 - RUBY_REVISION is a short sha, not the full sha like on other Rubies