Skip to content
Menu
Open World News Open World News
  • Privacy Policy
Open World News Open World News

JRuby 9.4.4.0 Released

Posted on October 19, 2023 by Michael G

Author: The JRuby Team
Source

The JRuby community is pleased to announce the release of JRuby 9.4.4.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, @chadlwilson, @k77ch7, @kares, @mrnoname1000, @ntkme, @skmp

Ruby Compatibility

  • Multiple fixes for keyword arguments edge cases. #7854, #7855, #7857, #7858

Standard Library

  • Default gem updates:
    • jruby-openssl 0.14.2. #7886
    • psych is updated to 5.1.1.1, which uses SnakeYAML and exposes Psych::Parser.code_point_limit= for globally setting the code point limit.
    • bigdecimal is now a default gem (3.1.4) for the pure-Ruby portions; the extension remains part of JRuby itself. #7925
    • stringio is updated to 3.0.8. #7881

Platform Support

  • This release includes native support for Windows on the AArch64 (ARM64) platform. #7843, #7936, #7937, #7941, #7945, #7960
  • The jruby shell script gains support for ksh93, meaning that essentially all Bourne-compatible shells can run it. #7870

JVM Integration

  • Virtual thread use in Fiber can now be disabled using the jruby.fiber.vthread=false property (or JRuby flag -Xfiber.vthread=false). #7907
  • Multiple small bugs in JVM bytecode generation and invokedynamic logic were discovered and fixed. #7913

Build and Distribution

  • The JRuby/Maven stack of plugins used to integrate Ruby and Maven artifacts have been updated to the latest versions, now using JRuby 9.4.3.0 for builds and avoiding the use of deprecated rubygems.org APIs. #7872

Performance

  • Conditional assignment of instance variables now requires only a single lookup, and optimizes to a simple read after assignment. #7891, #7896

78 Github Issues and PRs resolved for 9.4.4.0

  • #7430 – Rails fails to boot under Java 19
  • #7470 – OpenJ9 failing -Ptest
  • #7623 – setup and fix issues reported by error-prone compiler
  • #7649 – Infinite loop in StringScanner regex
  • #7815 – NullPointerException for compiled code with for loop
  • #7839 – `clone’: wrong number of arguments (given 1, expected 0) (ArgumentError) in JRuby 9.4.x
  • #7843 – FFI Support for aarch64-windows
  • #7847 – File subclass doesn’t pass arguments from open to new properly
  • #7848 – Wrong interpretation of multi-expression when clause
  • #7849 – Fixes #7848. Wrong interpretation of multi-expr when clause
  • #7850 – Fixes #7847. File subclass passes args from open to new wrong
  • #7851 – @JRubyMethod minimum argument not enforced in 9.4.3.0
  • #7852 – Array#intersect? incompatibility
  • #7853 – Fix #7839. `clone’: wrong number of arguments
  • #7854 – Pattern matching with an empty hash should result in no match
  • #7855 – eval vs lvars scope
  • #7857 – Fixes #7855. pattern assoc assigns should scope
  • #7858 – Fixes #7854. Pattern matching with an empty hash should not match
  • #7859 – Coverage library returns incorrect info for hash literal constants
  • #7860 – Restore arity-checking with an opt-out flag
  • #7861 – org.jruby.RubyLoadError getCause returns itself
  • #7863 – Fixes #7859. Coverage returns incorrect info for hash literal constants
  • #7864 – –help and other output does not check TTY
  • #7866 – Recursive hashing corrupts shared hash buffer
  • #7867 – [deps] update jruby-openssl to 0.14.2
  • #7868 – Expanding on an older method of putting call linenums in right place
  • #7869 – Make sure Ruby exception does not provide itself as cause.
  • #7870 – Launcher tweaks
  • #7872 – Migrate to new mavengem
  • #7875 – always_verify_ssl_certificates causes class cast error
  • #7881 – Update StringIO and reenable specs
  • #7882 – [fix] duplicate hash key literal removal
  • #7886 – Update jruby-openssl
  • #7887 – Fix BigDecimal#power with negative integer
  • #7888 – Fix dynscopes
  • #7890 – Fix BigDecimal#eql? when an argument is Rational
  • #7891 – Conditional assignment of field does two lookups
  • #7892 – Fix BigDecimal#quo with prec and without prec
  • #7893 – Add INT64_MAX, INT64_MIN, UINT64_MAX, LLONG_MAX, LLONG_MIN and ULLONG_MAX to RbConfig::LIMITS
  • #7894 – Fix BigDecimal#div when an argument is object
  • #7895 – Fix BigDecimal.allocate to raise TypeError
  • #7896 – Optimize @a ||= x and defined?(@a)
  • #7897 – Update test_bigdecimal.rb and fix a few failures
  • #7898 – Marshal.dump with frozen string literals differs on –debug flag
  • #7899 – Call-site cache remaining callMethod in Set
  • #7901 – Protect cached threadlocal in recursive hash
  • #7903 – Move frozen string debug fields into subclass
  • #7904 – invokedynamic makes Concurrent::TimerTask.execute reliably result in java.lang.invoke.WrongMethodTypeException
  • #7905 – RubyArray: Fix intersect? for small arrays
  • #7911 – multiple applications in tomcat and jruby 9.4.3.0 com.headius.invokebinder.InvalidTransformException: java.lang.IllegalAccessException
  • #7913 – Multiple fixes for forced JIT and indy-based Java dispatch
  • #7918 – Unexpected ArgumentError calling Forwardable delegated single splat method with keyword arguments
  • #7922 – Addrinfo
  • #7923 – add Addrinfo#ipv6_unique_local?
  • #7924 – (master) frozen string errors with --debug
  • #7925 – Switch to bigdecimal gem
  • #7926 – Proc.new with no args no longer supported in 3.1
  • #7927 – Fixes #7649. Infinite loop in StringScanner regex
  • #7928 – More frozen string tweaks
  • #7929 – Fixes #7918. Error with single splat method with keyword arguments
  • #7931 – Store absolute path of main at load time
  • #7936 – Update jnr stack
  • #7937 – File.chown throws “SystemCallError:Unknown error (SystemCallError)” at Windows11 on Arm64
  • #7940 – More testing with Java 21
  • #7941 – Update ffi to 1.16.1
  • #7942 – fnmatch not matching glob syntax in 9.3.8 but it did in 9.2.20.1
  • #7945 – Update ffi to 1.16.2
  • #7946 – In some cases sorting using String.casecmp results in Comparison method violates its general contract!
  • #7947 – fnmatch not matching glob syntax
  • #7948 – Fix #7815. NullPointerException for compiled code with for loop
  • #7949 – Use a lookup() for field access in static constant
  • #7950 – Convert to lower, not upper, for casecmp
  • #7952 – Avoid ANSI formatting when not on a TTY
  • #7955 – Misc regex and strscan improvements
  • #7956 – Re-enable J9 test in CI
  • #7957 – Use new GHA M1 runner
  • #7960 – Update ffi to 1.16.3
  • #7966 – Update to psych 5.1.1.1

Read more

Related Posts:

  • Let us compete on trustworthiness and an Arcticons special release
    Let us compete on trustworthiness and an Arcticons…
  • Unattended updates for everyone, 1.19 is here
    Unattended updates for everyone, 1.19 is here
  • Favor your repository
    Favor your repository
  • Relatively good news
    Relatively good news
  • Calculated releases scheduled
    Calculated releases scheduled
  • Apps availability still high
    Apps availability still high

Recent Posts

  • [TUT] LoRa & LoRaWAN – MikroTik wAP LR8 kit mit The Things Network verbinden [4K | DE]
  • Mercado aguarda Powell e olha Trump, dados e Haddad | MINUTO TOURO DE OURO – 11/02/25
  • Dan Levy Gets Candid About Learning How To Act Differently After Schitt’s Creek: ‘It’s Physically…
  • Building a Rock Shelter & Overnight Stay in Heavy Snow 🏕️⛰️
  • Les milliardaires Elon Musk et Xavier Niel s’insultent copieusement

Categories

  • Android
  • Linux
  • News
  • Open Source
©2025 Open World News | Powered by Superb Themes
We use cookies on our website to give you the most relevant experience by remembering your preferences and repeat visits. By clicking “Accept All”, you consent to the use of ALL the cookies. However, you may visit "Cookie Settings" to provide a controlled consent.
Cookie SettingsAccept All
Manage consent

Privacy Overview

This website uses cookies to improve your experience while you navigate through the website. Out of these, the cookies that are categorized as necessary are stored on your browser as they are essential for the working of basic functionalities of the website. We also use third-party cookies that help us analyze and understand how you use this website. These cookies will be stored in your browser only with your consent. You also have the option to opt-out of these cookies. But opting out of some of these cookies may affect your browsing experience.
Necessary
Always Enabled
Necessary cookies are absolutely essential for the website to function properly. These cookies ensure basic functionalities and security features of the website, anonymously.
CookieDurationDescription
cookielawinfo-checkbox-analytics11 monthsThis cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Analytics".
cookielawinfo-checkbox-functional11 monthsThe cookie is set by GDPR cookie consent to record the user consent for the cookies in the category "Functional".
cookielawinfo-checkbox-necessary11 monthsThis cookie is set by GDPR Cookie Consent plugin. The cookies is used to store the user consent for the cookies in the category "Necessary".
cookielawinfo-checkbox-others11 monthsThis cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Other.
cookielawinfo-checkbox-performance11 monthsThis cookie is set by GDPR Cookie Consent plugin. The cookie is used to store the user consent for the cookies in the category "Performance".
viewed_cookie_policy11 monthsThe cookie is set by the GDPR Cookie Consent plugin and is used to store whether or not user has consented to the use of cookies. It does not store any personal data.
Functional
Functional cookies help to perform certain functionalities like sharing the content of the website on social media platforms, collect feedbacks, and other third-party features.
Performance
Performance cookies are used to understand and analyze the key performance indexes of the website which helps in delivering a better user experience for the visitors.
Analytics
Analytical cookies are used to understand how visitors interact with the website. These cookies help provide information on metrics the number of visitors, bounce rate, traffic source, etc.
Advertisement
Advertisement cookies are used to provide visitors with relevant ads and marketing campaigns. These cookies track visitors across websites and collect information to provide customized ads.
Others
Other uncategorized cookies are those that are being analyzed and have not been classified into a category as yet.
SAVE & ACCEPT