[ANN] JRuby 9.2.9.0 Released

The JRuby community is pleased to announce the release of JRuby 9.2.9.0

    Homepage: http://www.jruby.org/
    Download: http://www.jruby.org/download

JRuby 9.2.x is compatible with Ruby 2.5.x and stays in sync with C Ruby. As
always there is a mix of miscellaneous fixes so be sure to read the issue
list below. All users are encouraged to upgrade.
Ruby Standard Library

    The Ruby Standard Library has been updated to Ruby 2.5.7. JRuby will
now report this as our equivalent compatible Ruby version. (#5917)

    RubyGems has been updated to version 2.7.10.

Security Updates

    This release removes an exploitable version of JQuery used by the rdoc
library. See
https://www.ruby-lang.org/en/news/2019/08/28/multiple-jquery-vulnerabilities-in-rdoc/

Java Modules Support

    Java modules are better supported in this release by checking for
openness before attempting to reflect against classes from that module.
This should reduce the number of module warnings on Java 9+ and make it
easier to configure the JVM to open up appropriate modules and packages to
JRuby applications. See also the .jruby.java_opts file above, which can
help you manage module options. (#5841, 5832, #5843, #5855, #5860)

Java Launcher Improvements

    JVM options can now be added to global or app-local .jruby.java_opts
files and automatically processed by the JRuby launcher. See JRuby Java
Options Files for more information. Note: This feature is not yet supported
by the JRuby native launcher, installed by default in RVM. We will release
an update to the native launcher soon. (#5824, #5826)

    You can now pass --environment to the JRuby launcher to get a log of
exactly how we will execute your application. (#5840)

    JRuby’s dev mode (via the --dev flag) adds additional options for Java
9+ and the OpenJ9 JVM. On OpenJ9, the -Xquickstart and -Xshareclasses flags
are passed via the OPENJ9_JAVA_OPTIONS environment variable. (#5831)

Memory Usage Reductions

    Numerous changes in this release reduce the boot-time and run-time
memory use of JRuby applications. (#5837, #5832, #5874, #5880, #5885)

Thread-safety Improvements

    Lock interruptibility broken in JRuby 9.2.8 has now been fixed. (#5863,
#5875

Process.wait APIs are now interruptible

    Threads calling Process.wait, waitall, or waitpid will use the
pthread_kill native function to interrupt those operations. Previously
these threads were not interruptible. (#1050, #5848)

Native FFI improvements

    When running JRuby via the “complete” jar file, we must unpack our
native FFI stub to an appropriate temporary location. If the default
location we use (the host system’s default “temp” location) is not readable
or does not allow executable code, we will present an informational error
indicating how to correct the issue. (#1302)

    This release also includes native support for DragonFly BSD. (#5768,
#5828)

Time Zone Data

    Time zone data has been updated to IANA 2019c. This update includes six
years of timezone changes. (#5951)

Github Issues resolved for 9.2.9.0

    #5951 - Update joda-time and joda-timezones to 2019c
    #5950 - Update all jnr dependencies and joni.
    #5943 - properly synchronize globalInlineCount
    #5942 - Mutex fixes for interruptibility
    #5940 - Improve how we acquire ThreadContext to eliminate null refs.
    #5939 - Restructure indy-based math binding.
    #5938 - regressed indy fixnum op with custom equality (==)
    #5935 - TypeError: "warn" with subclass of String constructed from
heredoc
    #5934 - [fix] ensure that fnmatch pattern does not contain a NUL
character
    #5931 - [test] update MRI test suite from ruby_2_5
    #5930 - dupImpl specializations
    #5929 - NPE json nested-array regression
    #5928 - faster unpack1
    #5927 - Use new RubyStringBuilder.str api to create inspected string
for Exception
    #5926 - fix class nesting #5925
    #5925 - Inner Java classes are nested recursively
    #5923 - Exception inspect in wrong encoding
    #5921 - Add native.popen option to disable native popen.
    #5919 - Synchronize variable reification against real class.
    #5917 - Update stdlib to 2.5.7.
    #5915 - encoding parameter for Dir.open, Dir.new #3205 #4495
    #5912 - Deadlock with puma on JRuby 9.2.8.0
    #5910 - 'Cannot cast org.jruby.gen.RubyObject7 to
org.jruby.gen.RubyObject4' errors
    #5909 - Concurrent File#flock calls of the same file results in
Errno::EINVAL exception on Windows
    #5908 - Implement Java::JavaLang::Throwable#full_message
    #5906 - Java::JavaLang::Throwable missing full_message method
    #5903 - less locking in interpreter mode (due IRMethod)
    #5902 - [fix] avoid locking on class/module creation
    #5901 - singleton class initialization blocks threads
    #5900 - reporting a better error when tmp doesn't work for temporary
executables
    #5898 - Enable recursive fd redirection for popen logic.
    #5897 - Simplify and use static scope for local_variables.
    #5893 - [fix] jit.excludes for block using class (and method) name
    #5891 - Clean up some backref and lastline users.
    #5889 - [feat] jit.exclude based on path/to/impl_file.rb
    #5886 - Update types.conf from ffi/ffi
    #5885 - Unable to call inherited instance method on Java class under
OpenJDK 12
    #5884 - frozen path helper
    #5882 - Jruby crashes intermittently right before coverage generation
    #5880 - attempt to share loader for JIT-ed classes
    #5877 - make SecureRandom.rand public
    #5875 - Mutex behavior mismatch with MRI since JRuby 9.2.8.0
    #5874 - Reduce bytecode size from JIT
    #5873 - Kernel#warn keyword handling differs from CRuby
    #5872 - Old version of jQuery is present in the JRuby builds
    #5871 - Use Java 8 stack walker when full trace is requested.
    #5870 - respect jit.max to stop compilation
    #5869 - ArrayIndexOutOfBoundsException when using TracePoint
    #5866 - Test passing control between two threads in the
ConditionVariable spec
    #5865 - Kernel#system fails with out: $stdout
    #5864 - Illegal Reflective Access Operation Warning
    #5863 - ConditionVariable#wait causes thread to wait forever in 9.2.8.0
    #5860 - automatic-module-name
    #5859 - Invalid `Tracepoint` Behavior for Blocks
    #5858 - update joda time to 2.10.3
    #5855 - Issues using bundle plugin with Java modules
    #5854 - Implement IO#pread and pwrite.
    #5853 - `slice_after` does not work on lazy Enumerators
    #5852 - Return from block broken in 9.2.8.0
    #5851 - Improvements to backtrace
    #5850 - Fix tracer.rb and get it running in CI
    #5849 - Top frame from interpreter gets wrong filename
    #5848 - Wrap Process.wait* calls with pthread_kill logic.
    #5845 - Propagate interrupt after interrupted sleep loop.
    #5843 - Move all JI setAccessible to trySetAccessible.
    #5841 - Can't call methods of private subclasses with java_method in
java 12
    #5840 - Consistently resolve path of jruby.bash
    #5837 - Tweaks to reduce memory use of short commands
    #5835 - Fail gracefully when inner class const_missing finds nothing
    #5834 - enumerator review for better compatibility
    #5832 - Reduce overhead of binding Java classes and methods
    #5831 - Further improvements to dev mode
    #5830 - aligned (and faster) uniq impls + less wrapping
    #5829 - Actually release Windows for_fd fixes
    #5828 - Identify DragonFlyBSD as a platform
    #5826 - Add support for .jruby.java_opts home and cwd files
    #5824 - Provide better documentation on java command @file support
    #5816 - IO#pread and pwrite missing
    #5768 - Support for DragonFly BSD
    #5744 - first stab at a spec
    #5722 - use same parameter for DNS.allocate_request_id/free_request_id
to fix leak
    #5700 - [ji] align Java array (with post 1.8 conventions)
    #5127 - system() does not return boolean when Dir.pwd is uri:classloader
    #4495 - Dir.open missing optional second keyword argument
    #1302 - JRuby fails to load FFI support with obscure error when /tmp is
not writable
    #1050 - Timeout::timeout not throwing exception when timeout period
reaches

···

--
blog: http://blog.enebo.com twitter: tom_enebo
mail: tom.enebo@gmail.com