JRuby Changelog

What's new in JRuby 9.4.5.0

Nov 2, 2023
  • TCPSocket hangs when RST is received on Windows
  • Support for fiber scheduler API
  • Socket.each loops after receiving RST pegging CPU at 100%
  • Propagate read errors in IO backend
  • RbConfig::CONFIG[“SOEXT”] is missing on JRuby
  • add RbConfig::CONFIG[“SOEXT”]
  • Hide FilenoUtil warning behind native.verbose property
  • Bootstrap cleanup
  • Update strscan to 3.0.7
  • Fix ENOENT with TestProcessSpawn on Debian
  • .delete_if blocks allow deleting same object from array twich
  • Less Load{Frame,Implicit}ClosureInstr
  • Process stuck with 100% cpu when using jruby 9.4.4.0
  • Fix length handling in select!/reject! ensure
  • Error using ActiveSupport::Testing::TestHelpers (7.1.1) on jruby-9.4.4.0
  • 7983 Build, test failures when build directory contains special characters
  • Remove unnecessary cast of kwargs
  • Make sure gems path is regex-safe
  • [fix] infinite loop calling Java super from Ruby
  • Preserve insertion order for ivars

New in JRuby 9.4.4.0 (Oct 18, 2023)

  • 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

New in JRuby 9.4.3.0 (Jun 7, 2023)

  • Ruby Compatibility:
  • Multiple fixes for keyword arguments edge cases. #7676, #7755, #7804, #7816
  • Standard Library:
  • Default gem updates:
  • Rubygems 3.3.26 #7831
  • Bundler 2.3.26 #7831
  • Cgi 0.3.6 #7831
  • Date 3.3.3 (stub gem on JRuby) #7831
  • Ffi 1.15.5 #7831
  • Jruby-openssl 0.14.1
  • Net-http 0.3.0 #7831
  • Net-protocol 0.1.2 #7831
  • Reline 0.3.5 #7831
  • Ffi-binary-libfixposix 0.5.1.1 to support Apple M1 (used by subspawn for improved subprocess management)
  • Time 0.2.2 #7831
  • Timeout 0.3.2 #7831
  • Uri 0.12.1 #7831
  • Bundled gem updates: #7831
  • Net-imap 0.2.3
  • Many fixes for BigDecimal behavior by @k77ch7. #7747, #7758, #7766, #7767, #7768, #7778, #7779, #7780, #7781, #7813, #7827
  • Rippper now passes all tests related to the syntax_tree gem. #7776
  • Performance:
  • Various small optimizations based on Rails and other frequent use cases. #7522, #7720, #7722, #7783, #7789
  • JVM Integration:
  • InvokeDynamic support is now being tested across five major test suites on Java 17 and passes all tests that non-indy execution passes. #7797
  • Issues resolved:
  • #1422 - GzipReader#mtime gives the wrong time
  • #6607 - Clean up javadoc for stricter Java 11
  • #7452 - Default external to locale as in CRuby
  • #7474 - Rails 7 support
  • #7522 - case/when optimizations
  • #7579 - GLIBC compatibility with RHEL/CentOS 7 and JRuby 9.4.0.0
  • #7673 - Enable more traces and reduce costs of others
  • #7676 - ruby2_keywords should not warn when using …
  • #7711 - Constants set by autoload have wrong line number in JIT
  • #7712 - Use real stack trace for autoload const location
  • #7714 - Enumerator cleanup
  • #7717 - sass-embedded gem extension install fails with rake require error on Windows with JRuby 9.4.2.0
  • #7718 - Deprecation cleanup
  • #7719 - Fixes #7717. sass-embedded gem extension install fails with jruby-com…
  • #7720 - More indy call optz
  • #7722 - Eliminate duplication for optimized case/when build
  • #7723 - passing specs
  • #7724 - Syslog tags
  • #7725 - More specs already fixed
  • #7726 - Ruby-based SecurityManager can recurse forever
  • #7728 - [feat] make Ruby#setWarningsEnabled actually useful
  • #7734 - Object with finalizer dumps wrong data leading to: load': marshal data too short
  • #7735 - Dir.home is no longer compatible with CRuby after JRuby 9.3
  • #7738 - Fix Dir.home called with nil user
  • #7739 - Don’t try to marshal non-serializable variables
  • #7740 - irb error on Mac M1
  • #7741 - some line numbers on warnings are off by 1
  • #7743 - [ripper] NPE during parsing the rspec documentation
  • #7744 - The File#absolute_path? implementation in JRuby 9.4.x.x causes issues with asciidoctor-pdf
  • #7745 - Pathname#absolute? stopped working properly for URIs
  • #7746 - Flaky test running rack on JRuby
  • #7747 - Ruby 3.1 : fix Bigdecimal
  • #7751 - Move arity-checking into variable-arity method bodies
  • #7753 - Fix #7743. NPE during parsing the rspec documentation
  • #7755 - Fixes #7676. ruby2_keywords should not warn when using …
  • #7756 - Regression go away
  • #7757 - Migrate regressions into jruby:spec or remove if already covered
  • #7758 - Fix BigDecimal#sub with Object and significant digits
  • #7761 - Can’t match rspec errors in 9.4.2.0
  • #7764 - Mysterious “unused literal ignored” warnings
  • #7765 - GH-6607 Clean up javadoc for stricter Java 11
  • #7766 - Fix rounding mode constants of BigDecimal to use the same mri’s values
  • #7767 - Fix BigMath#exp and #log error message for edge cases
  • #7768 - Fix BigDecimal(0, NAN and INFINITY) to return always same object
  • #7770 - Fixes #7769. regexp with / before mbc should work.
  • #7774 - ripper presents an extra on_var_field for opt parameters in methods
  • #7775 - Fixes #7774. ripper presents an extra on_var_field for opt params
  • #7776 - Ripper fixes found while running syntax_tree gems tests.
  • #7777 - fix try_convert error message
  • #7778 - Fix BigDecimal#to_s for edge case
  • #7779 - Fix bigdecimal/util’s #to_d and BigDecimal.interpret_loosely to return correct value for loosely case
  • #7780 - Fix several BigDecimal failures
  • #7781 - Add BigDecimal#power(n, prec)
  • #7783 - Rails profiling optimizations
  • #7789 - Java call optimizations
  • #7790 - jruby –help displays removed taint level command line option
  • #7791 - Remove obsolete command line option -T[level]
  • #7793 - Macbook M1 JRuby 9.4.2.0 Could not open library ‘fixposix’ ‘libfixposix.dylib’
  • #7797 - Fix recent regressions on master
  • #7800 - Update time and uri for recent ReDoS issues
  • #7801 - Update time to 0.2.2 and use date stub gem 3.3.3
  • #7802 - Update Subspawn to fix #7793
  • #7804 - Incorrect ArgumentError: wrong number of arguments
  • #7807 - Update joni to 2.2
  • #7808 - Update to backport9 1.13 for module javadoc fix
  • #7813 - Add BigDecimal#quo(value, digits)
  • #7814 - Update jzlib and fix mtime
  • #7816 - Fixes #7804. Incorrect ArgumentError: wrong number of arguments
  • #7818 - Small documentation issues regarding java options
  • #7820 - Accessing Encoding from java code is broken on new thread
  • #7824 - Use top self for evalScriptlet, since no frame yet
  • #7826 - Fix Rational#truncate with an invalid value
  • #7827 - Fix BigDeciaml#to_f
  • #7828 - Improve verbiage of how to use properties.
  • #7830 - ArrayIndexOutOfBoundsException matching regex against emoji string
  • #7831 - Update stdlib gems and compat to 3.1.4
  • #7832 - Update JNR versions
  • #7833 - Update IRB tests to 1.7.0 version
  • #7834 - Return to IRB 1.4.2 for now

New in JRuby 9.4.2.0 (Mar 8, 2023)

  • Ruby Compatibility:
  • __callee__ now properly returns the name under which a method was called, which will be the new name in the case of aliased methods. #2305, #7702
  • More use cases for keyword arguments have been fixed to behave correctly and avoid extraneous warnings. #7637, #7645, #7657, #7658, #7670, #7672, #7686
  • Array#pack now supports more cases, passing nearly all specs. #7663
  • Compatibility with CRuby’s command-line arguments has been improved. #7678, #7680, #7681, #7681, #7683, #7684
  • Standard Library:
  • Irb is updated to 1.4.2. #7690, #7691
  • Open-uri is updated to 0.3.0. #7701
  • Io-wait is updated to 0.3.0. #7701
  • Stringio is updated to 3.0.5. #7701
  • Strscan is updated to 3.0.6. #7701
  • Open3 is switched to using the gem at 0.1.2. #7701
  • Platform Support:
  • Exception backtraces now default to color output when the controlling terminal is a TTY. Disable using -Xbacktrace.color=false or equivalent in .jrubyrc. #7693
  • Performance:
  • String#split has been optimized to skip regular expression use for simple split expressions. Simple ASCII strings also split faster. #7629
  • Issues resolved:
  • #2305 - __callee__ behaves differently from MRI
  • #7477 - Integer#chr(encoding: Encoding::UTF_8) raises a different RangeError exception message than on CRuby
  • #7480 - Cannot call SubClass#initialize_copy with an object created from the super class
  • #7615 - opt != for fixnum in JIT/indy
  • #7629 - Split opts
  • #7637 - 9.4.1.0: Wrong number of arguments with kwargs when subclassing a java class
  • #7639 - Typing @ into irb in 9.4.1.0 crashes it
  • #7641 - “Port already in use” errors when configuring remote JMX in 9.4
  • #7642 - [9.4.1.0] ArrayIndexOutOfBoundsException
  • #7643 - Use SmartBinder to set up struct calls
  • #7645 - Fixes #7637. Arity error with kwargs when subclassing a java class
  • #7650 - BigDecimal arithmetic regression [jruby-9.4]
  • #7652 - Fix Float#to_d of bigdecimal/util
  • #7653 - Fix Struct#values_at when passed an integer Range argument for edge cases
  • #7655 - JIT coverage fixes
  • #7656 - Regression: Class variables in top level methods broken compared to MRI & 9.3
  • #7657 - Pattern matching unexpectedly raises “duplicated key name” error
  • #7658 - remove deplicated key name error
  • #7659 - Fix for #7656.
  • #7662 - END blocks had regressed and was calling same block >1
  • #7663 - Array#pack unknown directive warns
  • #7664 - All these work?
  • #7665 - Arity errors for ‘call’ things in Signal#trap
  • #7666 - Array#new size boundary error not tripping
  • #7667 - Kernel#respond_to? return wrong error string but right error.
  • #7668 - Array#to_s/inspect should be same method
  • #7669 - Proc#inspect with &:foo should print that out in str
  • #7670 - Probably method_missing is not handling keyword arguments properly [jruby-9.4.1.0]
  • #7671 - Binding local_variables makes sure they are lvars
  • #7672 - jruby-9.4.1.0 issues warning about duplicated keys
  • #7674 - Fix #7672. warning about duplicated keys
  • #7675 - JIT loses line numbers in some warnings?
  • #7678 - Add –encoding command line option.
  • #7679 - Spec sweep
  • #7680 - disabling RUBYOPT processing was not hooked up.
  • #7681 - Frozen string debugging off by one.
  • #7682 - The -p command line should use print and not puts.
  • #7683 - All -I provided relative paths shold be made absolute
  • #7684 - Fixed windowsJ encoding and do not set on invalid K values
  • #7685 - Add a warn form that takes a callback
  • #7686 - Fix #7670. Coverage data goes off the rails.
  • #7687 - Passing specs
  • #7690 - Update irb to version 1.4.2+
  • #7691 - Updates irb to 1.4.2
  • #7693 - Enable color if console is a tty
  • #7694 - Mimic CRuby’s range error logic for chr
  • #7696 - Make coderange set on strings created from some IO ops
  • #7700 - Define real error methods to avoid callee
  • #7701 - Update gems
  • #7702 - Encode new and old name in aliased calls
  • #7708 - Enumerator.new takes at most one arg
  • #7709 - Eliminate 2- and 3-arity paths for Enumerator#initialize
  • #7715 - We were quoting symbols in inspect we shouldnt have
  • #7716 - Add infra to support Ruby 3.1 pattern error messages.

New in JRuby 9.4.1.0 (Feb 7, 2023)

  • 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

New in JRuby 9.4.0.0 (Nov 23, 2022)

  • Ruby Compatibility:
  • Compatibility is updated to Ruby 3.1 level. This includes all Ruby 2.7, 3.0, and 3.1 features except where noted below. (#6464, #6878, #7015)
  • Ractor is not yet supported. JRuby users can achieve better parallelism by using threaded libraries and frameworks.
  • The scheduler interface for IO, locks, and fibers is not yet supported. It will be added in an update release.
  • Nearly all features from CRuby’s NEWS file have been implemented. Most new tests and specs pass.
  • Remaining 3.0 and 3.1 features will be implemented in an update release. See #7459 and #7460.
  • Standard Library:
  • Much of the standard library has moved out to gems, and JRuby supports a large subset of these gems. See lib/pom.rb for the complete list of default and bundled gems.
  • Greatly improved PTY and spawn support thanks to the subspawn gem, which is included as part of the standard library. #7393
  • JVM Integration:
  • Java setFoo methods that do not match JavaBean standards (return value other than void, for example) will now also generate a foo= method when imported into Ruby. (#7340, #7352)
  • Platform Support:
  • The JRuby launcher script has been ported to POSIX shell (/bin/sh) and no longer requires Bash. (#7024)
  • Initial support for the LoongArch64 platform has been inherited from the Java Native Runtime libraries.
  • Third-party Libraries and Frameworks:
  • Initial support for Rails 7. SQLite and MySQL are largely functional, but work remains to update them and PostgreSQL.

New in JRuby 9.3.9.0 (Oct 24, 2022)

  • #5588 - OpenSSL::PKey::RSA.new without password results in terminal input failure
  • #7335 - Upgrade jruby-openssl to 0.14.0
  • #7367 - StringIO ignores external encoding on Windows
  • #7380 - [Tiny issue] swing2.rb example at https://github.com/jruby/jruby/blob/master/samples/swing2.rb has a warning, “swing.rb:4: warning: import is deprecated; use java_import”
  • #7385 - Updating jruby-openssl to 0.14.0
  • #7386 - Update SnakeYaml to 1.32+ due to CVE-2022-38752
  • #7388 - Update to Psych 3.3.4
  • #7395 - Update embedded rexml in jruby-complete
  • #7396 - Update rdoc in jruby-complete
  • #7397 - Update bundler in jruby-complete
  • #7399 - Update bouncycastle in jruby-complete
  • #7400 - Update snakeyaml in jruby-complete
  • #7401 - [deps] update Bundler/Rubygems to latest patch
  • #7404 - Update rdoc to 6.3.3 to fix known CVEs
  • #7405 - Update rexml to 3.2.5 to fix known CVEs
  • #7406 - Time.at with fractional seconds and :in doubles timezone offset
  • #7407 - Better match CRuby zone negotiation
  • #7416 - Regexp new none option

New in JRuby 9.3.8.0 (Sep 13, 2022)

  • Ruby Compatibility:
  • Altering the visibility of an included module method no longer changes what super method gets called. (#7240, #7343, #7344, #7356)
  • Thread termination at shutdown is more robust and visits all non-main threads. (#7351)
  • Standard Library:
  • csv has been updated to 3.2.5 to pick up a fix that eliminates fiber use for simple parse_line calls. (#7346, #7348)
  • psych has been updated to 3.3.3 to address CVE-2022-25857, an element-nesting DoS. (#7342)
  • Experimental Features:
  • Fibers can now be configured to use OpenJDK Project Loom’s virtual threads, which are lightweight and do not consume a native platform thread. Virtual threads make it possible for JRuby applications to create thousands of concurrently-executing fibers. Enable this feature on Java 19 using the JVM flag --enable-preview. (#7328)
  • 27 Github Issues resolved for 9.3.8.0:
  • 7240 - Changing method visibility changes behavior for module-inherited methods
  • 7257 - chore: Set permissions for GitHub actions
  • 7262 - jar-dependencies cannot be updated out-of-band from jruby
  • 7265 - Time.at argument handling
  • 7303 - Fix included_modules method to not return wrapped modules
  • 7316 - Incompatible error when nested LoadError
  • 7317 - Oddity with the jruby parser: it warns me about “warning: found = in conditional, should be ==”
  • 7321 - Fix issue #7316 runtime error when nested raise
  • 7324 - Time::at with BigDecimal emits Java Negative Exponent exception
  • 7325 - Fix negative scale BigDecimal#to_r
  • 7326 - sum method - undefined method ‘last’ for 1:Integer
  • 7328 - Use vthreads when available
  • 7332 - defined reified classes with their parent class’s classloader as parent
  • 7333 - fix Enumberable sum when elements are array
  • 7334 - fix zlib encoding
  • 7338 - InstanceConfiguration extra loaders not thread safe
  • 7342 - Update SnakeYaml to 1.31+ due to CVE-2022-25857
  • 7343 - Fix for changing method visibility changes behavior for module-inherited methods
  • 7344 - Changing method visibility changes super_method for module-inherited methods
  • 7345 - Use thread-safe COW lists here
  • 7346 - Iterating over CSV.parse_line causes an explosion of threads/fibers
  • 7348 - Update CSV to 3.2.5
  • 7351 - Avoid accidentally killing the teardown thread
  • 7354 - Fix 7317 it warns me about “warning: found = in conditional, should be ==”
  • 7356 - Fix for method visibility changes super_method for module-inherited methods
  • 7358 - Update polyglot-maven and commit updated XMLs
  • 7359 - Fixes Time.at argument handling (#7265)

New in JRuby 9.3.7.0 (Aug 16, 2022)

  • #7120 - Gem.install caused a BootstrapMethodError
  • #7185 - Spurious constant replacement warning when using include_package
  • #7211 - require_relative doesn’t work inside Jar with 9.3.4.0
  • #7218 - Empty rescue block returns exception object instead of nil
  • #7264 - update jar-dependencies gem hooks
  • #7267 - Circular exception handling can cause infinite loop since 9.3.4.0
  • #7268 - com.sun.nio.file.ExtendedOpenOption not available in OSGi bundles on Windows since JRuby 9.3.0.0
  • #7271 - Fix BootstrapMethodError in runtime helpers
  • #7279 - simple timeout script does not work
  • #7280 - Eliminate JI-specific const replacement warning
  • #7281 - Use the wide versions of these functions always
  • #7282 - Fixes #7218. Empty rescue block returns exception object instead of nil.
  • #7288 - Clear errinfo after each finalizer runs
  • #7289 - Revert “update jar-dependencies gem hooks”
  • #7291 - update jar-dependencies 0.4.2 reference in lib/pom.rb
  • #7292 - Always pass filename into AOT root scope creation
  • #7298 - Revert “update jar-dependencies 0.4.2 reference in lib/pom.rb”
  • #7299 - Fix for issue 7256: Undefined constants when including a module that has been prepended
  • #7302 - Fix for issue 7256 (jruby-9.3)
  • #7304 - Only use NOSHARE_DELETE if accessible
  • #7306 - Syntax Error occurs in regex
  • #7314 - Fix parsing Regexp for #7306

New in JRuby 9.3.6.0 (Jun 28, 2022)

  • Ruby Compatibility:
  • Fixed a leak in the frozen string cache and now ensure frozen strings are reused correctly without reencoding. (#7166, #7229, #7242)
  • Java Integration:
  • The internal cache for nested jar file contents has been optimized and a new option added for cache expiration. (#7225, #7232, [#7259])

New in JRuby 9.3.4.0 (Mar 23, 2022)

  • Ruby Compatibility:
  • define_singleton_method now always uses public visibility. This simplifies its implementation and eliminates warnings when aliasing it, as in the ostruct gem. (ruby/ostruct#40, #7031, #7055)
  • Java Integration:
  • The import method for importing Java classes remains deprecated for removal in 9.4, but now provides a better warning with a source location. (#6976)
  • Ruby subclasses of Java classes and Ruby classes converted into Java classes can now include instance variables that are accessible from Java as normal fields. This improves integration with Java frameworks that use reflection to access object state. (#7012)
  • Hardware Support:
  • Generated make files now properly set the platform architecture when running on Linux/aarch64 and Apple’s M1 family of CPUs. This allows sassc and other non-extension C-based gems to build and install properly. (sass/sassc-ruby#231, #7132, #7133)
  • Standard Library:
  • ostruct is updated to 0.5.1, which fixes warnings in verbose mode loading the json library. (#6831, #6963)
  • logger is updated to 1.5.1, which fixes a log rotation locking issue on Windows. (ruby/logger#67, ruby/logger#68, #7038)
  • Socket IPv6 constants are now always defined regardless of platform support, matching CRuby and JRuby 9.2. (#7069, #7071)
  • Fixed:
  • [Better error/notification message] “calling java_import on a non-Module object is deprecated”
  • Break in block passed to Thread doesn’t cause LocalJumpError
  • Allow reified classes to store instance variables in raw fields
  • Compile splatted rescue as splat
  • New string literals are marked as tainted if previously equal tainted strings were read from a file
  • Avoid interning tainted strings
  • Handle unrooted break jumps in Thread
  • warning: OpenStruct#define_singleton_method accesses caller method’s state and should not be aliased
  • Circular exception causes break JRuby
  • Log rotation inter-process lock failed, Issue occurs in JRuby 9.3.0.0 and Windows
  • Explicitly use public visibility for define_singleton_method
  • Restore 9.2 collect signature and add more API
  • Socket::PF_INET6 is nil on 9.3 when ipv6 is not available, unlike with MRI and 9.2
  • Regression: 9.3 converts LoadError to NameError when autoloading repeatedly and loading fails and file being loaded is not in current directory
  • revert ipv6 availability
  • Remove the require lock on LoadError
  • ArgumentError re-splatting empty keyword arguments
  • Integer#to_s, Integer#to_json includes null character(x00, u0000) on JRuby 9.3.*
  • Fix #7104
  • java_signature throws NPE when using positional annotation arguments
  • More checking for null fd
  • Architecture tweaks for JRuby on M1
  • [aarch64] fix unrecognized command -m64 for native extensions
  • Range#=== should not accept range argument
  • Use non-range cover logic for eqq and include
  • [deps] bump jruby-openssl to latest (0.12.2)
  • Update jcodings
  • Better warnings for deprecated java_import forms
  • Disallow circular causes
  • Revert ivar Java fields to fix remaining issues
  • Fixes #7102. ArgumentError re-splatting empty keyword arguments
  • Allow reified classes to store instance variables in raw fields (fixed)
  • Ripper.sexp throws error while parsing ‘ö’

New in JRuby 9.3.3.0 (Jan 19, 2022)

  • File.directory? returns false on macOS M1 for a directory
  • Require “json” outputs warnings
  • Getting “io/console on JRuby shells out to stty for most operations” on Jruby 9.3 with JDK17
  • RuntimeError: Found multiple supers in java ctor
  • Make split-super errors slightly more user friendly
  • Update ostruct to 0.5.1
  • Calling super() in a reopened Java subclass method triggers NPE in IRRuntimeHelpers.javaProxySuper
  • Dir.mktmpdir errors on apple-silicon native JDK
  • Gem install error “Permission denied” for jruby 9.3.2.0 [darwin-aarch64] (Apple M1)
  • JRuby 9.3.2.0 case/when array comparison differs from CRuby 2.6.9
  • #Wrong file mode/permission when opening/creating a new file [Apple Silicon, arm64, aarch64]
  • Java::JavaLang::ArrayIndexOutOfBoundsException on jruby-9.3.2.0
  • Merge 9.2 for JNR update and Symbol fix
  • Case when with an empty array
  • Fix #9684. AIIOBE when files >16bit lines and using coverage
  • Possible memory leak from instance_eval with jruby 9.3
  • Fixes #6993. Evals cause memory leak.
  • Do not cache non-“once” dregexp
  • Module check mishandles bash operator precedence
  • Fixes to run tests on Apple Silicon
  • Java class reopened to add a super call should dispatch normally
  • Avoid subshell for module check

New in JRuby 9.3.2.0 (Dec 2, 2021)

  • Issues resolved for 9.3.2.0:
  • #5729 - Check to see if we can do single nanosecond level math
  • #6813 - File.directory? returns false on macOS M1 for a directory
  • #6843 - move syslog constants to jnr-constants
  • #6889 - Also print causes of bubbled-out exceptions
  • #6895 - JRuby 9.3 Hash eats key String subclass instance variables
  • #6896 - JRuby 9.3 singleton_class bug
  • #6899 - Do not deduplicate strings with ivars
  • #6900 - Skip prepend wrappers in each_object(Module)
  • #6924 - java.lang.Iterable object has Enumerable ancestor but map cannot be called (jruby-9.3.x)
  • #6942 - New strftime
  • #6943 - Honor the requested address even given hostname
  • #6945 - Socket fixes for GHA CI
  • #6952 - Limit Date.parse input length and make interruptible
  • #6954 - Fix 6924
  • #6956 - Improve Performance of Time#strftime

New in JRuby 9.3.1.0 (Oct 13, 2021)

  • Standard Library:
  • Updated RubyGems to 2.2.29 and Bundler to 3.2.29. (#6890)
  • 23 Issues resolved:
  • #6263 - Set jruby-jars gem plugin to use 9.3 release
  • #6679 - [ji] allow Java errors from Ruby threads to reach the handler
  • #6841 - addrinfo - inspect hostname
  • #6842 - Avoid alias warning if target has same reqs
  • #6846 - Unexpected frame in stack trace from `caller` method with create_method invocation
  • #6849 - JRuby 9.3.0.0 Installer for Windows 10 x64 only works with JDK 8 (not JDK 16)
  • #6852 - Fix handling of ENXIO error during resource open
  • #6854 - Unexpected behavior when using `module_function` followed by `define_method`
  • #6855 - Fix #6854
  • #6857 - Process::Waiter is a private_constant on JRuby but not on MRI?
  • #6859 - Refinements vs. respond_to? regression in 9.3.0.0
  • #6860 - Cannot raise `KeyError` without arguments after 9.3.0.0
  • #6861 - Fix KeyError behavior with no arguments
  • #6863 - Fix #6859. respond_to? regression with refinements.
  • #6864 - Calling :include? on an String Range always returns true in 9.3.0.0
  • #6866 - Fix #6864. include? on an String Range always returns true.
  • #6870 - Missing keywords after a second proc call
  • #6874 - Calling exit! within at_exit doesn't "clear" the exception
  • #6876 - Fixes #6870. Missing keywords after a second proc call (full/JIT).
  • #6877 - Fix raw and varargs backtrace elements
  • #6879 - Fix at_exit exception behavior to match CRuby
  • #6886 - Fix and tests for concrete extension #java_class returning the parent
  • #6890 - Update rubygems to 2.2.29 and bundler to 3.2.29

New in JRuby 9.3.0.0 (Sep 22, 2021)

  • #449 - support newInstance() with arguments
  • #596 - Adding a method to eigenclass doesn't work properly. Works in cruby
  • #713 - BEGIN/END blocks not executed in main compiled script
  • #985 - Kernel.spawn doesn't support some options (ex: :chdir)
  • #2150 - Dir#glob does not return files with proper cases
  • #2155 - Method#super_method finds something when super is undef'ed
  • #2369 - Can't subclass a Java class that calls an abstract function in its constructor
  • #2794 - Load/require logic lacks path caching and indexing found in MRI
  • #3656 - Autoload is not overwritten by subsequent explicit require
  • #4004 - Migrate Ruboto to JRuby 9K
  • #4165 - java_field causes NPE when using derived class of a java object
  • #4194 - "LoadError: no such file to load" if IOException is raised in loaded file
  • #4678 - Prepending a module to a module extended by a class gives NPE when calling `super`
  • #4688 - RubyEnumerator.SizeFn does not receive enough context
  • #4695 - Super does not mark literal blocks as escaped
  • #4875 - Ruby 2.5 Gemification
  • #4943 - Open3.open2e returns `Errno::ENOENT` in jRuby but runs fine on Ruby
  • #5126 - Status for MRI-related security issues?
  • #5143 - Eliminate static field references to JRuby state
  • #5200 - Core method call missing in exception backtrace on JRuby 9.2.0.0
  • #5219 - [ji] make inspect on Java proxies work
  • #5266 - use of JRUBY_OPTS="-Xreify.classes=true" causes Java::JavaLang::StackOverflowError:
  • #5270 - Concrete JRuby Implementations of Abstract Java Classes Can't be Constructed With Reflection
  • #5381 - only require 'java', users should explicitly require 'jruby'
  • #5401 - Disabling fixnum cache breaks racc JRuby implementation
  • #5403 - `autoload` should delegate to `require`
  • #5419 - Reinstate open-addressing hash to work on concurrency improvements.
  • #5466 - Weird `Kernel.autoload` behavior
  • #5469 - Add Array#difference
  • #5470 - Add Array#union
  • #5494 - Ruby 2.6: Add #to_h with block argument to Array, Enum, ENV, Hash and Struct
  • #5496 - Bump JRuby version and Ruby compat level to 2.6.0
  • #5498 - [ji] change RubyException#toJava to convert by default
  • #5502 - Ruby 2.6: Add a new #filter alias for #select
  • #5508 - Ruby 2.6: Add a new #then alias to Kernel#yield_self
  • #5519 - teardown with threads waiting gets ugly
  • #5530 - Ruby 2.6: Add new method Binding#source_location
  • #5535 - Ruby 2.6: Add Dir instance methods #each_child and #children
  • #5537 - Ruby 2.6: Hash#merge, Hash#merge! and Hash#update now accept multiple arguments
  • #5540 - Ruby 2.6: Add endless range
  • #5549 - Use `invoke` instead of `invokeExact` to avoid casting error on Android
  • #5552 - Ruby 2.6: Add support for endless range in more methods
  • #5555 - Ruby 2.6: Switch Range#=== to use cover? instead of include?
  • #5576 - Ruby 2.6 Support
  • #5590 - LOADED_FEATURES internal index not working correctly
  • #5599 - Object#pp changes visibility upon requiring 'pp'
  • #5601 - pp should always be private (port from MRI 2.6)
  • #5602 - [fix] properly calculate warning ($VERBOSE) default
  • #5618 - Performance issues with require_relative
  • #5638 - Zeitwerk compatibility check list
  • #5646 - Remove deprecated NativeException logic
  • #5681 - ArgumentError (not fully converted, 23 bytes left) with String.encode!
  • #5710 - Enumerator#any? and yield(*[[]]) bug
  • #5717 - Module#autoload (concurrently) blocks a second thread...hanging
  • #5732 - Do not bind accessors for Java interface-based constant values
  • #5763 - Refactor and optimize loaded features
  • #5764 - Rework load service, load path, loaded features, and autoload
  • #5857 - Even JRuby 9.2.8.0/ 9.2.11.1 terribly slow
  • #5896 - Hash#each raises ArgumentError with a method of arity 2 converted to a block
  • #5937 - port CGI.escapeHTML optimization
  • #5947 - Update FFI scripts and other files from FFI gem
  • #5948 - Update shared FFI code
  • #5949 - use optimized CGIEscape
  • #6010 - Ruby 2.6 : Add String#split with a blcok
  • #6011 - Ruby 2.6 : Add Random.bytes
  • #6033 - Ruby 2.6 : Enumerator::Chain class, Enumerable#chain, Enumerator#+
  • #6037 - Implement Ruby 2.6 features
  • #6045 - Bundler incorrect path resolution handling classloader URI
  • #6062 - Mark custom classloaders as parallel capable
  • #6063 - [RbConfig] add RUBY_SO_NAME and RUBY_BASE_NAME
  • #6064 - throw ArgumentError instead of SecurityError
  • #6065 - Add FFI::LastError.winapi_error
  • #6066 - remove struct by reference
  • #6075 - Restore the backtrace element for the `new` call
  • #6080 - Remove IRScope from JIT and add AOT bytecode caching
  • #6087 - Add IT for issue 6081
  • #6098 - Illegal reflective access by org.jruby.ext.openssl.SecurityHelper
  • #6100 - starting jruby: "An illegal reflective access operation has occurred"
  • #6104 - Pre-epoch times are rounded up by #to_i
  • #6106 - Ruby 2.6 : Enumerator::ArithmeticSequence class, Numeric#step, Range#step
  • #6108 - Round Time#to_i down rather than truncating
  • #6110 - Implement Thread#{set_trace_func, add_trace_func}
  • #6115 - java_import conflicts should get scoped properly
  • #6116 - Cleanups and improvements for java_import
  • #6117 - RubyTime initialization refactor
  • #6120 - Ruby 2.6 : fix Enumerable#to_h with block.
  • #6121 - Ruby 2.6 : fix Enumerator::Lazy#find_all and #filter
  • #6124 - StackOverflow after several hours after upgrading from JRuby 9.2.9 to 9.2.11
  • #6125 - undefined method `runtime' for JRuby:Module on Travis CI when running `rubocop` for `rspec-rails`
  • #6127 - Address dangling threads in Timeout module
  • #6129 - trouble when running 'rails server' in WSL
  • #6130 - InvalidTransformException with jruby-9.2.11.0 + invokedynamic=true
  • #6131 - LoadError: no such file to load -- racc/info
  • #6132 - Properly recombine varargs with method name for indy m_m
  • #6133 - Enhanced exit blocks
  • #6135 - Bump `json` version provided by default
  • #6139 - Uninitialized constant -- already exists
  • #6141 - Tie become_java! and concrete extension (fixes #4165)
  • #6142 - Thread didn't execute?
  • #6143 - Hold a hard reference to Ruby threads
  • #6144 - Audit constant assignment paths for ID vs Java strings
  • #6147 - --server argument warning pollutes standard output
  • #6150 - Source FFI Ruby sources from the gem
  • #6151 - Ruby 2.6 : fix Struct#to_h exception message
  • #6153 - Passing `:chdir` to `Kernel.system` doesn't work reliably
  • #6155 - handle Java 9+ warnings on windows
  • #6157 - CSV parsing and encoding errors in 2.6
  • #6158 - New Ripper features in 2.6
  • #6159 - Remaining parser/constant name issues in 2.6
  • #6166 - Remove usages of deprecated ConfigMap (again)
  • #6169 - strftime precision against combinated formats (ex. %F, %r, ...)
  • #6171 - webrick tests fail on jruby
  • #6172 - Update stdlib gems
  • #6173 - Evaluation of `when` more lazily evaluates multiple conditions on one line.
  • #6175 - Windows installer fails with Oracle JDK-14: Missing unpack200.exe
  • #6176 - Shut down threads on teardown
  • #6177 - Remove all remaining references to pack200
  • #6178 - Align 8 and 11 in github actions CI
  • #6180 - Implement oneshot_lines for coverage
  • #6181 - missing method, `Coverage.line_stub` doesn't exist
  • #6182 - [ji] java_import now raise NameError on invalid names
  • #6183 - Ruby 2.6 : fix StringIO#write method logic
  • #6185 - Implement Coverage.line_stub
  • #6188 - Thread not killed after calling #kill
  • #6189 - "Illegal reflective access operation"
  • #6190 - Restart dead enumerator
  • #6193 - File.fnmatch with File::FNM_PATHNAME doesn't treat [/a] or [a/] like [a] as MRI does
  • #6194 - Remove deprecated classes
  • #6197 - Missing method that is public but defined on a non-public superclass
  • #6199 - Allow public methods from non-public superclasses to bind
  • #6202 - Time.now is inconsistent with MRI and Java System time
  • #6203 - Raise Ruby exception in JRuby
  • #6205 - Duplicate jnr-ffi classes when combining jruby-core with jython-slim
  • #6209 - Update jnr-posix and jnr-ffi to get default image seach
  • #6211 - Ruby 2.6 : fix failing transcode tests.
  • #6212 - Timeout service shuts down before at_exits have run
  • #6213 - Reorder teardown and add a post-exit hook registry
  • #6214 - JRuby functionality under "denied" illegal access
  • #6220 - fix copy & paste error
  • 6221 - missing break
  • #6222 - FileOutputStream's cleanup
  • #6223 - flo_floor remove dead code
  • #6224 - synchronize totalMonomorphicCalls
  • #6225 - NoMethodError: undefined method `[]' for :Class</li>
  • #6226 - Fixes to improve support for chdir in spawn functions
  • #6228 - Default to space padding for "special" formats
  • #6231 - Update fnmatch implementation
  • #6233 - jruby base artifact
  • #6234 - Improved integration with Ruby and Java exceptions
  • #6236 - Small optimization roundup
  • #6238 - Heavy string benchmark slower than 1.7
  • #6239 - Don't double-slash path elements when canonicalizing
  • #6242 - Sorbet `srb init` crashes
  • #6246 - Fixes to get WEBrick tests greener
  • #6247 - `Etc::SC_OPEN_MAX` not defined
  • #6249 - Encoding experiments with file path negotiation
  • #6250 - implement Etc.sysconf
  • #6252 - Fix failling TestUTF16#test_succ
  • #6255 - Double splat with empty parameters fails to find child's empty arity method
  • #6258 - Heredocs and escaped n
  • #6264 - Expose Java's built-in monitor synchronization as a JRuby API
  • #6266 - [etc] implement #confstr and #pathconf
  • #6267 - NoMethodError for ObjectSpace::WeakMap#values
  • #6268 - Fix reference type and avoid closing jar directly
  • #6269 - Avoid using URL.openStream due to JDK cache
  • #6271 - Prepending a module hides module's constants
  • #6273 - Only close temporary jars to avoid poisoning global jar file cache
  • #6276 - Fix typo to combine flags in the parser singleton class rule
  • #6279 - Some fixes, tweaks, and new tools for working with IR
  • #6286 - `require_relative` with Named Pipe Gives Incorrect Error
  • #6296 - Fixes to improve Java 11 testing
  • #6301 - Reconfigure some CI builds and add JDK14
  • #6311 - Fixes to get specs passing on Darwin and other things
  • #6312 - Implement IO#advise
  • #6313 - Do the read of the full file contents separately
  • #6314 - Loading PsychLibrary fails when temporary jar files do not have permissions to read pom of snakeyaml
  • #6315 - Deprecate and isolate all Options that are no longer used
  • #6316 - Mark literal blocks escaped when passed through a super call
  • #6318 - remove redundant Process.uid patch on windows
  • #6321 - Add self to SizeFn
  • #6330 - Add an option for specifying the nested jar temp location
  • #6340 - [ci] an attempt to run tests on Windows
  • #6341 - Propagate code range into Symbol and calculate hash like String
  • #6347 - prepend + extend_object still affecting CGI library
  • #6349 - bundle exec fails on Bundler 2 with config path and deployment
  • #6350 - IRReturnJump when returning from a proc returned by a lambda
  • #6351 - Consider both "argument scope" and lambda as return jump target
  • #6357 - RubySpec fixes for Windows
  • #6358 - Fix failing TestUTF16#test_regexp_union
  • #6360 - Fix inconsistency in #5837
  • #6363 - [test] Tag off remaining http failures.
  • #6364 - Fix test_greek_capital_gap failure.
  • #6369 - Avoid uncached isBuiltin and uncached calls in Enumerable
  • #6370 - Fallback primitive numeric ops to object dispatch
  • #6373 - [ffi] read_string should not throw an error on length 0
  • #6374 - [ffi] add bounds checks for writing to an inline char[]
  • #6375 - [ffi] update ffi to 1.13.1
  • #6376 - [ffi] ulong type looses precision in 64bit mode
  • #6377 - [ffi] Do NULL pointer check only when array length > 0
  • #6378 - fix failing TestM17N#test_utf_without_bom_valid
  • #6380 - Miscellaneous small optimizations
  • #6383 - Fixes for non-native execution
  • #6386 - Comparing Date object with nil sets global $! variable to NoMethodError
  • #6387 - Fix failing TestM17N#test_setbyte_range
  • #6388 - Update JNR to Java 8+ versions
  • #6390 - jrubyc: make valid java code when using annotations in java_signature
  • #6392 - restore $! on date comparisons
  • #6397 - jar:file: stat fails with error 123 on Windows
  • #6401 - define available constants
  • #6402 - Clean up compile warnings and deprecations on Java 14
  • #6404 - jrubyc has issues with mangled (target) path on Windows
  • #6406 - Allow ulong range values to coerce to long bits
  • #6410 - [ffi] fix libc name on Linux
  • #6412 - handle winstat errors
  • #6422 - Java-constructable Concrete Ruby Classes
  • #6425 - Update enxio to omit poll fd from key list
  • #6426 - Source ostruct from the 0.3.0 gem
  • #6429 - Fixes #6428: Date._strptime raises Java exception on invalid argument
  • #6431 - Fix platform type inititilization
  • #6438 - Fixes #6404 jrubyc: mangled ("--target") path on Windows
  • #6441 - [parser bug] NPE on a long case statement
  • #6445 - Method missing for prepended module
  • #6451 - Fix yielding to methods that take two params from Hash#each
  • #6456 - crash while marking used variables
  • #6457 - [embed] refactor (JSR223) exception wrapping
  • #6458 - bundle install on Windows fails with NotImplementedError: stat.st_gid unsupported or native support failed to load
  • #6460 - [windows] fix gid
  • #6462 - Update webrick to 1.6.1
  • #6469 - require 'parser' - ArrayIndexOutOfBoundsException
  • #6474 - OperatorCallNode was missing from NodeVisitor, add it
  • #6479 - Java Interface Default methods not properly supported
  • #6481 - Update JNR
  • #6484 - [ji] bind interface default methods
  • #6485 - require 'bundler' should prefer the gemified version
  • #6486 - Make bundler a proper default gem
  • #6488 - Sequel CI failures with ActiveSupport 6.1
  • #6493 - [ji] "usable" inspect for core Java types
  • #6494 - Timezone fixes for 2.6 logic
  • #6496 - Spec sweep
  • #6497 - Add unpack/pack 'j' and 'J' support
  • #6498 - Small spawn fixes
  • #6501 - Some simple spec fixes in ENV
  • #6503 - Cleanup FFI platform files
  • #6509 - [ffi] update to 1.14.2
  • #6513 - [ji] eliminate JavaClass usage in favor of Java wrappers
  • #6514 - javax.annotation-api has been deprecated, please move to jakarta-annotation-api
  • #6519 - Pathname#inspect behaviour is not consistent with other Ruby implementations
  • #6522 - optimize Array#unshift
  • #6524 - [Ripper] wrong number of arguments (given 1, expected 2) on DOT2/3
  • #6525 - Make Pathname#inspect behave like other Ruby implementations (fixes #6519)
  • #6533 - [deps] Update RubyGems to 3.2 and Bundler 2.2
  • #6534 - Move Monitor to native
  • #6535 - Work around EPERM fstat error for inotify under WSL
  • #6544 - Thread.handle_interrupt and pending_interrupt? spec failures
  • #6545 - Improve tagged pointer emulation
  • #6556 - [deps] update joda-time to latest
  • #6562 - [feat] support RubyString#split for Java (exts)
  • #6564 - Unexpected ArgumentError when calling method and splatting empty hash
  • #6569 - Improve compatibility of handle_interrupt
  • #6572 - Optimization for calling java vararg methods on hotspot. ~10x speedup
  • #6585 - Kill all use of Arity+
  • #6589 - RubyIO needs allocation-free read and write paths
  • #6590 - Provide direct byte[] read and write for RubyIO
  • #6591 - Improve JSR-223 exception messages
  • #6593 - fix getsockopt failure
  • #6594 - Use more lambdas for great justice
  • #6596 - Remove BSF support
  • #6597 - Remove the rest of Nailgun
  • #6601 - Update jnr-ffi and dependents
  • #6614 - More refactoring of block
  • #6616 - [stdlib] resolve Set#initialize compatibility
  • #6623 - Fixes #6564. Passing **kw to def with no args should work
  • #6628 - #dig slower with invokedynamic than without
  • #6630 - Provide a collector for indy varargs boxing
  • #6633 - Improve inlining of varargs path for split methods
  • #6643 - Reduce frame overhead for leaf blocks
  • #6646 - Do not assign backref from String#split
  • #6653 - Include overriding classes in backtrace mapping
  • #6660 - [ji] set Ruby/Java cause on RaiseException
  • #6661 - [refactor] move include_package into Java
  • #6662 - Marshal.load fails to unmarshal OpenStruct object
  • #6663 - ostruct 0.3.3
  • #6666 - Ruby 2.6 : Add :receiver option to NameError.new and NomethodError.new
  • #6672 - Ruby 2.6 : Update ioOpenGeneric for Pathname methods.
  • #6680 - Update to Psych 3.3.2
  • #6681 - Fix Dir.glob with cases
  • #6683 - Add all missing methods to WeakMap
  • #6684 - Move to jakarta-annotation-api
  • #6688 - Really fix #6158 ++
  • #6694 - Do not pollute CP with annotation-api
  • #6697 - [ffi] update to 1.15.1
  • #6698 - webrick 1.7.0
  • #6706 - Resolve Set#initialize compatibility
  • #6707 - Update wiki URLs to point directly to pages in warning messages
  • #6708 - Autoload regression
  • #6711 - [launcher] basename for solaris
  • #6712 - Fix some specs regarding method visibility
  • #6715 - Add syslog.rb for FreeBSD aarch64
  • #6718 - Current 9.3.0.0 subchild not properly registering the override of a parent with the reification cf 9.2.18.0 and earlier version.
  • #6728 - Fix undef with private method
  • #6732 - FFI issue loading libidn2 in macos
  • #6733 - Test on JDK 16
  • #6738 - Fixes #6173. Evaluation of when more lazily evaluates multiple conditions on one line.
  • #6744 - [ji] inspect for Thread/TimeZone/ZoneInfo
  • #6749 - Use the real module for Kernel autoload
  • #6751 - 9.3 : Gem::LoadError: You have already activated ffi 1.15.1, but your Gemfile requires ffi 1.15.3.
  • #6756 - Fixes #6242. Sorbet srb init crashes
  • #6757 - Fix failures in ruby/spec running with immediate jit mode
  • #6760 - Lazily define FFI-using File methods
  • #6762 - Actually fix File.symlink on Windows
  • #6772 - Merge lastline and other bits from 9.2
  • #6774 - fix failing TestBigDecimalUtil#test_String_to_d
  • #6777 - Prepend Fixage
  • #6778 - use optimized CGIEscape
  • #6785 - Fixes #6271. Prepending a module hides module's constants
  • #6787 - fix 5 failing BigDecimal tests
  • #6791 - restore api compatibility with nio4r
  • #6792 - Update JNR dependencies
  • #6793 - Update or revert FFI gem
  • #6794 - Update to jruby-openssl 0.10.7
  • #6795 - Update to 6.1.2.1 to match Ruby 2.6.8
  • #6796 - Update rexml to 3.1.9.1 to match ruby 2.6.8
  • #6797 - Update did_you_mean to 1.3.0 to match ruby 2.6.8
  • #6798 - Update owned dependencies backport9 and options
  • #6800 - Out of metaspace intermittently on Travis
  • #6802 - Update stdlib
  • #6803 - More agressively kill dead code
  • #6811 - Update jnr to fix junit dependency scoping
  • #6817 - b_nil should noop if compared against truthy immediate (IRBuilder)
  • #6818 - GC.start raises ArgumentError when passed named arguments
  • #6819 - Add optional argument to start and garbage_collect
  • #6820 - Fix super chaining on Ruby subclasses of Java classes
  • #6827 - reduce some repeated method calls
  • #6829 - Addrinfo#inspect add protocols
  • #6830 - Cannot call Varargs Java Methods
  • #6832 - "Syntax Error" occurs in "eval"
  • #6834 - Fix calling primitive varargs and add tests
  • #6835 - Revert ostruct tests/specs due to reverted gem
  • #6836 - Fix #6832. "Syntax Error" occurs in "eval"
  • #6837 - Fix string literals in other encodings which should be utf-8 encoding

New in JRuby 9.2.19.0 (Jun 15, 2021)

  • #6714 - getsockopt crashing with 9.2.18.0 and JRUBY_OPTS=--dev flag
  • #6720 - File#mtime fix timezone
  • #6723 - getsockopt crash in --dev mode

New in JRuby 9.2.18.0 (Jun 9, 2021)

  • Compatibility:
  • Improved support for subprocess launching on pure-Java environments (primarily Windows). (#6654, #6655, #6678, #6685)
  • Concurrency fixes for last match ($~) under concurrent access. Still somewhat unpredictable but behavior matches CRuby. (#6640, #6644, #6647)
  • Standard Library:
  • The socket library from master (JRuby 9.3) has been backported with all recent fixes, improving compatibility and feature coverage. (#3883, #5148, #6126, #6128, #6156, #6274, #6366, #6372, #6384, #6389, #6399, #6400, #6541, #6542, #6595, #6664)
  • Improved support for Open3 on Windows. #6291, (#6648, #6649)
  • Java Integration:
  • The bash script and native executable now detect Java module support more robustly. (#6637, #6638, #6639, #6689, #6701)
  • Native Integration:
  • Improved native support for exotic Linux platforms (mips64el, ppc64, s390x, aarch64). #6674, #6675, #6705
  • 40 issues fixed for 9.2.18.0
  • Github Issues resolved for 9.2.18.0:
  • 3883 - Rinda:RingServer not working (used for spork)
  • 5148 - Data read from a UDP socket retains buffer size causing large memory overhead
  • 6126 - Socket#connect is not interrupted by Timeout#timeout and Thread#kill
  • 6128 - Do all socket connects nonblocking for interrupts
  • 6156 - Socket.gethostname encoding still platform specific
  • 6274 - Always encode gethostname result as UTF-8
  • 6291 - Failed to install bindex on a Windows 10 PC
  • 6366 - Add support for TCP_CORK (experimental)
  • 6372 - move socket message to constants
  • 6384 - [socket] add constants for reserverd ports
  • 6389 - [socket] remove misused SOL_ constants
  • 6399 - Missing TCP_INFO support
  • 6400 - basic TCP_INFO support
  • 6541 - Errno::ENOPROTOOPT when connecting to Redis with JRuby-9.2.14.0
  • 6542 - [socket] improve keep alive support
  • 6595 - Accept numeric host
  • 6637 - Fix issue with JAVA_HOME not being set
  • 6638 - Restore quotes around module detection JAVA_HOME
  • 6639 - Resolve symlinked java command to find home
  • 6640 - java.lang.ClassCastException: org.jruby.RubyNil cannot be cast to org.jruby.RubyMatchData
  • 6644 - Reduce backref usage in split
  • 6647 - Improve concurrency of $~ adjacent methods
  • 6648 - JRuby 9.2.17.0 fails to install sassc on Windows
  • 6649 - Compatibility fixes for open3 on Windows
  • 6654 - Kernel.system leaks ENV on JRuby + Windows
  • 6655 - Do not merge extra env with current env
  • 6664 - Copy 9.3 socket implementation to 9.2
  • 6668 - Comparators (==, <, >, <=, >=) of subclassed Time instance do not call cmp defined on the subclass
  • 6670 - Handle possible ArithmeticException when extending byte store for String
  • 6671 - Array max size auditing and fixes
  • 6674 - Latest JNR libraries for 9.2
  • 6675 - JNR updates
  • 6678 - Regression on Windows test:jruby test_system_with_conflicting_dir
  • 6685 - Also use shell for commands with a space
  • 6689 - Failure to RVM-install JRuby 9.2.{13,17},0 on Ubuntu 20 with JDK 8
  • 6692 - Getting Java::JavaLang::ArrayIndexOutOfBoundsException in compiler internals
  • 6700 - Use cached UTF8 single-char bytelists here
  • 6701 - Update jruby.exe
  • 6704 - Fixes #6692. AIOOBE on evals overflowing closure ids.
  • 6705 - Update JNR deps

New in JRuby 9.2.17.0 (Mar 30, 2021)

  • Compatibility:
  • Miscellaneous small fixes to better support using Sorbet on JRuby. (sorbet/sorbet#1216, #6592)
  • Improve detection of Java module support when launching JRuby (also in jruby-launcher 1.1.14). (#6608, #6615, #6617)
  • Standard Library:
  • RubyGems updated to 3.1.6. (#6294)
  • Build improvements to ensure all parts of default and bundled gems ship in the distribution archives. (#6604, #6609, #6618, #6619)
  • zlib fixed to properly handle extra data in stream after inflate finishes. (#6606, #6612)
  • Minor updates to align standard library with Ruby 2.5.8. (#6611, #6624)
  • Performance:
  • Small optimizations to the dig function. (#6632)
  • Optimized calls to the top-level “java”, “javax”, “javafx”, “org”, and “com” packages. (#6635)
  • Issues Resolved:
  • [deps] update Rubygems to latest 3.1 (3.1.6)
  • Fixes to support Sorbet
  • racc default gem bits are not being included in the distribution
  • RubySet#newSet should be a static method instead of an instance method
  • zlib decompression produces wrong output
  • Java::JavaLang::NoClassDefFoundError (java/sql/Date)
  • Properly install and package bundled and default gem bits
  • Return only inflated content from Zlib.inflate
  • Detect modules more robustly
  • Update Windows jruby.exe for module detection
  • Include only bundled and default gems in stdlib jar
  • Only include gems in bundled or default
  • Update 2.5.8 stdlib
  • GPL-3.0 in the COPYING file
  • Unbreak CachingCallSite.isBuiltin
  • Dig improvements
  • Cache package after acquisition

New in JRuby 9.2.16.0 (Mar 4, 2021)

  • Compatibility:
  • Fixed an issue in Kernel#system where subprocesses that daemonize would cause waitpid to hang. (#6579, #6582)
  • Standard Library:
  • Elevated the racc library to a default gem, so it contains all racc sources and can be upgraded. (#6416, #6576, #6581)
  • Added RubyGems configuration to preserve “env shebang” in the gem command when updating RubyGems. (#6586)
  • Github Issues resolved for 9.2.16.0:
  • #6416 - `bundle exec racc` fails on jruby-head
  • #6576 - Unrevert racc gem
  • #6579 - Upgrade to 9.2.15.0 causes Kernel#system to hang.
  • #6581 - `LoadError: no such file to load -- racc/info` when using JRuby 9.2.15.0
  • #6582 - Remove process group to avoid hanging daemons
  • #6586 - Expand env-shebang to setup and pristine
  • #6587 - Call write directly rather than through stream

New in JRuby 9.2.15.0 (Feb 25, 2021)

  • Compatibility:
  • Several issues were fixed in process management, to avoid raising unexpected errors, properly launch executables on Windows, and preserve quoting when also doing a chdir. (#6466, #6477, #6489, #6516, #6532, #6536, #6546, #6565, #6568)
  • Error and interrupt handling inside fibers has been improved to avoid leaking fibers and enumerators. (#6309, #6538)
  • An incompatibility between the Synchronized module and refinements caused the i18n gem’s deep_merge refinement to break method lookup and prevent Rails apps from starting up. (#6547, #6549)
  • IO.copy_stream attempted to write the same content twice when copying to an IO-like object that did not report having written all requested bytes. (#6555, #6557)
  • Bare super calls (aka “zsuper”) gathered arguments incorrectly to support define_method, which broke dynamic finders in recent Rails versions. (#6563, #6571)
  • Standard Library:
  • The racc library was updated to 1.5.2 (#6507, #6517, #6537)
  • Failed UNIX socket connects were leaking an open file descriptor. (#6529, #6531)
  • Performance:
  • A bug in setting up block yields using invokedynamic led to excessively deep call stacks and slow execution. (#6260)
  • Github Issues resolved for 9.2.15.0:
  • #3205 - Dir.foreach, Dir.new, Dir.open: Missing/incompatible encoding support.
  • #6260 - Stack Overflow with invokedynamic.yield turned on
  • #6309 - Enumerator.peek not working with Enumerators created with #to_enum over ActiveRecord Relations
  • #6338 - JSON.pretty_generate generates different output to MRI for at least an empty hash
  • #6466 - java.lang.ArrayIndexOutOfBoundsException in 9.2.13.0
  • #6477 - EAGAIN: waitpid on JDK11
  • #6489 - Check the retval of waitpid before errno
  • #6491 - Undefine rlimit features when unsupported
  • #6492 - Disable rlimit features on Windows
  • #6499 - Array shuffle method should fail if prng is passed without being a named argument
  • #6500 - Fix Array shuffle and sample arity checking
  • #6507 - Unhandled Java exception: org.jruby.RubyContinuation$Continuation
  • #6516 - When extension is omitted, IO.popen does not find the executable in JRuby on Windows
  • #6517 - Install racc 1.5.2 from the gem
  • #6526 - Monitor synchronization issue in JRuby 9.2.14.0
  • #6527 - Fix interrupt handling in synchronize
  • #6528 - `Encoding.default_external = 'ASCII'` with `StringIO#string` results are different from MRI
  • #6529 - FD leak with orphan Unix Socket
  • #6530 - Backport StringIO encoding fix
  • #6531 - Close socket when bind or connect fails
  • #6532 - Improvements for popen process launch in Windows
  • #6536 - [test] spawn+detach raising (previous) posix error
  • #6537 - Revert racc default gem and copy manually
  • #6538 - Rework raise interrupt handling at fiber edges
  • #6540 - Cruby/Jruby behavior difference with block keyword arguments
  • #6546 - Handle errors in Process.detach properly
  • #6547 - NoMethodError for Concurrent::Hash#deep_merge!
  • #6548 - Ripper comparison operators
  • #6549 - Make sync and profiling method wrapper logic work with refinements
  • #6550 - Incorrect implementation of org.jruby.embed.variable.VariableInterceptor#terminateLocalVariables
  • #6551 - Dir file walking encoding improvements
  • #6553 - getResource() should never be called with a starting slash when called on a classloader
  • #6555 - IO.copy_stream double-writes to InternetMessageIO
  • #6557 - IO.copy_stream fixes
  • #6563 - Rails 6.1.2.x dynamic finders cause Java::JavaLang::ClassCastException
  • #6565 - Open3 chdir parameter removes quoting
  • #6568 - Backport spawn fixes to 9.2
  • #6571 - Fixes #6563. Rails 6.1.2.x dynamic finders cause Java::JavaLang::ClassCastException
  • #6574 - Fixes #6540. difference with block keyword arguments.

New in JRuby 9.2.14.0 (Dec 8, 2020)

  • #6280 - Trivial call site not inlining with invokedynamic
  • #6326 - ActiveRecord ConnectionPool locking issue with 9.2.12.0
  • #6354 - I'm trying to install on Windows 10 (64 bit) and getting this error: 'An internal error occurred (error code: 20)'
  • #6356 - "WARNING: An illegal reflective access operation has occurred" during gem build (from jopenssl)
  • #6367 - Pack200 is dead
  • #6371 - Non adapting end of iteration on insert during iteration - difference between Ruby and JRuby
  • #6379 - `exit!` incorrectly calls exit handlers
  • #6385 - DateTime loses timezone offsets on marshal/unmarshal
  • #6393 - Handle modification during delete_if iteration
  • #6394 - Remove all references to pack200
  • #6395 - Remove teardown hook to allow hard shutdown
  • #6405 - Thread kill does not release lock
  • #6407 - Make sure locks are added immediately after acquisition
  • #6413 - Ripper provides incorrect output
  • #6423 - update jruby-openssl to 0.10.5
  • #6424 - [fix] Date/DateTime loosing offset on marshal
  • #6428 - Date._strptime raises Java exception on invalid argument
  • #6432 - [fix] Date._strptime raises Java exception on invalid argument
  • #6440 - Java::JavaLang::NullPointerException () --> JRuby 9.2.13.0 on Windows 10
  • #6443 - Do not optimize case with null value to switch
  • #6463 - Update webrick to 1.6.1
  • #6466 - java.lang.ArrayIndexOutOfBoundsException in 9.2.13.0
  • #6467 - Simplify detached process thread logic
  • #6471 - Bundled did_you_mean gem v1.2.0 has a CC NonCommercial license in included file
  • #6473 - Update did_you_mean
  • #6475 - WARN FilenoUtil : Native subprocess control requires open access to the JDK IO subsystem
  • #6480 - Float() parsing innacuracy
  • #6482 - Update JNR projects to latest

New in JRuby 9.2.13.0 (Aug 4, 2020)

  • Security:
  • An alias-expansion bug reported in CVE-2017-18640 has been patched by upgrading the Psych YAML library to use a newer version of SnakeYAML. (#6320, #6332, ruby/psych#457)
  • Concurrency:
  • Internal structures used to optimize Ruby code have been made more thread-safe. Previously, these optimizations could be seen across threads in a partially-complete state, leading to errors in JRuby’s core runtime. (#6319, #6323, #6337)
  • Ruby Compatibility:
  • IO.copy_stream has been fixed to ensure all read bytes are written. Previously, partial writes would leave some read bytes in limbo, leading to hangs in net/http among other libraries. (#6078, #6348)
  • Fixed a regression from 9.2.12.0 in how we translate JDK socket errors to Ruby’s Errno on Windows. (#6322, #6328)
  • FFI:
  • FFI has been patched to not automatically release memory pointers when autorelease is disabled. This caused crashes in the sassc native library and possibly others. (#6310, #6331)
  • 12 issues fixed for 9.2.13.0
  • Github Issues resolved for 9.2.13.0:
  • #6348 - [fix][backport] Ensure copy_stream write sends all bytes read
  • #6337 - JRuby 9.2.12.0 OpenJDK11 java.lang.ArrayIndexOutOfBoundsException from JRuby Runtime
  • #6332 - Update Psych to 3.2.0
  • #6331 - Allow false autorelease to set unmanaged = true
  • #6328 - Fall back on old regexp BindException mapping
  • #6323 - Eliminate concurrent modification of runtime-sensitive IR state
  • #6322 - Windows raising different exception since 9.2.12.0
  • #6320 - Update snakeyaml to version 1.26 or higher CVE-2017-18640
  • #6319 - org.jruby.runtime.scopes.DynamicScope6 only supports scopes with 6 variables on JRuby 9.2.12.0/OpenJDK8
  • #6310 - Rails: After migration from ruby to jruby, app is not booting
  • #6284 - FFI::MemoryPointer autorelease issue
  • #6078 - net/http hangs (timeouts) since 9.2.7.0

New in JRuby 9.2.12.0 (Jul 2, 2020)

  • Update WEBrick to 1.6.0
  • Only close temporary jars to avoid poisoning global jar file cache
  • Raise RangeError for out of bounds unpack_at
  • Mimic CRuby's numeric hashing
  • Align behavior with CRuby for security specs
  • Reflective access on Java 11
  • Do not bind methods from classes that are not exported
  • Only define static field constant when inner class collides
  • Always treat non-full IC as not having protocol
  • com.sun.javafx.collections not exported in javafx.base
  • Backport 9.3 fixes for 9.2.12
  • NPE in ruby block called concurrently from Java
  • Do lazy instruction deserialization against dup'ed reader
  • Raise proper error for missing URLResource target
  • CompiledScript throws weird exception that doesn't happen with Invocable
  • JRuby thrown NullPointerException on File.open of nonexistent uri
  • Errors running multiple independent ScriptingContainers in parallel
  • Multithreaded code with function calls fail in precompiled JRuby classes
  • "warning: already initialized constant Companion" with Kotlin companion objects
  • Use all the tricks to properly eliminate illegal access warnings
  • [fix][ji] handle concurrent proxy iface impl init
  • interface proxy generation is race-y
  • [fix] Enumerable#any? does not require an arg
  • Enumerator#any? is wrong for sequence of empty arrays

New in JRuby 9.2.11.1 (Mar 25, 2020)

  • 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.
  • As we are actively working on 9.3.0.0 we decided to put out a mini release which fixes a single issue.
  • sprintf substring string formatting with precision may expose characters (#6137)
  • If you format a string using a precision specifier (e.g. %.1s) AND you pass in a substring of a larger string, you may see some of the larger string’s characters in the formatted result. This is due to a bug in the handling of internal String data that causes the result to contain more characters than requested.
  • long_string = "aabbccddhelloddccbbaa"
  • start_index = 8
  • sub_str_length = 5
  • precision = 3
  • sub_string = long_string[start_index, sub_str_length]
  • puts sprintf("%.#{precision}s", sub_string)
  • # => helloddccbb
  • This bug could potentially expose sensitive content from the original String. It is unlikely to affect most users, but you are still encouraged to upgrade.
  • Github Issues resolved for 9.2.11.1
  • #6138 - Subtract begin offset for partial substring in sprintf 's'
  • #6137 - `sprintf` adds extra buffer slots when precision arg truncates string slices

New in JRuby 9.2.11.0 (Mar 3, 2020)

  • Java Integration:
  • Gems and gem paths packaged inside jar files will properly load now. This 9.2.10.0 regression was caused by a change in RubyGems 3 that exposed a bug in JRuby. (#6060, #6082, #6083, #6084)
  • Performance Improvements:
  • Fixed a major performance and memory bottleneck in backtrace generation, used by Kernel#caller and friends. This was a regression in 9.2.10.0. (#6089)
  • Github Issues resolved for 9.2.11.0:
  • 6097 - CGI.escapeHTML restore the original encoding
  • 6093 - CGI.escapeHTML crashes on invalid byte sequence where CRuby does not
  • 6091 - Check arity earlier in JavaConstructor#new_instance
  • 6090 - [9.2.10.0] bogus revision regression
  • 6089 - Pontential performance issue
  • 6084 - Use expand_path logic for Dir.glob base path
  • 6083 - Basic smoke test with warbler no longer works with jruby-jars-9.2.10
  • 6082 - Upgrade to 9.2.10.0 breaks project using asciidoctor-maven-plugin
  • 6081 - Dependency convergence errors in 9.2.10.0
  • 6079 - newInstance on protected/private classes sometimes give an Index OOB Exception
  • 6060 - Globbed jar contents with expand path failing in RubyGems

New in JRuby 9.2.10.0 (Feb 19, 2020)

  • Update jruby-openssl to 0.10.4
  • #6074 - Update jnr dependencies
  • #6073 - Fix windows_stub_script to use jruby.exe
  • #6072 - Type Error: illegal access for final methods on ReferencePipeline (stream) in Java 11
  • #6071 - socket addrinfo fixes
  • #6070 - ipproto values are missing on Windows
  • #6069 - Generify and reuse accessible method search
  • #6067 - optimize roundUpToPowerOfTwo
  • #6057 - Bump mavengem-wagon version everywhere
  • #6054 - Refined send
  • #6044 - libjffi should be rebuilt on darwin (using newer xcode)
  • #6043 - Java 11 Compatibility
  • #6040 - make jruby-core-source jar has no absolute path from home dir
  • #6039 - NullPointerException from FStringEqual.hashCode
  • #6038 - profiler crashes with `java.lang.RuntimeException: BUG: refined marker called as method`
  • #6036 - Enumerator#take duplicates objects
  • #6035 - Prepare io/console for move to gem.
  • #6032 - [fix] restore $! on non-local return from rescue
  • #6031 - [fix] restore rescue nil performance
  • #6030 - Deprecation warning message : Gem::ConfigMap
  • #6029 - [fix] inspect builtin
  • #6028 - revert rational test
  • #6027 - [fix] SyntaxError rational overflow
  • #6025 - SyntaxError (Rational (174532925199432957/1E+19) out of range)
  • #6024 - Add filesystem and internal encoding names
  • #6021 - Fix Enumerator fiber leaks
  • #6017 - Refinements in eval with binding
  • #6016 - Remove array expansion of JAVA_OPTS environment variable
  • #6015 - early block return retains $! filling cause for next error
  • #6014 - correct/revisit exception backtrace (and stack-trace)
  • #6007 - Bash cleanup
  • #6005 - Reduce block overhead
  • #6002 - (refinements?) Something is passing nullblock instead of the actual block in GraphQL
  • #6000 - Do not alias a Java IsEqual to equal?
  • #5999 - ensure javase version in osgi meta is 8 and not 9
  • #5998 - update maven-bundle-plugin and bndlib to latest
  • #5997 - Stack overflow due to RubyGems warn patch
  • #5996 - Update RubyGems to 3.0.6.
  • #5995 - Update RubyGems
  • #5992 - Make many fields on Ruby final.
  • #5991 - Invalid OSGi metadata
  • #5990 - The .equal? method should not be mapped to .isEqual for Java objects (e.g. Joda LocalDate)
  • #5988 - java.lang.module.ResolutionException
  • #5985 - fix strict_base64 for shared strings
  • #5984 - Bind only public interface methods for private classes
  • #5981 - Nailgun Error - org.jruby.util.NailMain: command not found
  • #5979 - Maven source artifact contains full build path
  • #5978 - Cache method_missing target
  • #5977 - fix 'jruby: line 88: cd: ../libexec/bin: No such file …'
  • #5976 - Incorrect warning line
  • #5972 - optimize isGregorianLeap
  • #5970 - expand #succ for bignums
  • #5969 - Mutliple issues on jdk11 after ugrading to jRuby 9.2.9.0
  • #5968 - Enumerator#any? is wrong for sequence of empty arrays
  • #5966 - Remove usages of deprecated ConfigMap
  • #5965 - isGregorianLeap in RubyDate.java - two suggestions for minor changes
  • #5963 - improve BUILDING.md
  • #5961 - Faster unpackm0
  • #5960 - fiddle fixes
  • #5959 - Tweak getCurrentContext for SPEED
  • #5958 - Propagate ThreadContext through to_a implementations
  • #5956 - dlload throws LoadError instead of Fiddle::DLError
  • #5955 - NameError: uninitialized constant Fiddle::CParser::TYPE_SIZE_T
  • #5953 - Fix Array.pack with @ directive and buffer #4727
  • #5952 - Use string index in String #sub/#gsub when String pattern passed without creating a Regexp
  • #5945 - Refinements are not activated in send
  • #5907 - Properly override base env with supplied values for spawn
  • #5905 - String#gsub given a String can avoid Regexp
  • #5894 - Can't call methods of private subclasses in a module
  • #5656 - Multicast Receive Broken On Windows 10
  • #4727 - Array#pack buffer should start from beginning of buffer?
  • #3428 - Process.spawn doesn't remove nil env variables
  • #2255 - Fixnum instance variable behaviour incorrect
  • #2096 - filesystem and internal encodings are missing from Encoding.name_list

New in JRuby 9.2.9.0 (Oct 31, 2019)

  • 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, #5942)
  • 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

New in JRuby 9.2.7.0 (Apr 10, 2019)

  • #5679 - Provide better thread name for enumerator/fiber workers.
  • #5678 - multicast receive broken everywhere
  • #5677 - Use close_on_exec method instead of using fcntl calls for pty. Fixes #5663
  • #5675 - speedup BigDecimal division
  • #5670 - Update fiber/enumerator threads with info about creation
  • #5664 - Incorrect parameters for core methods messes up RSpec proxies
  • #5663 - File::write uses nonblocking IO when MRI uses blocking
  • #5657 - Multicast Receive Broken On all Unixy machines.
  • #5654 - NullPointerException with PTY.open returning null (not nil)
  • #5653 - Updage to json 2.2.0
  • #5652 - Remove the "Fatal" constant since it's hidden in MRI.
  • #5651 - Additional pack/unpack optimizations
  • #5650 - decimal performance
  • #5648 - Fatal is not a module
  • #5647 - Outline case bodies from unpack logic.
  • #5645 - Only run deploy against actual pushes to our repo
  • #5642 - Open3::capture2 and friends hang on stdin_data on Java GTE 9
  • #5639 - update to jruby-openssl 0.10.2
  • #5636 - Isolate debug specs and run fast suite without --debug
  • #5635 - Ubuntu: JRuby startup warning
  • #5634 - singleton method + zsuper issue when contained in another class?
  • #5629 - Deploy snapshots after successful builds
  • #5628 - Set up CI with Azure Pipelines
  • #5627 - Rework method invocation to properly super
  • #5626 - [fix] make Date/DateTime equality consistent
  • #5625 - [fix] DateTime (civil) Float sec rounding
  • #5611 - Revert "Push signal traps and at_exit blocks to a common thread for exec."
  • #5610 - Revert "Make autoload dynamically dispatch to require. Fixes #5403."
  • #5609 - Revert "Autoload fixes"
  • #5608 - Kernel#warn doesn't handle exceptions as expected
  • #5607 - Multiple adjustments to the Exception and raise logic.
  • #5605 - set_backtrace should disable backtrace generation on raise
  • #5604 - Improve refinements implementation
  • #5584 - improve sprintf compatibility
  • #5557 - Ensure symlink path names passed to File.lstat are dereferenced when necessary
  • #5550 - Regression: multiple refinements of the same class
  • #5547 - FileUtils.chmod failes when called on symlink under linux
  • #5545 - Refinements: method can't use other methods from refinement
  • #5542 - new grapheme cluster scheme in c code
  • #5541 - Refinements not following inheritance
  • #5539 - File::Stat#directory? returns false for symlink to directory with trailing slash
  • #5489 - Autoload fixes
  • #5441 - Push signal traps and at_exit blocks to a common thread for exec.
  • #5404 - Make autoload dynamically dispatch to require. Fixes #5403.
  • #5221 - Refinement with `super` vs. inheritance
  • #5153 - Fix refinements
  • #5054 - Refinement is not activated within itself
  • #4531 - Order of prepends and extends can break super
  • #4514 - [9.1.7.0] Refinements of a superclass's singleton_class not being honored
  • #4489 - Refines coming from included modules aren't recognized by jruby
  • #4237 - NullPointerException when using refinement including multiple modules and calling super
  • #4236 - Refinement that includes itself does not work
  • #2160 - Rational support for %f in sprintf

New in JRuby 9.2.6.0 (Feb 12, 2019)

  • Highlights:
  • 52 issues fixed for 9.2.6.0
  • Github Issues resolved for 9.2.6.0
  • #5597 - "Useless" warnings have file as "null"
  • #5596 - proc with no arguments does not pick up current block
  • #5595 - IRB with tracer flag is not working
  • #5591 - Eliminate all magic builtin libraries
  • #5589 - Time, DateTime: fix isTzRelative book keeping
  • #5587 - Time: minimal fix for Rails Time.change() problem
  • #5586 - Time: fix TZ offset
  • #5583 - Time: fix localtime(), getlocal(), parse() for TZ offset
  • #5581 - [fix] interpret today TZ-relative but use GJ chrono
  • #5580 - fix float formating regression (half-even rounding)
  • #5572 - adding RbConfig TOPDIR (and related)
  • #5564 - Fix time precision with fractional seconds as Rational
  • #5562 - uninitialized constant RbConfig::TOPDIR
  • #5558 - Time precision problem
  • #5556 - float format-ing regression in 9.2
  • #5554 - [fix] Thread#status should reflect exited exception
  • #5548 - Define a proper annotation parameter for DynamicMethod.Version
  • #5538 - Multi-rescue should not eagerly evaluate its elements
  • #5533 - File modification time not properly set
  • #5531 - Validate ivar and const symbols from Java before adding to table.
  • #5529 - Update to psych 3.1.
  • #5528 - Handle symbol dumping properly
  • #5527 - Fixes #5517 (returns in unexpected place)
  • #5526 - Use atomics to reduce contention within failover invaldator.
  • #5525 - High lock contention invalidating "failover global" invalidator
  • #5524 - backport fd leak in resolv
  • #5523 - Regression with Marshal.load(a Hash)
  • #5522 - test, review & avoid (regressed) mutex behavior
  • #5520 - Mutex gets 'broken' sporadically (since 9.2.1)
  • #5517 - NPE due to unhandled non-local return
  • #5516 - Fix sub-millisecond datetime difference handling
  • #5515 - Add log.singletons and .verbose to track singleton class creation.
  • #5514 - Executors are not shut down during tearDown
  • #5513 - String#scan raises java.lang.ArrayIndexOutOfBoundsException with multi-byte characters
  • #5512 - Eliminate transient objects for looking up symbol by bytelist
  • #5506 - review thread sync and clear references
  • #5505 - Update stdlib to Ruby 2.5.3.
  • #5504 - Also fix up return values when frame is present, for backref.
  • #5503 - Problem when method returns Regexp capture group using special variable $1
  • #5500 - Use Java 9 stack walking to reduce the cost of #caller and friends
  • #5499 - Fix known binary compat issues with new Java 9 overloads.
  • #5493 - Difference of DateTimes with fractional milliseconds calculated incorrectly
  • #5479 - Update ERB stdlib from MRI 2.5.0 to at least 2.5.1
  • #5462 - add java 10, 11 opcodes
  • #5451 - improve cross compile compatibility
  • #5450 - java.lang.NoSuchMethodError: java.nio.ByteBuffer.clear()
  • #5418 - Date.today does not appear to take the local TZ into account
  • #5383 - Create new pgroup when spawning process in chdir
  • #5312 - test_status_and_stop_p exposes a race in Thread status
  • #5169 - Reflective methods should not create symbols for nonexistent elements
  • #4784 - DateTime to_time does not preserve UTC-ness
  • #4157 - Kernel.sprintf("%f",...) rounds to even on MRI but JRuby rounds away from zero

New in JRuby 9.2.5.0 (Dec 7, 2018)

  • Github Issues resolved for 9.2.5.0:
  • #5495 - Remove failed tag for Array#to_h MRI tests
  • #5491 - improved error message for "wrong number of arguments"
  • #5488 - [fix] RubyException#toJava(Object) shouldn't return null
  • #5487 - [#5288] Overwrite parent class with module wrapper
  • #5483 - Java::JavaLang::ArrayStoreException when running cucumber tests
  • #5481 - Never return the internal module name as a mutable string.
  • #5480 - Class names are mutable
  • #5477 - mongoid driver does not work in JRuby on Windows or JRuby loads incorrect socket constants on Windows.
  • #5474 - less sync-ing with thread registration
  • #5461 - fix duplicate declaration
  • #5460 - Revisit symbol hash and marshal fixes from #4576
  • #5458 - Tempfile.open should have arity 3, to allow IO options through.
  • #5456 - Tempfile.open does not recognize the 3rd argument (options to pass to File.open)
  • #5455 - Fix multi-arity method binding.
  • #5453 - Splatted kwarg struct init
  • #5452 - Use default sg ITALY with getChronology here.
  • #5448 - RubyStruct.java gives ArgumentError: unknown keywords: keyword
  • #5447 - sigsev on installing gems on aarch64
  • #5445 - fix max range for usec
  • #5444 - fix an edge case in gcd calculation
  • #5443 - fix overflow in #i_gcd
  • #5435 - Allows CompiledIRMethod to inline methods when it is the host scope.
  • #5433 - update jruby-readline de-ja-vu (for JRuby::Util.load_ext)
  • #5417 - Improve errno detect
  • #5410 - remove getClass from RubyRegexp
  • #5409 - synchronize RubyHash#iteratorExitSync
  • #5387 - Updated jruby-readline alters terminal settings, breaking interactive prompts
  • #5288 - Regression: Refinements Broken from 9.1 to 9.2
  • #5242 - OpenSSL::Cipher#update doesn't accept a buffer argument

New in JRuby 9.2.4.1 (Nov 29, 2018)

  • This is a security release that updates the native Windows executables shipped in the bin directory. A user reported that several virus scanners appear to flag one of these executables, jrubyw.exe, as containing a virus. We scanned the systems used for building those executables, and were unable to find any evidence of infection, but as a precaution we have rebuilt them on a known clean system for this release.
  • Github Issues resolved for 9.2.4.1:
  • #5478 - Trojaner ALERT for JRuby 9.2.4.0 from repo1.maven.org
  • #5468 - Fix generated javadoc

New in JRuby 9.2.4.0 (Nov 14, 2018)

  • #5442 - fix potential int overflow
  • #5439 - Local variable not updated in closure state
  • #5438 - Negative nsec on Time initialisation
  • #5407 - normalized Float::MIN

New in JRuby 9.2.3.0 (Nov 10, 2018)

  • Java::JavaLang::RuntimeException: org.jruby.runtime.scopes.DynamicScope0 only supports scopes with 0 variables

New in JRuby 9.2.2.0 (Nov 9, 2018)

  • #5426 - Java::JavaLang::ArrayIndexOutOfBoundsException (invalid bucket size: 0) for Set init with empty array & block
  • #5423 - Process.kill(:KILL, $$) doesn't work on Windows
  • #5421 - bundler on Windows - permission denied
  • #5420 - jruby-dist-9.2.1.0-bin.tar.gz files is missing gem lib/exe folders

New in JRuby 9.2.1.0 (Nov 7, 2018)

  • #5416 - More robust way to detect atomic move failure. Fixes #5415.
  • #5415 - Regression 9.2.1.0 File#mv
  • #5414 - Add opens for java.io and java.nio.channels to improve compat.
  • #5413 - Bucket size of zero is not valid. For bucketless, use small.
  • #5412 - Temporarily revert open-addressing Hash for concurrency reasons.
  • #5411 - taint flag
  • #5408 - missing return
  • #5402 - Only use the UTC formatter if time was not specified as relative.
  • #5400 - Time.new with explicit timezone string will display as UTF with +00:00.
  • #5399 - Do a fast dup of args when all symbols, due to kwarg processing.
  • #5398 - Hash#any? not always returning proper keys/values
  • #5397 - Revert "[ji] make inspect on Java proxies work"
  • #5396 - Regression from Date.parse optimizations
  • #5394 - [fix] singleton meta class
  • #5393 - Fix Hash#shift when at capacity
  • #5392 - Hash#shift fails at capacity boundaries
  • #5391 - Fixing coercion case for subtraction from BigDecimal. Fixes #5386.
  • #5390 - Clear references to threads and thread contexts on teardown.
  • #5389 - Update jffi to 1.2.18 for refreshed 32-bit ARM support.
  • #5388 - Revert updated jruby-readline
  • #5386 - Bigdecimal and coerce failing on subtraction operation
  • #5384 - Prophile
  • #5380 - [fix] do not parse zone for local + better dst calculation
  • #5378 - Always use full logic for processing glob segments.
  • #5377 - Thread#status can return unexpected value "dead"
  • #5375 - Struct#values should return an array which is independent of the struct
  • #5373 - [#5287] Use epoll selector for file IO on macosx
  • #5372 - Struct#to_a returns an array that is linked to the struct
  • #5371 - Raise error on negative usec param to Time.new.
  • #5370 - Time can be initialized with negative nanoseconds
  • #5369 - Make subtract and addition operators work with DateTime objects
  • #5368 - ArrayIndexOutOfBoundsException in Joni
  • #5367 - enable Integer#sqrt
  • #5366 - improve rational performance
  • #5365 - Kernel#sleep hangs on CI
  • #5364 - improve gcd performance
  • #5363 - Improvements for modules on Java 9+
  • #5362 - Unable to use jirb on ARMv7 processor
  • #5361 - upgrade mavengem extension
  • #5360 - Fix #5357
  • #5358 - Fix toplevel method visibility in jit/fullint script scopes.
  • #5357 - respect frozen_string_literal
  • #5356 - Use JDK atomic move to more closely emulate POSIX rename.
  • #5354 - Realign timeout with MRI.
  • #5352 - wsl workaround
  • #5351 - Update to Psych 3.0.3.pre2. See ruby/psych#352.
  • #5350 - [Zlib][CRC32] Trim 'start' value to 32-bit for negative long integers
  • #5348 - revert volatile mod from values[] RubyArray store?
  • #5347 - optimize nextPowOfTwo
  • #5346 - Use right -sourcepath when jruby is invoked via jdb
  • #5345 - bump asm version + remove asm-analysis
  • #5344 - upgrade jar_dependencies to 0.4.0
  • #5342 - return early if one of the arrays is empty
  • #5341 - LoadError when loading a class with inline hash using instance vars as values.
  • #5338 - fix shuffle_random
  • #5337 - index error instead of argument error
  • #5336 - fix enumerable first
  • #5335 - Fix mvnw jar file path for Cygwin
  • #5333 - no result with glob pattern "\"
  • #5332 - ByteList java.lang.IllegalAccessError
  • #5331 - [WSL] Errno::ENOMEM
  • #5328 - Fix ci deploy
  • #5325 - Update JNR projects.
  • #5323 - Fix tagged as failed spec for Enumerable#slice_when
  • #5321 - ProcessBuilder#environment
  • #5318 - JRuby raises IOError instead of specific error if File.rename(a,b) fails due to hidden filesystem
  • #5317 - Allocate method on NilClass should raise TypeError
  • #5316 - Update jnr-constants for fixes after the updated generation logic
  • #5315 - Remove thread stop
  • #5314 - test_handle_interrupted? may expose improper handle_interrupt logic
  • #5307 - Short-circuit chained lazy calls once a nil is encountered.
  • #5306 - Fix Hash#initialize spec tagged as failed
  • #5305 - Fix Hash#rehash for open addressing
  • #5304 - rehashing regression with compare_by_identity
  • #5303 - Fix some failed Enumerable#find_index specs
  • #5302 - Fix failed Enumerable#uniq spec when yielded with multiple arguments
  • #5299 - Improve RubyHash#resize performance
  • #5298 - Fix remaining failing tests with Enumerable#all? when given a pattern argument
  • #5297 - Struct does initialize attributes wrong
  • #5296 - Fix some failed tests for Enumerable#all?, #any?, #none? and #one?
  • #5290 - Zlib crc32 resulting into Java::JavaLang::ArrayIndexOutOfBoundsException (32)
  • #5289 - Implement hash cache to fix #5280
  • #5287 - sysread hangs on EOF on mac
  • #5286 - Proc source location gives wrong result
  • #5281 - BUILDING.md: Mention Java 8 JDK is required
  • #5280 - bundle install fails since #5215
  • #5279 - Incorrect values resulting from to_date on a Time object
  • #5278 - Refactor and fix allocFirst with buckets for RubyHash
  • #5277 - fix duplicated file encoding
  • #5276 - Fixes underlying logic of slice_when / chunk_while to handle 1 element collections
  • #5275 - `slice_when` and `chunk_when` don't work with an 1-element enumerable
  • #5273 - IllegalCharsetNameException: -Dfile.encoding=UTF-8UTF-8
  • #5272 - Stackoverflow calling "super" from included module method
  • #5267 - 76c2df8 causes unit test failure of Oracle enhanced adapter
  • #5265 - Add Complimentary Regression Test for GH-5203
  • #5259 - [refactor] improve Date parsing performance
  • #5255 - Date parsing (still) noticeably slower than MRI
  • #5252 - can't use Date.iso8601 with a string subclass
  • #5250 - fix invalid date error message
  • #5247 - 9.2.0.0 requires java 8 but states java 7 as requirement
  • #5245 - Duped modules' class-level methods produce NPE when inspected
  • #5244 - 9.2.0.0 rake missing rake gem and fails
  • #5239 - review String -> RubyString UTF (8) encoding
  • #5233 - jruby (ext) loading left-overs to consider
  • #5231 - dont mutate module names
  • #5229 - Mutating result of Module#to_s changes Module#to_s on JRuby 9.2
  • #5226 - upgrade to jruby-openssl 0.10.1
  • #5222 - NullPointerException when deserializing a Set with YAML.load
  • #5219 - [ji] make inspect on Java proxies work
  • #5218 - The coderange is not properly recomputed after upcase/downcase/swapcase
  • #5216 - Method Missing: org.jruby.RubyInteger.int2fix
  • #5215 - Open addressing algorithm for RubyHash
  • #5214 - Clone proc blocks as well so they have their own frame etc.
  • #5211 - [ji] coercing Ruby File/Dir to Java File/Path
  • #5210 - Haml on JRuby 9.2.0.0 throws error evaluating interpolated element attribute with `#`
  • #5209 - NoMethodError: undefined method `on_kwrest_param'
  • #5208 - Encoding of String.name is ASCII-8BIT
  • #5205 - review (cleanup) boot -> standard JRuby extension loading
  • #5204 - AsciidoctorJ fails on JRuby 9.2.0.0
  • #5198 - Consider encoding when deduplicating strings.
  • #5197 - GZipFile#close does not return IO object as MRI does
  • #5196 - [9.2.0.0] Missing gems in dist
  • #5195 - 9.2.0.0 regression in Date#to_time for BC dates resulting in Time off by 1 year
  • #5193 - JRUBY 9.2.0.0: Assertion Failure when Reporting RSpec Failure
  • #5192 - jgem fails to load gem from rubygems on Raspbian
  • #5191 - 9.2.0.0 Regression in DateTime.parse for BC dates
  • #5190 - JRuby 9.2.0.0 string deduplication via String#-@ does not work the same as CRuby
  • #5189 - JRuby 9.2.0.0 warns about BigDecimal.new even in non-verbose mode
  • #5188 - Invalid Date exception when marshaling a Date - 9.2.0.0
  • #5187 - Non-volatile instance variables
  • #5186 - Finish reification
  • #5182 - Java types should simply toString on inspect?
  • #5175 - Always search full hierarchy for highest definition of a cvar.
  • #5171 - Generate right-shaped object subclasses
  • #5164 - Thread::Backtrace::Location#label inside eval does not return enclosing method name
  • #5163 - When Thread::Backtrace::Location#base_label and #label are #== on MRI they are also #equal?
  • #5162 - Thread::Backtrace::Location#base_label for blocks differs from MRI
  • #5098 - YAML.load significant performance degradation when JSON string is included
  • #5069 - Implement AppCDS support for startup time improvement
  • #4981 - Do not leak DNS Request IDs
  • #4851 - Unable to use protected java method in jruby with jdk9
  • #4781 - Improve two-way integration of Java and Ruby exceptions
  • #4708 - [2.4] Hash key randomization, universal hashing, new Hash impl
  • #4689 - __dir__ does not return canonicalized absolute path
  • #4684 - Rename readmsg to recvmsg
  • #4528 - Not every class has a superclass?
  • #4403 - MRI and JRuby disagree about File.exist?("/non_directory_file.name/")
  • #4281 - JSON::Parser issues with encodings
  • #4197 - Generify accept methods in AST
  • #3937 - Implement Thread#report_on_exception
  • #3922 - Performance regression with `Time.parse` from 1.7 to 9k
  • #3843 - Java calls do not bind directly with invokedynamic
  • #3834 - Anonymous class-type being raised by Timeout/Queue in both 9x and 1x.
  • #3739 - Drop 500MB cap for 9.1 on (and all launchers)
  • #3688 - Multibyte identifiers not marshaled correctly
  • #3495 - io/console.rb on AIX not working in v9.x
  • #3313 - Running threads stay running after teardown
  • #2212 - Kernel#__method__ within a proc returns incorrect value after method definition
  • #2056 - Use ExactMath for overflow
  • #1795 - Time#zone using Time#local
  • #1554 - Class variable in subclass is not overtaken by class variable in superclass
  • #1509 - Socket::Constants incorrect on Windows
  • #1183 - Use of deprecated Thread.stop() causes ThreadDeath exceptions propagating to caller
  • #1026 - Errno::ENOTDIR on Dir.chdir into jar
  • #315 - Improve handling of $! in exception logic
  • #287 - Class does not inherit singleton_class's class methods

New in JRuby 9.2.0.0 (May 25, 2018)

  • Highlights:
  • Ruby 2.5 language and stdlib support
  • Improved support for non-ASCII identifiers and symbols
  • Improved Ruby method call performance
  • 225 issues fixed for 9.2.0.0
  • Github Issues resolved for 9.2.0.0
  • #5184 - `true.dup` and `false.dup` blow up (Inconsistent with MRI)
  • #5183 - [ji] support Java time APIs with Time/Date/DateTime
  • #5181 - deprecate jruby/core_ext Class#subclasses
  • #5180 - [ji] RubyString implements CharSequence
  • #5176 - upgrade jruby-openssl to 0.10.0
  • #5173 - Update json + tests to 2.1 and update excludes.
  • #5170 - Clone frame and block before proceeding into class_exec logic.
  • #5168 - Remove hack for FileUtils.mv due to incorrect error raised from File.rename
  • #5167 - IO.copy_stream doesn't accept objects that respond to #readpartial
  • #5161 - [ji] lazy loading of Java (proxy) class extensions
  • #5160 - Inconsistencies with MRI: `FrozenError (can't modify frozen array)`
  • #5158 - fix resolv on windows
  • #5151 - Bytelist love merge
  • #5149 - Fix TestLoad#test_symlinked_jar
  • #5146 - Handle exception cause with null message
  • #5136 - Support overriding `Exception#message`
  • #5134 - Raising SIGTERM SignalException returns wrong process exit code
  • #5129 - Fix Enumerable#uniq for entry pair
  • #5124 - :newline option to File.open implies text mode now. (Part of #5118)
  • #5121 - Require real path
  • #5117 - Revert "Require real path"
  • #5116 - Range should raise TypeError if necessary method is not defined
  • #5113 - Numeric#clone and #dup no longer raises TypeError
  • #5110 - DateTime.jd doesn't set sec_fraction with 9.2.0.0-SNAPSHOT
  • #5109 - Require real path
  • #5108 - Thread.report_on_exception default value is now true
  • #5107 - Fix failed Ruby 2.5 ruby/spec tests for String
  • #5106 - Fix RubyString instances to raise FrozenError exceptions when mutations are attempted in debug mode…
  • #5105 - Add Pathname#glob
  • #5102 - Freeze Complex and Rational
  • #5101 - Fix Complex#finite? and Complex#infinite? failing tests
  • #5096 - Enumerable#any?, all?, none? and one? now accept a pattern argument
  • #5093 - upgrade joda-time library to latest 2.9.9
  • #5092 - DateTime.jd returns incorrect times with 9.2.0.0-SNAPSHOT
  • #5090 - SecureRandom.alphanumeric implemented.
  • #5089 - Implement fetch for Thread.current
  • #5088 - Use com.jcraft.jzlib.JZlib instead of hacking the internals of java.util.zip.CRC32
  • #5087 - Add Integer#allbits?, Integer#anybits? and Integer#nobits?
  • #5083 - Fix time interval test
  • #5079 - Add Method#=== that invokes #call
  • #5076 - redo date.rb (most) parts in native
  • #5074 - Fix file descriptor leak in resolv.rb
  • #5071 - Better use of ThreadContext constants
  • #5065 - Parallel exception hierarchy for Java
  • #5064 - Update ruby/spec
  • #5063 - Generify IRubyObject.toJava to make it more pleasant to use.
  • #5062 - Regression or bad merge in string interpolation
  • #5061 - Add keyword_init option to Struct.new
  • #5056 - Time#at receives 3rd argument which specifies the unit of 2nd argument
  • #5055 - [ruby-2.5] Implement String#delete_suffix
  • #5051 - Remove mathn.rb from stdlib
  • #5050 - refactor annotation-binder generated populators
  • #5047 - Module#define_method, alias_method, undef_method, remove_method are now public
  • #5046 - Add Process::last_status method
  • #5043 - Module#attr, attr_accessor, attr_reader, attr_writer are now public
  • #5042 - Deprecate Data class
  • #5039 - Add FrozenError class
  • #5035 - JRuby's native `SortedSet` lies about adding an object
  • #5027 - Andre Kullmann make the profiling service configurable via java prope…
  • #5026 - Fix String#rpartition for RegEx on Strings with multibyte chars
  • #5025 - No longer hide exceptions from coerce method
  • #5024 - Add `#test_windows_1255` to test targets
  • #5022 - Fix test coerce2 for master branch
  • #5021 - Do modifyCheck for each pair in Array#sort!
  • #5012 - Consider switching JSR223 engine to use "persistent" local variables
  • #5011 - Remove TestArray#test_zip exclusion test case
  • #4999 - IO#write accepts multiple arguments
  • #4993 - Ruby 2.5: Add String#delete_prefix and String#delete_prefix!
  • #4991 - Update File#path to raise IOError for files opened with File::Constants::TMPFILE option
  • #4988 - Ruby 2.5: Support regex for String#start_with?
  • #4983 - String#-@ deduplicates unfrozen strings
  • #4979 - Fix documents
  • #4978 - SortedSet#dup and SortedSet#to_a do not work as expected
  • #4975 - Feature/string casecmp
  • #4974 - Make Integer#{round,floor,ceil,truncate} always return integer
  • #4973 - Remove not used methods
  • #4969 - Add File.lutime
  • #4966 - Implement Hash#transform_keys and Hash#transform_keys!
  • #4962 - BUG: binding visibility for class_exec not thread safe?
  • #4961 - Fix Hash#rehash method for duplicate keys
  • #4958 - Hash#rehash does not properly rehash
  • #4957 - Add Set#reset
  • #4954 - Alias Set#=== to #include?
  • #4953 - Implement Dir.each_child
  • #4952 - Check third argument type for Dir.glob
  • #4951 - Fix `Hash#reject`
  • #4950 - Alias Set#to_s to inspect
  • #4949 - Implement Hash#slice method
  • #4948 - Add `#test_slice_before` to test targets
  • #4947 - Fix RubyHash to pass `#test_create`
  • #4946 - Fix NullPointerException when option is not :base
  • #4941 - Implement Dir.children
  • #4940 - Implement KeyError#receiver and KeyError#key
  • #4938 - Add `#test_singleton_method` to test targets
  • #4936 - Implement Dir.glob base option
  • #4935 - Implement Array#prepend and Array#append aliases
  • #4934 - Implement Array#prepend and Array#append aliases
  • #4933 - Add `#test_define_method_with_symbol` to test targets
  • #4932 - Fix a typo to match documents
  • #4927 - Raise `TypeError` if `module_function` is not called for modules
  • #4924 - Fix test undef
  • #4919 - Set MetaClass of cloned object
  • #4918 - Check meta-class of method objects in `equals`
  • #4914 - Make Kernel#pp available by default
  • #4911 - Miscellaneous parsing fixes
  • #4906 - Implement Kernel.yield_self
  • #4905 - Split frame fields to reduce pre/post logic
  • #4904 - Implement Integer.sqrt
  • #4902 - Add support for validating Regexp in Ripper
  • #4898 - Improve compatibility with MRI's Ripper
  • #4876 - Ruby 2.5 Support
  • #4828 - JRuby creates symbols with US-ASCII encoding but non-ASCII bytes
  • #4815 - Fix spec of Thread#status for an externally killed thread that sleeps
  • #4811 - Remove ant DSL/wrapper from stdlib and replace with gem.
  • #4809 - JRuby 9.2.0.0-SNAPSHOT does not return result of `rake` via `system`
  • #4800 - TracePoint: Support .trace
  • #4799 - SSL issues when building JRuby on Java 9
  • #4786 - Faster MixedModeIRMethod#call
  • #4784 - Psych needs update once 3.0.0 is released
  • #4780 - PERFORMANCE: Smaller bytecode for interface impl returns
  • #4779 - yaml/store has a hack until we get an updated psych.
  • #4777 - Generate smaller bytecode when using Ruby type on implemented Java Interface + Benchmark
  • #4775 - MINOR: Dry up RubyRange#fixnumEach
  • #4771 - an example test case for #4770 that shows how unicode readings fails …
  • #4769 - Fix Broken Compilation
  • #4762 - MINOR: Cache required arg count in CompiledMethodIR
  • #4761 - Toplevel return behavior (2.4)
  • #4760 - deprecate Class#subclasses from jruby/core_ext.rb
  • #4758 - [ji] make RubyIOs Java Closeable/Flushable + to_java to return stream
  • #4756 - [ji] support converting Ruby File -> Java File
  • #4755 - Implement get_dns_server_list
  • #4754 - PERFORMANCE: Intern Multiple String Constants
  • #4753 - MINOR: Make CachingCallSite more JIT friendly
  • #4751 - MINOR: Dry up RubyArray and improve performance in a few spots
  • #4750 - MINOR: cleanup setting callcounts for JIT
  • #4749 - to_inputstream method
  • #4742 - MINOR: Add missing `final`s and cleanup dead imports in `org.jruby.irinstructions.CallBase`
  • #4735 - BUILDING.md: Markdown formatting, copy-edits
  • #4730 - Fix error message in Hash#fetch
  • #4729 - KeyError message renders String keys as Symbols
  • #4718 - [ji] (auto) convert java numbers
  • #4713 - IO#set_encoding should return self (fixes #4712)
  • #4712 - IO#set_encoding returns nil instead of itself
  • #4711 - High precision BigDecimal to Rational conversion wildly inaccurate
  • #4703 - Move to Trusty
  • #4697 - Cannot rescue LocalJumpError originated in other thread
  • #4694 - Fix break not turning into LocalJumpError soon enough
  • #4693 - Dir.glob returns UTF-8 string with Windows-31J encoding
  • #4690 - native implementation of set.rb
  • #4686 - Cannot rescue from LocalJumpError after wrongly using break in proc
  • #4679 - SSL connection fails due to no available cipher on IBM JRE
  • #4674 - Fix StrptimeLexer.flex to add a comment about how to generate the lexer
  • #4673 - Handle nil buffer in Zlib::GzipReader#readpartial
  • #4660 - RuntimeError with compiled multi-byte variable
  • #4659 - LoadError with compiled multi-byte symbol
  • #4648 - New reify classes
  • #4640 - Also allow access control to trigger quiet bail out of jar index.
  • #4635 - Implement RubyDateParser in Java
  • #4633 - AccessControlException with wrong path when calling File.realpath under SecurityManager and classpath containing spaces
  • #4622 - README: latest stable JRuby in install instruction
  • #4620 - Fix wrong FFI types on Windows x64
  • #4616 - [ruby 2.4] Implemented Integer#ceil, #floor, #truncate
  • #4609 - Remove some MRI tests from excludes
  • #4606 - JRuby raises SystemCallError instead of Errno::EMSGSIZE
  • #4591 - Introduce Date._strptime in Java to improve the performance
  • #4584 - Update test-unit version to latest release
  • #4583 - JRuby starts executing Enumerator code too soon
  • #4579 - Javadoc jar published to Maven Central contains no content
  • #4578 - Use shutdown hook to delete temp files instead of File.deleteOnExit
  • #4577 - LocalJumpError: unexpected break in spec/ruby/language/break_spec.rb
  • #4570 - [jrubyc] respect Ruby visibility rules (do not generate private methods)
  • #4502 - Implemented optional buffer argument for Array#pack
  • #4490 - [ruby 2.4] Fixes for Integer#digits in PR #4375
  • #4470 - Implement `String#casecmp?` and `Symbol#casecmp?`
  • #4469 - `private` and `private :foo` have different semantics when compiling to Java
  • #4374 - [ruby 2.4] Implemented Hash#transform_values(!)
  • #4368 - Implemented Hash#compact and Hash#compact!
  • #4343 - Add optional precision for Float#floor
  • #4337 - Add optional digits for Float#floor
  • #4322 - Add `Pathname#empty?`
  • #4309 - fix Array#sum and Enumerable#sum
  • #4301 - Add `Dir.empty?`
  • #4297 - Feature#12217 Enumerable/Array sum
  • #4296 - Add File.empty?
  • #4293 - Ruby 2.4 support
  • #4292 - [ruby 2.4] Queue and other thread-sync classes moved under Thread
  • #4290 - [ruby 2.4] forwardable.rb is broken on non-MRI
  • #4288 - [ruby 2.4] Module#refine can now be given a Module
  • #4287 - [ruby 2.4] Add support for @ and $ in regexp named groups
  • #4283 - JSON::Parser does not reject inputs that it should
  • #4209 - Update Psych
  • #4205 - Update RubyGems
  • #4200 - BigDecimal multiplication with Rational produces garbage digits within the requested precision.
  • #4099 - specs for Unicode symbols
  • #4096 - Extra tests for symbol encoding Re: #4070 + #3719 and possibly #3880
  • #4068 - Enable invokedynamic for JIT tests
  • #4019 - gem list don't show some gems as default
  • #3880 - define_method using symbols string syntax works incorrectly
  • #3846 - Loss of precision on BigDecimal operations starting from 1.7.20
  • #3841 - fast-ruby benchmark comparing #cover to #range is faster on MRI
  • #3807 - [ji] allow for initialize() to be a valid Java method
  • #3794 - improved Date/Time conversions on Java 8
  • #3792 - Missing String bounds checks
  • #3719 - encoding of utf8 symbols (eg. :λ)
  • #3715 - using explicit return with external reference from define_method is 66x slower on 9k
  • #3697 - Identifier-keyed tables must always use raw or always use encoded identifiers
  • #3640 - Date and DateTime parsing slower than 1.7 and much slower than MRI
  • #3617 - jruby -i Edit files in place behaves inconsistent with MRI
  • #3572 - **kwd, call(**kwd) does not behave like MRI.
  • #3522 - END not working as in MRI
  • #3504 - .to_d acts differently in jRuby 9.0.x than Ruby 2.2.x
  • #3476 - SortedSet is much slower than Hash
  • #3462 - Uninitialized constant in Fiddle::Pointer.malloc
  • #3396 - Pathname#relative_path_from failing when there are certain unicode characters in the path
  • #3014 - Regexp's source's encoding is wrong
  • #2965 - Rakefile/rakelib depends on Ant, will not boot if not present
  • #2396 - String does not use <=> to compare two string instances
  • #2391 - File.dirname normalization differs from MRI
  • #2362 - Deeply-nested super or constant lookup is slower in 9k than in 1.7.
  • #2289 - Incorrect exception type for bad reference.
  • #1408 - Jruby class implementing java interface with "initialize" method as a part of the interface fails to compile with jrubyc
  • #1307 - Incorrect size for :size_t on JRuby / WIndows x64
  • #942 - Array#pack does not support java numbers
  • #914 - __method__ does not return valid symbol when Non-ASCII method
  • #841 - Threads which have blocked Fibers are not killable

New in JRuby 9.1.17.0 (Apr 24, 2018)

  • The JRuby community is pleased to announce the release of JRuby 9.1.17.0
  • Homepage: http://www.jruby.org/
  • Download: http://www.jruby.org/download
  • JRuby 9.1.x is our current major version of JRuby. It is expected to be compatible with Ruby 2.3.x and stay in sync with C Ruby. JRuby 9.1.17.0 is our latest release…
  • Major features of JRuby 9000:
  • Ruby 2.x compatibility
  • A new optimizing runtime based on a traditional compiler design
  • New POSIX-friendly IO and Process
  • Fully ported encoding/transcoding logic from MRI
  • If you do find issues then report them on using our issue tracker at http://bugs.jruby.org. We also encourage users to join our IRC channel (#jruby on Freenode) and mailing lists. You may also follow @jruby on Twitter for updates.
  • Highlights:
  • Windows installer works with Java 9
  • Improved compatiblity on Java 9/10
  • 31 issues fixed for 9.1.17.0
  • Github Issues resolved for 9.1.17.0
  • 5141 - Multiple Array#concat calls for single-element array throws ConcurrencyError
  • 5138 - jruby > 9.1.13.0 crashing on bundler when certain jvm flags are enabled
  • 5137 - Use ConcurrentWeakHashMap for RubyClass.subclasses
  • 5132 - Can't set `java.security.egd` system property
  • 5131 - TypeError: bind argument must be an instance of ...
  • 5128 - eval in Rack::Builder prints "warning: `frozen_string_literal' is ignored after any tokens"
  • 5125 - Cannot subclass standard class Time
  • 5120 - Dist target now fails
  • 5115 - ConcurrentModification error during Tomcat startup
  • 5112 - UDPSocket fails to bind to an IPv6 address unless AF_INET6 is explicitly set
  • 5111 - NPE from within CoverageModule.convertCoverageToRuby
  • 5104 - IRB doesn't start on jRuby 9.1.16.0
  • 5100 - File.open() on Windows without binary flag reading 0x0A (newline) instead of 0x0D (return)
  • 5099 - Exception.new.backtrace_locations should return nil
  • 5091 - "Invalid extended option" error for legit `-X` options
  • 5086 - RegexpError "invalid pattern in look-behind" for certain Regexps since 9.1.16.0
  • 5084 - Error when installing 9.1.16.0 on Windows 10 (64 Bit)
  • 5081 - TCPSocket/UDPSocket close deadlock while other thread read
  • 5080 - Method#owner for alias methods doesn't include prepended modules, breaking equality
  • 5078 - Numeric#step yields Floats instead of Integers
  • 5075 - File.utime failing with JRuby 9.1.16.0
  • 5073 - File#mtime does not behave like it does in MRI in respect to renamed and deleted files on POSIX
  • 5072 - update jffi and release version for JRuby 1.7
  • 5066 - The & operator doesn't work with quoted symbols
  • 5057 - java.net.preferIPv4Stack=true warning not possible to disable on OpenBSD
  • 5018 - open3.rb broken in JRuby
  • 4989 - Inconsistent end_of_day result
  • 4894 - Is there a way to fail-fast on ambiguous arguments?
  • 4796 - Possible ChannelFD leak in FilenoUtil?
  • 2455 - red black tree 50% slower in 9k compared to 1.7
  • 2354 - Java exceptions do not propagate out of Thread#join

New in JRuby 9.1.15.0 (Feb 22, 2018)

  • Ruby 2.x compatibility
  • A new optimizing runtime based on a traditional compiler design
  • New POSIX-friendly IO and Process
  • Fully ported encoding/transcoding logic from MRI

New in JRuby 9.1.15.0 (Dec 8, 2017)

  • Highlights:
  • Rubygems updated to version 2.6.14
  • K suported in regexps
  • Socket close_on_exec support
  • 30 issues fixed for 9.1.15.0
  • Github Issues resolved for 9.1.15.0:
  • Ripper doesn't handle private def with nested block
  • Don't unconditionally emit debug level info from RACC
  • Dead Exception in RealClassGenerator
  • Update rake's url
  • A regexp with K doesn't work in JRuby
  • UDPSocket.new(Socket::AF_INET6) throws exception (JRuby 9.1.14.0)
  • Rails parsing time ends with usec 1 instead of 0
  • OOM due to unbounded rescuePCs growth
  • Mutex sleeps indefinitely with timeout <= 0.0001 seconds
  • cannot link Java class com.util (java.lang.NoClassDefFoundErrorcom/util (wrong namecom/Util))
  • Fix issues discovered using Error Prone
  • undefined "close_on_exec=" for TCPSocket
  • OpenSSL::Cipher#random_iv Regression in 9.1.14.0
  • Simultaneous client reads / writes to the same socket from different threads can deadlock
  • [#3953] Use java.nio for FileTest#symlink?
  • Gem::LoadErrorYou have already activated rack-cors 1.0.1, but your Gemfile requires rack-cors 1.0.2
  • Potential bug in internal/runtime/ThreadService?
  • popen doesn't work on Windows
  • copy_stream to SSL seems to read the file into memory
  • Fiber#alive? returns true even when already finished
  • String#concat(java.lang.String) does not work
  • activation of jar-dependencies in bundler clashes with shipped gem
  • IO.copy_stream doesn't seem to limit the chunk size
  • OpenSSL::Random.random_bytes specs seem to get stuck on Travis
  • Rails csfr_meta_tag requires minutes to render due to jruby use of /dev/random on a virtual machine
  • __FILE__ is not available in BEGIN section
  • RangeErrorbignum too big to convert into `long'
  • JRuby counterpart for RubyVM.stat
  • File.symlink? fails on Windows, in 9.1.2.0
  • defined? with a colon2 fully resolves the left constant

New in JRuby 9.1.14.0 (Nov 9, 2017)

  • do/end and break precedence issue with omitted parens
  • jitescript jar clashes with bundled jitescript classes in jruby-complete jar
  • Make BigDecimal::limit work for subtraction and division. Fix issue #1615
  • IO#read_nonblock throwing EOFError with "exception: false"
  • FFI not working on Java 9 MacOS
  • Time#to_datetime incorrect for times before the date of calendar reform
  • switch ShellLauncher to use getAbsolutePath
  • Coverage levels discrepancies between JRuby 1.7.x and JRuby 9.1.x
  • Fix an infinite loop when attempting to read from a directory
  • Raise Errno::ENOTDIR if the parent of an opened file is not a directory
  • Backport LocalJumpError and EQQ fixes from 9.2
  • Time/Datetime conversion inconsistency with MRI
  • Wrong control flow order with Constant ||=
  • can not require openssl with JDK9
  • Case with complex when uses == instead of ===
  • Global variables read stale values
  • Unhandled Java exception in Ripper on inline comments
  • Ripper fails to lexical analyse around escaped newline on JRuby
  • Fix memory/disk usage leak when creating many ScriptingContaiers
  • Thread.current.status is wrong for killed thread
  • Java 9 support
  • File descriptors from stdlib jars are leaked when ScriptingContainers are terminated
  • BigDecimal::limit has not effect

New in JRuby 9.1.13.0 (Sep 7, 2017)

  • Github Issues resolved for 9.1.13.0:
  • File.symlink? fix typo
  • YAML::Store does not retrieve UTF8 values correctly in read-only mode
  • When creating a symbolic link JRuby give bad error message when not an admin on windows
  • Update to latest rubygems
  • (SystemCallError) Unknown error 123 - FindFirstFile with AsciidoctorJ-PDF on Win10
  • core_ext/class.rb:subclasses conflicts with ActiveRecord
  • "org.jruby.runtime.scopes.DynamicScope1 only supports scopes with 1 variables" with Deeply Nested Blocks
  • Line numbers in backtrace with multiline method invocation are sometimes different from CRuby (again)
  • haml-lint hangs with JRuby 9.1.12.0
  • Array.instance_methods different for jRuby inside Rails
  • Error executing `elm-install` from `elm_install` gem
  • Parser does not seem to terminate when parsing this string
  • upgrade jruby-openssl to 0.9.21
  • JRuby wrongly mutates hash passed in as keyword arg with indy enabled
  • Enumerable#each_with_index is broken again
  • Problem with Class.instance_methods after Module.prepend
  • NPE in windows parsing command line string -e ...
  • Rails no longer runs on Tomcat
  • TypeError: debugging with --debug
  • Re-raising the cause of a Java exception can result in leaked memory and IllegalStateExceptions
  • File path canonicalization still broken inside jars on Windows
  • `syslog/logger` from the Ruby standard library is missing in JRuby 9
  • Possible incompatibility with Sorcerer in 9.1.9.0 + 9.1.10.0
  • jrubyc compiled representation breaks but source rb works fine

New in JRuby 9.1.12.0 (Jun 16, 2017)

  • Regression where in uncommon cases zlib would fail when trying to detect end-of-stream. This would make some gems fail to install.

New in JRuby 9.1.11.0 (Jun 16, 2017)

  • FFI memory leak regression fixed
  • File.symlink regression on windows fixed
  • 27 issues fixed for 9.1.11.0

New in JRuby 9.1.10.0 (May 26, 2017)

  • Major features of JRuby 9000:
  • Ruby 2.x compatibility
  • A new optimizing runtime based on a traditional compiler design
  • New POSIX-friendly IO and Process
  • Fully ported encoding/transcoding logic from MRI
  • This release just fixes two regressions:
  • arr.with_index {|v| } was passing [element, index] to v instead of just element.
  • type.become_java! was raising when it could not become a java reified type but JRubyFX depends on this completing without error.

New in JRuby 9.1.9.0 (May 17, 2017)

  • Heuristic to rebind less in invokedynamic when it callsite changes too much
  • Some improvements in having proper symbol encoding
  • Improved source line reporting on errors
  • 51 issues fixed for 9.1.9.0
  • Github Issues resolved for 9.1.9.0:
  • CGI.unescapeHTML => Java::JavaLang::ArrayIndexOutOfBoundsException
  • Include Ruby Licensed json libs in COPYING #4587
  • ASF projects can't bundle and ship jruby9k
  • Also increment thresholds in indy sites for method_missing.
  • Bump jnr-posix. Fixes #4600
  • Dir.tmpdir fails with error on AARCH64
  • Update COPYING for bundled java licenses #4587
  • Oat gem slower at steady-state with invokedynamic than without it
  • Clean up structure of io/console and avoid stty on Windows.
  • COPYING is missing Java libraries
  • Jruby profiler raises exception when using the holidays gem
  • Fix wrong method lookup cache used when class is prepended
  • Add native console support on AARCH64
  • Return Process::Waiter with pid in Process.detach
  • Time.now sometimes attempts to call libc gettimeofday on Windows
  • String encoding differs between MRI and JRuby
  • Ripper.sexp unexpectedly returns nil when given source includes keyword-ish symbol
  • Fix Method#parameters for a method generated by respond_to_missing?
  • Copy-editing: misspellings
  • Java::JavaLang::ArrayIndexOutOfBoundsException in CGI.unescapeHTML
  • ArgumentError message differs on multiple unknown keywords args
  • Kullmann: Fix TracePoint nil event. Add test
  • support new JDK version string scheme
  • Add AARCH64 support in FFI
  • Symbol encoding changes after defining a method with same name
  • Use jnr-constants 0.9.9-SNAPSHOT to fix #4006.
  • When canonicalizing classpath URIs, use a bogus root path.
  • Regression(?) in String#% from 9.1.7.0 to 9.1.8.0
  • Update to Rubygems 2.6.11
  • Don't yieldSpecific to allow arrays through normal block params.
  • Enumerable#each_entry behaves differently from MRI
  • do not set eval-type NONE value in a thread-local
  • plenty of [org.jruby.EvalType] (value [NONE]) in thread-locals
  • Guard gem does not work on JRuby 9.1.8.0
  • Marshal.load fails with an explicit nil proc
  • String#% fails with Hash parameter
  • cleanup and improve Time's nsec rounding
  • File.mtime doesn't return milliseconds
  • Travis-ci: Error parsing Gemfile on current jruby-head
  • JIT fixnum cases (with a value span <= 32) as a tableswitch
  • Literal rational syntax does not support Bignum
  • Wrong line number reported in backtrace of syntax error caused by '*/'
  • Wrong line number reported in backtrace in hash creation
  • Can't use `require_relative` with a path beginning with `lib` in a jar...on Linux
  • Non-ASCII Symbol gives ArgumentError when calling inspect on the symbol
  • jRuby 9050 and 9100 behave differently for case / when with Array from MRI
  • remote execution
  • GBK Symbol Error (jruby 9.0.1.0)
  • Dynamic "once" regexps are not as atomic as in MRI
  • Failure to reject invalid float forms with proper message
  • Time#nsec rounding is happening at a place we don't want.

New in JRuby 9.1.8.0 (Mar 7, 2017)

  • Fixed intermittent DynamicScope size errors
  • Concurrency fixes to jitting of blocks (mostly seen as previous bullet).
  • Several issues fixed when running with -Xcompile.invokedynamic
  • Github Issues resolved for 9.1.8.0:
  • Use actual impl module to test bindability. Fixes #4477.
  • DynamicScope sizeError
  • cgi/escape does not define CGI.escapeHTML and other methods
  • release and upgrade BC (jruby-openssl)
  • Fix some issues with Fiddle
  • Fix #4463 Marshal load bigdecimal NaN fails
  • . never seems to change once JIT'd
  • Actually cache the idTest on the module.
  • Improve some of the debug logging in ConstantLookupSite.
  • Allow reads after calling BasicSocket#close_write.
  • JRuby native no longer loads on windows
  • IO#close_write seems to close the read side too for unix sockets
  • Make failed indy call sites still use specific-arity dispatch
  • Separate varargs and specific-arity names in JIT. Fixes #4482
  • The return value of `ARGF.file#lineno` differs from that of MRI
  • Use ipaddr to compare the sender's address
  • Use arity hashCode instead of proc#hash in CallableSelector
  • YAML: Can't load files with characters in the supplementary plane
  • Set up EWOULDBLOCKWaitReadable/Writable if not present. Fix #4473
  • Allow refinements in one eval to be seen in the next.
  • Rational() and IO.try_convert do not work for BasicObjects
  • Complex() Kernel method does not consult an object's to_c method
  • Doing require_relative too often leads to TypeError
  • String#unpack: Unpacked string should not have an encoding
  • Block doesn't retain it's binding through instance_eval
  • prepending to the singleton class of a module breaks instance_method
  • Activating refinements in binding.eval doesn't stick outside of the evaluated string.
  • IO::EWOULDBLOCKWaitReadable Exception class not defined
  • jrubyc broken for simple (self-executing) scripts in 9.1.7.0
  • Make sure to iterate over all keys when cancelling keys in a SelectorPool
  • Exception backtrace is nil when it should be present
  • Fix #3799 again.
  • Java Null Pointer exception while bundling
  • Marshal load bigdecimal NaN fails.
  • `ObjectSpace.each_object.to_a` raises `ArrayIndexOutOfBoundsException`
  • system and spawn raise 'wrong exec redirect action' when redirecting given `out: tempfile` or `err: tempfile`
  • Sequel fails with -Xcompile.invokedynamic=true
  • Licensing is confusing
  • [ji] support 'native' method arguments (e.g. org.jruby.RubyObject)
  • Fix GzipReader "position" update for #each and #each_line.
  • string encoding is incorrect when compiling to .class files via jrubyc
  • LocalJumpError when creating enumerator inside GzipReader.open block
  • Unable to re-deploy rails app (java.lang.RuntimeException: BUG: could not initialize constructor handle)
  • Memory leaks due to overwritten local variables being wrongly kept alive on the stack
  • fix Base64#decode64 behavior
  • String#scrub ignores the block if the string encoding is not ASCII-compatible
  • [ji] deterministic Java bean-style method aliases
  • [#4353] Ignore consecutive DOUBLE_STAR in glob_helper.
  • Kill the LocalJumpError logic for break in lambda. Fixes #4369.
  • JRuby's impl of FFI differs in behavior from MRI; segfaults/crashes
  • RubyHash's compare_by_identify Java method naming is confusing
  • microsecond accuracy is not supported in class Time
  • compile back to hard scope when closure compile/build requested
  • Metaspace fills with java.lang.invoke.LambdaForms$ over time
  • Dir.glob returns doubles, if used with recursive directory matchers "**"
  • Fix JRuby embed crash after application reloading
  • Singleton on non-persistent Java type Java::JavaLang::NullPointerException
  • Calling super with two "_" params ignores the value of the second
  • Base64.decode64 incorrect result when missing paddings
  • Never-ending getaddress() call when using compressed IPv6 nameservers in /etc/resolv.conf
  • java.lang.NullPointerException when using for loops
  • ActiveRecord::StatementInvalid: ArgumentError: wrong number of arguments (1 for 2) for invokedynamic
  • JRuby 9.0.1.0 has slower $global_var usage
  • PTY.spawn doesn't pass arguments
  • Attempt to get output from PTY.spawn periodically hangs
  • State file use in UUID gem causes severe performance degradation
  • Hash inspection not working as in MRI for sprintf %p
  • Dir#glob and escaped commas
  • OpenSSL::PKey.read throws a null pointer exception
  • '/' works as a valid path but children don't (under windows)
  • Cannot call a Java method whose parameter is RubyArray when it is overloaded
  • test/mri/ruby/test_regexp.rb has regexp that fail to parse
  • io/console and/or FFI do not load right with alternative -0 separator
  • Need to error for unsupported keywords
  • TracePoint thread_begin and thread_end events are broken
  • RegexpError with look-behind
  • Improve Bignum string parsing
  • chmod inside of File block fails to create file
  • [2.1] StringScanner named captures
  • TypeError raised when trying to propagate java Throwables using Thread.raise
  • LOADED_FEATURES.clear does not appear to clear internal set

New in JRuby 9.1.7.0 (Jan 21, 2017)

  • #4433 - NullPointerException when creating tempfiles in rspec
  • #4431 - Set toplevel module
  • #4429 - corrupted JIT byte-code for method
  • #4427 - Don't allow null method names
  • #4426 - Calling super() outside of a method causes NPE
  • #4425 - Code behavior changes after being JITted at runtime
  • #4421 - Make StringIO thread-safe by synchronizing against ptr.
  • #4420 - [#4414] Fixes #4414. getVpValueWithPrec19 should raise FloatDomainErr…
  • #4418 - File.expand_path with uri:classloader still relative on Windows
  • #4417 - StringIO is not thread-safe (throws a Java exception)
  • #4416 - The i18n gem does not work in AOT mode
  • #4414 - NumberFormatException when divide BigDecimal by Float::NAN
  • #4410 - chunk_while not returning results equivalent to MRI ruby 2.3+ (jruby 9.1.6.0)
  • #4407 - Concurrent::ScheduledTask is broken on master JRuby
  • #4404 - Decreased coverage with 9.1.7.0 snapshot
  • #4390 - Specific arity jit cleanup
  • #4389 - Check permission to AccessibleObject#setAccessible(boolean) a better way
  • #4388 - Add call protocol to script body and separate non-protocol metas.
  • #4383 - warn with array should behave like puts with array
  • #4382 - Improve stack depth
  • #4381 - Remove unsafe-mock from our build altogether.
  • #4379 - Fix bigdecimal infinity round
  • #4378 - Update jnr.
  • #4369 - break within a block throws LocalJumpError in JRuby but succeeds in MRI Ruby
  • #4366 - Optimize getDefinedMessage by deduping during initialization
  • #4364 - Add regression test for shell exit
  • #4363 - Yard does not work in JRuby =>9.1.3.0
  • #4362 - change status array of ints to an int
  • #4361 - Unexpected value for `$?.exitstatus` when process exited successfully
  • #4356 - trivial: restkwargs => kwargs in FIXME comment
  • #4352 - Fix deadlock when tearing down runtime during debugging
  • #4350 - File.directory? of a uri:classloader resources ending in "/" incorrectly returns false
  • #4349 - -Xnative.enabled=false fails to load windows in kernel
  • #4348 - File.open with open mode a+ do not work
  • #4344 - Can't call a `Proc` which has a required keyword argument and a positional argument
  • #4342 - zsuper does not cope with n repeated _ well
  • #4341 - 9.1.6.0: block arguments *_ and &_ at the same time fails with DynamicScope1 only supports scopes with 1 variables
  • #4340 - Extended class clones and duplicates become unmarshable
  • #4339 - Class clones and duplicates raise StackOverflowError when listing their singleton class ancestors
  • #4336 - Fix unexpected java.lang.ArithmeticException when converting Rational to BigDecimal
  • #4332 - JRuby 9.1.6.0 tries to access O_TMPFILE under Windows
  • #4331 - Skip less specs
  • #4329 - Add missing PortUnreachable catch. Fixes #4104
  • #4324 - Crashing on attempt to convert Rational into BigDecimal
  • #4323 - Usage of `#[]=` assignment in method argument broken
  • #4321 - Fix marshaling Hash with default_proc set to nil
  • #4319 - JRuby can not interpret keyword argument when placed after positional argument in block
  • #4317 - range endpoints with () will generate an NPE
  • #4316 - --disable: should accept gem as alias for gems.
  • #4315 - 2.3 Syntax Failure: %s does not work in alias or undef
  • #4314 - 2.3 syntax failure: 'a b: 1' does not parse as method with kwarg
  • #4310 - Disable notifying travis-rubies of passing [skip ci]
  • #4308 - New syntax errors in 2.3.1/2.3.2 tests.
  • #4302 - Dumping Hash with default_proc that was reset
  • #4299 - Fixed Math.lgamma with input -0.0
  • #4286 - Interrupt ignores exception message
  • #4285 - Catch LinkageError during DynamicScope generation.
  • #4284 - MRI tests that do not appear to exist for MRI
  • #4280 - README: Ruby version manager docs link
  • #4276 - make ttymode and ttymode_yield helpers private
  • #4275 - ttymode, ttymode_yield should be private
  • #4268 - upgrade jruby-openssl to 0.9.18
  • #4266 - JRuby unable to find methods unless jar is in boot classpath
  • #4253 - Respond_to? returns private methods
  • #4196 - Update Psych to eliminate deprecated usage
  • #4123 - Fix IO#syswrite. Fixes #3799
  • #4104 - Resolv::DNS..getresource produces different errors then MRI
  • #4103 - JRuby fails in building from source when using openjdk-7-jdk trusty package
  • #3799 - Unix sockets raise exception on long writes
  • #3729 - Occasional ArrayIndexOutOfBoundsException from a line of Ruby that isn't doing array lookups
  • #2761 - JRuby 9k: simple script ~80% as fast as jruby 1.7.19
  • #2485 - proc with extra args incorrectly binds wrong post args

New in JRuby 9.1.6.0 (Nov 11, 2016)

  • Stack overflow in unresolvedSuper logic from jitted code
  • Fix unnamed socket inspect
  • Method#owner returns wrong implementation module
  • Mutexes should use .lock instead of .lockInterruptibly
  • Identical Regexp are not equal to each other
  • Revert "Format initial string to specific precision, so rounding works."
  • jit failure: rack
  • Also perform uninitialized check on temp locals.
  • nil initialization missing from optionally-set argument
  • Prepend must set method's "defined class" to the new bottom.
  • UNIXSocket#peeraddr was fixed some time ago
  • Garbage data in UNIXSocket path
  • Rescue optimization over-optimizes rescue body with $!
  • Fix clone hierarchy
  • Cannot iterate over a Range of Times
  • cloned singleton method exists but can't be overwritten
  • remove_method fails to remove singleton method on cloned object
  • Missing unit :second for Process.clock_gettime
  • Don't dup every element in Enumerator#drop (9K)
  • Fix the incorrect opscode mapping in f2i()
  • Broken PHASE='-Pjruby_complete_jar_extended -Dinvoker.skip=true'
  • BasicSocket improvements
  • UNIX sockets improvements
  • Handle EADDRINUSE message in IOException.
  • Enumerable#drop calls #dup on every element
  • JRuby 9.1.*.* on multiple platforms incorrectly handles block in `[]` method calls
  • UDP socket improvements
  • do not eagerly set eval-type in a thread-local
  • [Truffle] Use the new getgroups POSIX call.
  • operator behavior is different from MRI
  • Flush destination IO in IO.copy_stream
  • Kernel#sleep swallows InterruptedException
  • Implement Socket.socketpair to return Socket instances
  • Get rid of code dup in ServerSocket#bind
  • IO.copy_stream with Zlib::GZipWriter broken in 9.1.3.0 and up
  • Replace BigDecimal#!= by BigDecimal#nonzero?.
  • Apply patch from rubygems/rubygems#1685
  • prime? openssl error in 9.1.5.0
  • TCPServer#accept_nonblock improvement
  • Implement TCPServer#sysaccept
  • `require_relative` does not work inside a jar on Windows
  • Fix Java::JavaLangReflect::GenericSignatureFormatError when reflecting reified annotation values
  • JRuby accepts wrong method arguments when mixing positional with defaults and keywords
  • Dir.tmpdir returns working directory
  • Changing type of global variables gives TypeError
  • Fix issues with File.dirname
  • NoMethodError: undefined method `dedent_string' when lexing squigly heredocs in Ripper
  • Remove premade field-based DynamicScope and generate instead.
  • JRuby HEAD gets NPE when running `bundle install`
  • Bring BigMath::log behaviour closer to MRI
  • squiggly heredoc with single quotes fails to run
  • Add paths to *DynamicScope that don't check nulls, offsets.
  • Create a different hierarchy of DynamicScope for use in startup interp + remove null checks in the existing hierarchy since they are redundant
  • Logger: Errno::EINVAL: Invalid argument with JRuby 9.x in Solaris
  • Format initial string to specific precision, so rounding works.
  • BigMath.log(Rational,...) produces garbage digits within the requested precision
  • Fix for #4147
  • Fix for #3229
  • Java::JavaLangInvoke::WrongMethodTypeException when using invokedynamic
  • Logger: log rotation inter-process lock failed. on Windows with JRuby 9.x
  • IRB: arrow keys to move along cmd line and up/down in history not working on Windows
  • Inspect directly into a RubyString and avoid StringBuilder/char[].
  • Implement SignalException class
  • Full Socket::Option support
  • Show that ArgumentError from encoding error is recursive
  • Setting SO_LINGER completely inconsistent
  • gem list don't show some gems as default
  • SignalException#signo (and signm) not defined.
  • Collect all DNS sections by calling to each_resource instead of each_answer
  • IO#seek and tell do not properly handle offsets larger than int32
  • BasicSocket#getsockopt does not work with all possible Symbol combinations
  • File.flock does not work on Solaris for 9k
  • JRuby 9.0.1.0 vs. MRI 2.2.2 define_method inconsistency
  • Updated doc for dumpThreads method in Runtime
  • System.gc() is async, do not attempt to invoke it and retry sysopen
  • Build a new pass that ensures that ruby locals / IR tmps are initialized
  • sequester tmp directories

New in JRuby 9.1.5.0 (Sep 7, 2016)

  • Deprecate framed invoke
  • Use a CallSite for invocation of attr writers. Fixes #4134.
  • Unconditionally enable maven enforcer in release profile.
  • avoid JCE CNFE warning on non Oracle/OpenJDK
  • 9.1.3.0 and 9.1.4.0 have a -SNAPSHOT dependency
  • Rails new fails with 9.1.3.0 and "--dev" option
  • java.lang.NullPointerException: unwrapJavaObject at org/jruby/javasupport/JavaUtil.java:287

New in JRuby 9.1.4.0 (Sep 6, 2016)

  • Major features of JRuby 9000:
  • Ruby 2.x compatibility
  • A new optimizing runtime based on a traditional compiler design
  • New POSIX-friendly IO and Process
  • Fully ported encoding/transcoding logic from MRI
  • If you do find issues then report them on using our issue tracker at http://bugs.jruby.org. We also encourage users to join our IRC channel (#jruby on Freenode) and mailing lists. You may also follow @jruby on Twitter for updates.
  • This release addresses a serious regression in 9.1.3.0 where some 2-element arrays would return the wrong value. All users are strongly recommended to upgrade to 9.1.4.0.
  • 2 issues fixed for 9.1.4.0
  • Github Issues resolved for 9.1.4.0:
  • #4124 - Rails Routing Contraints with 9.1.3.0
  • #4122 - The child-process gem fails to spawn processes on Windows

New in JRuby 9.1.2.0 (May 29, 2016)

  • Windows symlink
  • Use "filesystem" encoding for PATH as in MRI. Fixes #3907.
  • RubyUDPSocket ArrayIndexOutOfBounds with v9.1.[01].0.
  • ArgumentError: string contains null byte
  • NotImplementedError: symlink unsupported or native support failed to load

New in JRuby 9.1.1.0 (May 20, 2016)

  • Ruby 2.x compatibility
  • A new optimizing runtime based on a traditional compiler design
  • New POSIX-friendly IO and Process
  • Fully ported encoding/transcoding logic from MRI

New in JRuby 9.1.0.0 (May 5, 2016)

  • Github Issues resolved:
  • Compilation fails with openjdk8 u92
  • Fixnum#bit_length - uses bit inversion when the value is negative
  • Fix a bug where NameError#receiver raises an ArgumentError after #to_s is called
  • Fixes Fixnum#bitLength when the value is negative.
  • Adds method #bitLength to Bignum
  • Fixnum#bit_length always returns 64 for negative number
  • Bignum#bit_length is missing
  • Error when rspec loads files using Refinements
  • `n ** m` is slow
  • Time.parse should coerce argument into a String
  • bind (abstract) methods when implementing interface
  • moving Ruby Java extensions into native
  • Refinements causes "ArgumentError: tried to create Proc object without a block"
  • Add option to enable ir writing on-the-fly
  • [ji] java.util.Collection should not be to_ary convertible
  • [ji] java.lang.Throwable should not provide to_str
  • Recent CI snapshots give warning on load of openssl
  • improved method arities on become_java!
  • trycatch blocks are being defined inefficiently in the JIT
  • cleanup NativeException
  • Syntax error with &.< in combination with other operators
  • File.open ignores :universal_newline options on Windows
  • Fix strftime %Z to act like CRuby
  • Some cases of assignment in conditional do not warn as in MRI
  • [ji] package (internal) refactoring
  • Removing 'new' class method from interfaces #3275
  • load path from the command line -I should use the same splitting as for GEM_PATH
  • Performance issue when connected to network
  • Consider dropping -Xss from launcher
  • compiled .rb does not handle rest kwargs right
  • ActiveSupport EventedFileUpdateChecker wrong number of arguments in JRuby
  • lazy secure random
  • thread-context refactor backtrace retrieval
  • RubyGems after 2.4.8 is broken on JRuby
  • Passing in command line arguments containing " n" causes jruby to abort with error "%n in writable segment detected"
  • JRuby 9.0.5.0: uninitialized variables assigned to self as default method argument cause org.jruby.ir.operands.UndefinedValue
  • Improving error message when flock is not available
  • Regression in overcommit's tests in JRuby 9000
  • set ClassloaderDelegate(false) as default for OSGiIsolatedScriptingContainer + IsolatedScriptingContainer
  • Parser seems to choke on Japanese-encoded text
  • can not install ruby-maven on jruby from jruby-dist archives
  • Autoload of module broken for Ruby subclass of Java class
  • Object#try(:squeeze!) raises an array index out of bounds exception
  • NKF still uses Charset transcoding rather than jcodings
  • File#pos fails for files greater than java.lang.Integer::MAX_VALUE on 64-bit systems
  • Resolv fails under load with SocketError: bind: name or service not known
  • Implement Process::setproctitle
  • `Exception#cause` is difference behavior with CRuby 2.3.0
  • `system` method is different behavior from JRuby 1.7.x and CRuby 2.3.x
  • Lock is not released at Kernel.require when Gem.try_activate throws RuntimeException
  • Compile of method call with block return results is "is not compiled Ruby; use java_import to load normal classes"
  • Hash#compare_by_identity does not work correctly when key is destructively changed
  • prime? very slow
  • Encoding::ConverterNotFoundError when using Encoding.default_internal
  • Dir::Tmpname.make_tmpname inconsistent with Ruby 2.2+
  • AWS SDK Uninitialized Constant Error
  • Somehow super stopped working in jruby 9.0.5.0
  • superclass production in parser became less restrictive in 2.3
  • Class cast in parser
  • DEAD: marking instr dead!!
  • Failures in JRuby 9.0.5.0 on Sinatra build
  • JRuby 1.7.24 - REXML bad encoding issue
  • Override of Gem.path_separator cause gem update --system to fail
  • Command line flag '-p' doesn't reflect changes made to $_
  • Process#spawn error when redirecting error to stdout (jruby 9.0.4.0)
  • .0.5.0 numerical computation regression
  • JRUBY_OPTS gives misleading warning
  • blacklist ppc64 Linux from windows installer packaging
  • Time.at loses precision when using BigDecimal as argument
  • LoadError with 'compiled' ruby files with JRuby9000 (using rescue)
  • [2.3] Parser does not recognize lonely operator after do...end
  • [2.3] Missing

New in JRuby 9.0.5.0 (Jan 27, 2016)

  • Notable updates since 9.0.4.0:
  • Fixed leaks in IO.select and IO.copy_stream.
  • Implemented DATA support lost in 9k.
  • Fixed regression breaking empty-body define_method methods.
  • Windows stat crashing on 32 bit JVMs
  • 53 issues fixed for 9.0.5.0
  • Truffle:
  • JRuby 9000 includes an preliminary version of support for the Truffle language implementation framework and Graal JIT compiler from Oracle Labs. In future releases, Truffle will provide an extremely high performance and compatible backend for JRuby. The Truffle backend supports almost all Ruby language features and the majority of the core library, and is able to run simple gems and web frameworks such as Sinatra. It has no support for RubyGems, Rails or any database drivers, and does not work on Windows. However we are now interested in people submitting issues for small gems with minimal dependencies who see issues running on JRuby+Truffle
  • Graal has been integrated into Java 9 early access builds, and can be used today as part of the GraalVM, which is currently the recommended way to run JRuby+Truffle.
  • More information on Truffle and Graal can be found in the JRuby Wiki.
  • Github Issues resolved for 9.0.5.0:
  • #3609 - Incompatible method lookup under Kernel.load(file,true), aka wrap, on 9.x
  • #3602 - Fix cache-constructed-proxies
  • #3599 - jrubyc won't compile a file with method in outer scope (NoMethodError: undefined method `new_method' for nil:NilClass)
  • #3597 - Fix SizedQueue#num_waiting regression
  • #3591 - Unhandled Java exception: java.lang.ArrayIndexOutOfBoundsException: -3
  • #3590 - IO.copy_stream leaves opened files in ObjectSpace
  • #3588 - Leak in select for a UNIXSocket (at least)
  • #3586 - org.jruby.runtime.load.ClassExtensionLibrary.tryFind fails on certain classnames
  • #3581 - Cache proxies of newly constructed Java objects
  • #3579 - JRuby doesn't support DATA and __END__
  • #3577 - Block call IR optimization failures by 0d35995e1704bb716a9b54064208cf82ace2f150
  • #3576 - ConstructorInvoker isn't storing the proxy in the ObjectProxyCache
  • #3574 - autoload + const_defined? inconsistent with Ruby 2.0+
  • #3573 - MRI 2.2.2 / JRuby 9.0.4.0 difference given explicit `self` receiver for private method call.
  • #3564 - Rational suffix doesn't work with 0
  • #3563 - jdk9 produces warning on launcher
  • #3558 - case doesn't match empty array
  • #3542 - StopIteration does not propagate a result
  • #3540 - Fix Enumerable#{min_by, max_by} with nil
  • #3539 - Prevent to make subclass of Class
  • #3538 - Regexp match raises java.lang.ArrayIndexOutOfBoundsException in numbered backreference
  • #3537 - Fix Array#collect! that returns a sized enumerator as Array#map!
  • #3530 - Calling IO.console twice raises NoMethodError for `#open?`
  • #3527 - BigDecimal.new("5-6").to_i returns 0 on 9k where 1.7 and MRI returns 5
  • #3520 - Having Problems With Celluloid::IO / Nonblocking IO
  • #3494 - Proper support for UNIXSocket.for_fd
  • #3493 - Wrong name mangling. V8Utils => v8utils instead of v8.utils
  • #3492 - UNIXSocket#recv_io, UNIXSocket#send_io implementation using JNR
  • #3488 - forcing a nil (no) backtrace with Java APIs
  • #3483 - define_method with empty body throws RuntimeError in interpreter
  • #3478 - Print warning when JRuby.objectspace is enabled
  • #3472 - Hash keys should only be deduplicated for direct literal forms
  • #3453 - AOT compile of method with conditional return results in "is not compiled Ruby; use java_import to load normal classes"
  • #3452 - AOT compile of empty module results in NullPointerException
  • #3437 - Fix for issue 3402: String#encode with :replace option does not return correct value
  • #3433 - Getting back different values between Time#to_r and Time#to_i
  • #3412 - [Truffle] make j+tr part of the distribution
  • #3411 - Convert chinese encoding GB18030 to UTF-8 doesn't work
  • #3405 - Hash has bug to set encoding into key string wrongly when the key string is used once with different encoding
  • #3402 - String.encode :replace option does not work when encoding to UTF8
  • #3331 - Fix 3303 refactor zoneHelper into getRubyTimeZoneName
  • #3328 - remove support for aliasing Java indexed getters as Ruby readers
  • #3262 - jruby 9.0.0.0 Java::JavaLang::Character.name
  • #3209 - Correct a format string in Signal#trap.
  • #3208 - Trapping reserved signals doesn't print a meaningful message
  • #3193 - Java::JavaLang::StackOverflowError running spec which works on 2.2.1
  • #3121 - jruby 9.0.0.0.rc1 performance regressions
  • #3120 - Add some more tests for bignum pow
  • #3119 - Fix date.rewrite_frags
  • #2149 - Failing DateTime.strptime for weird dates near epoch
  • #2142 - Struct#inspect does not produce the same output as MRI 2.2
  • #940 - Implement UNIXServer and UNIXSocket.for_fd
  • #455 - RubyUDPSocket swallows exceptions

New in JRuby 9.0.4.0 (Nov 13, 2015)

  • Resolved various issues with stat() on Windows
  • Fixed couple of encoding/transcoding issues
  • Source with __FILE__ in it will now JIT
  • 11 issues fixed for 9.0.4.0:
  • 3457 - stat.st_gid is unsupported on windows
  • 3449 - jirb fails to start on Windows
  • 3448 - File.stat("someunavailable").mtime returns odd result
  • 3444 - Fix TCPServer#accept NPE log
  • 3442 - String#crypt crashes when a receiver is shared String
  • 3425 - String#tr different behavior as compared to MRI Ruby
  • 3410 - Cannot install jRuby 9.0.3.0
  • 3409 - NotImplementedError: flock unsupported or native support failed to load
  • 3408 - IRB fails to start with JRuby9.0.3.0 on Windows 10.
  • 3197 - require_relative fails for relative paths within jars on Windows
  • 2381 - IO#rewind ... doesn't. (when backed by a ByteArrayInputStream).

New in JRuby 9.0.3.0 (Oct 21, 2015)

  • JRuby 9000 is the newest major version of JRuby, representing years of effort and large-scale reboots of several JRuby subsystems. It is expected to be compatible with Ruby 2.2.x and stay in sync with C Ruby. JRuby 9.0.3.0 is our second of many point releases
  • Notable updates since 9.0.1.0:
  • Pattern ‘foo rescue nil’ now can, at times, run 48x faster
  • Blocks can independently JIT now improving perf in some scenarios
  • define_method with non-capturing body is now 2+x faster (~same speed as def)
  • stat() on windows now supports long paths and UNC paths
  • Handful of issues fixed makes Rails master run (sans AR-JDBC work outstanding)
  • 31 issues fixed for 9.0.3.0
  • Github Issues resolved for 9.0.3.0:
  • #3397 - ArrayIndexOutOfBoundsException when utf8 string matched against regexp with with word boundary \b
  • #3399 - Can't seek when file accessed using classpath: OR uri:classloader: schemes
  • #3394 - JRuby thread stuck on IntHashMap.rehash
  • #3380 - Bad value for $$
  • #3378 - #to_ary behavior does not conform to MRI Ruby (1.7.22)
  • #3372 - FileUtils#remove_tailing_slash is a poor method name
  • #3371 - splash params lose a nesting level *only* in #_to_proc
  • #3368 - Jitted blocks do not scope evals properly
  • #3365 - test/mri/psych//test_yaml.rb fails with enable system assertions
  • #3364 - Running Rails test with Jruby 9000
  • #3362 - bar rescue nil should not fail if StandardError is removed
  • #3356 - Inconsistence when modifying return object in ensure
  • #3348 - CSV parsing performance is poor
  • #3340 - JRuby NoMethodError: undefined method `open?' for #
  • #3338 - JRuby 9.0.1.0 #to_ary should return Array
  • #3337 - support (seekable) ByteArrayInputStream#to_io.rewind
  • #3333 - handle non-public inner class retrieval
  • #3330 - Fix java_implements for multiple interfaces
  • #3327 - Issue #3324
  • #3324 - _id2ref should raise RangeError rather than return nil for no object found
  • #3319 - find-bugs 2
  • #3317 - find-bugs 1
  • #3300 - extension class does not get loaded
  • #3292 - UTF-8 encoding on MS-Windows
  • #3282 - UDPSocket Error inconsistent with MRI
  • #3279 - non-intuitive overloaded varargs matching
  • #3270 - Kernel#require cannot find compiled ruby classes in jruby 9.0.0.0
  • #3267 - Encoding issue in jruby 9.0.0.0
  • #3257 - Initial $LOAD_PATH depends on JRUBY_HOME in jruby-complete-9.0.0.0
  • #3215 - bin/jruby is not updated when bin/jruby.bash is
  • #3137 - Hash#select! inconsistency with MRI when yielding only one argument

New in JRuby 9.0.1.0 (Sep 22, 2015)

  • JRuby 9000 is the newest major version of JRuby, representing years of effort and large-scale reboots of several JRuby subsystems. It is expected to be compatible with Ruby 2.2.x and stay in sync with C Ruby. JRuby 9.0.1.0 is our first of many point releases
  • Major features of JRuby 9000:
  • Ruby 2.2 compatibility
  • A new optimizing runtime based on a traditional compiler design
  • New POSIX-friendly IO and Process
  • Fully ported encoding/transcoding logic from MRI
  • Other improvements:
  • Reduced memory usage since 9.0.0.0 by 13%
  • Improved support for refinements; 70% of CRuby tests passing
  • jruby-openssl updated to version 0.9.11
  • psych updated to version 2.0.15
  • 44 issues fixed for 9.0.1.0

New in JRuby 9.0.0.0 (Jul 23, 2015)

  • Notable updates:
  • Two reverts on classloading to restore behavior to be like JRuby 1.7.x
  • Non-lambda return passing through a lambda could return improperly
  • Fixed two visibility issues on methods (#3123, #3135)
  • 39 issues fixed for 9.0.0.0 (note: some issues in list predate rc2 release)
  • Truffle:
  • JRuby 9000 includes an preliminary version of support for the Truffle language implementation framework and Graal VM from Oracle Labs. In future releases, Truffle will provide an extremely high performance and compatible backend for JRuby. The Truffle backend supports almost all Ruby language features and the majority of the core library, and is able to run simple gems and web frameworks such as Sinatra. It has no support for RubyGems, Rails or any database drivers, does not work on Windows, and is not ready to be tested with applications at this stage. More information on Truffle and Graal can be found in the JRuby Wiki.
  • Issues resolved:
  • timeout method not calling Timeout::timeout
  • Since JRuby-9.0.0.0 changes to classloaders are failing ruby-processing
  • http.rb gem specs fail on JRuby 9.0.0.0.pre2 and greater
  • Issue requiring 'yaml' on SwingWorker on jruby 9.0.0.0.rc2
  • each's return takes precendence over inner block's return with a lambda
  • Gson gem fails to parse JSON on jruby9.0.0.0.rc1
  • jruby-9.0.0.0.rc2/lib/ruby/maven-home/bin/mvn not executable
  • Included Timeout crashes when module method version of timeout used
  • load current directory file
  • 9.0.0.0.rc2 popen3 doesn't work on Windows
  • private method error in jruby-9.0.0.0.rc1
  • Unable to load Sybase driver in rc1, works in pre2
  • Unable to java_import a class on jruby-9.0.0.0.rc1
  • Windows bin/*.bat files missing in 9.0.0.0.rc1
  • jruby: warning: unknown property jruby.export
  • In windows ScriptingContainerTest fails
  • not implemented error Raspberry pi 2
  • IO.copy_stream doesn't rewind the destination
  • JVM6 JIT caches duplicate values multiple times per compile unit
  • Hash#inspect differs from MRI Ruby 2.2.1; This problem occurs if Hash has double-quoted UTF8 symbol key.
  • JRuby automatically reaps child pids
  • 9.0.0.0-pre1: NoSuchMethodError in pg_jruby gem
  • jrubyc command doesn't work on 9.0.0.0-pre1
  • So Rails Rake Tasks Don't work? Preview 1 - 9.0.0.0
  • Long generated filenames in Truffle code prevent compilation on some systems
  • Keyword arguments arity issue
  • truffle modular
  • Removed unused var
  • Remove JumpException, Next, Redo, etc. exceptions from old runtime
  • allow for negative arity when calling curried proc
  • [Truffle] New implementation of non-small hashes
  • change name of files which pass rspec regression test on master
  • security model compilation fix
  • Fix #2137 Socket.getifaddrs returns incorrect interface list...
  • Fix GH-1960 rspec file
  • Fix GH-1726 on master
  • Make AOT work on 9k
  • Block variable shadowing and local_variables not matching up right
  • [2.1] Comparable#== needs a recursion guard for missing

New in JRuby 9.0.0.0 RC2 (Jul 14, 2015)

  • Ruby 2.2 compatibility
  • A new optimizing runtime based on a traditional compiler design
  • New POSIX-friendly IO and Process
  • Fully ported encoding/transcoding logic from MRI
  • Fixed cases where AOT classes were not loading
  • Various performance fixes
  • Reduced memory size
  • More parser fixes
  • Fixed rc1 eval with binding regression (aka setValueDepthZero AIOOB)
  • Issues resolved:
  • Precompiled .class can't reflect new filename
  • Strange error in implicit return of match variable
  • Bundle install fails with jruby-head with a Java::JavaLang::ArrayIndexOutOfBoundsException on travis
  • Fix for issue 3035 on master : change the hash code calculation method of SymbolTable entry.
  • require_relative through symlinks behaves differently in jruby than in MRI ruby
  • Create friendlier API for swapping current thread context classloader
  • ManyVarsDynamicScope.java:145:in `setValueDepthZero': java.lang.ArrayIndexOutOfBoundsException: 0
  • JavaLang::NullPointerException in RubySymbol.javaStringHashCode()
  • proc {} in fcall hash with fcall receiving a do block does not parse
  • [Truffle] Requiring paths with . for current directory doesn't work
  • Jruby 9.x jar-dependencies thwarts `gem install` prereq. to gemspec
  • popen3 doesn't work on Windows
  • RC1 fails on require 'psych' if .gemspec with require_relative in current directory
  • JRuby 1.7.20.1 Socket.tcp, Addrinfo.tcp, etc. mistake port for protocol
  • Add incrementor back PopenExecutor to prevent infinite loop.
  • Empty intern array (%i[]) does not work
  • java.lang.IncompatibleClassChangeError in 9.0.0.0 rc1
  • Cannot delete file after requiring it on Windows in 9.0.0.0.rc1
  • Process.spawn using huge amounts of memory for simple script
  • Requiring a bare file from current directory works unexpectedly
  • Shellescaped utf-8 string misbehaving in backticks
  • Fix getRealMethod for WrapperMethod which wraps a WrapperMethod
  • JRuby 9.0.0.0.pre2 raises "NameError: uninitialized class variable @@PREFIX_MAP in Object", doesn't occur in Ruby 2.2.x
  • Parameters on non-Ruby method with special arity will NPE
  • SyntaxError: test.rb:3: syntax error, unexpected kDO_BLOCK
  • Process.spawn with redirect causes ConcurrencyError
  • 'あ'.to_sym == :'あ' is false
  • LoadError with 'compiled' ruby files with JRuby9000
  • Syntax Error on nested hash that parses with MRI 2.0 but not with JRuby 9000
  • Add enforcer plugin to ensure we have only released dependencies on release
  • "each_with_object({}, &lambda_logic)" raise ArgumentError
  • jgem jruby-9000 not recognised as ~> 2.0.0
  • Non-ascii method names getting kicked out
  • Socket.gethostname ignores encoding settings
  • NameError: uninitialized constant JSON::Ext::Parser using jruby-complete
  • Dist has gotten too large due to new maven features
  • Ripper is still 2.0 grammar and has not been updated for 2.2 changes
  • Parser bug

New in JRuby 1.7.21 (Jul 14, 2015)

  • Java integration performance enhancements
  • paths representing files within jars work better with core filesystem APIs
  • DateTime compat fixes
  • BigDecimal compact fixes
  • Issues solved:
  • "gem install" with jruby-complete results in "missing class name (`org.jruby.util.Classpath')"
  • isOpen()/close() is racy. Simply close and ignore EBADF.
  • When CWD is uri:classloader:/ regular absolute path do not work
  • Zlib::GzipReader.readbyte not implemented
  • Update rubygems to 2.4.8 to mitigate CVE-2015-4020
  • Hash behaves differently when used with FFI::Pointer
  • Certain require do not load extension Service class
  • Creating a directory via uri-like path 'uri:classloader://new_dir' acts wrongly
  • Packing a runnable jar including rake + rspec can not execute '-S rake spec'
  • Jruby-complete can run -S rake spec:jruby or any other rspec via rake
  • File.expand_path inside a jar can fail
  • Some File methods do not treat uri like paths consistently
  • Various issues launching script from runnable jar
  • Respond_to_missing? does not convert method to symbol
  • DateTime.iso8601 fails with an error if a second fraction is present
  • Activesupport 4.2.1 breaks timeout.rb on jruby 1.7.19 and 1.7.20
  • Dir['{}'] crashes with java.lang.ArrayIndexOutOfBoundsException: 0
  • Hash#take_while wrong behavior in 1.7.19
  • DateTime.iso8601 fails with an error (incompatibility)
  • Class not found exception on ppc64le
  • Some data can cause String#encode to hang
  • Incorrect error message when BigDecimal fails to coerce during comparison
  • BigDecimal does not coerce properly during division
  • Redirecting $stdout to an object fails with: Errno::EBADF: Bad file descriptor - Bad file descriptor
  • Uintptr_t is wrong size on 64-bit JRuby
  • Jruby 1.7.10 raises unexpected arity error (1 for 0) when creating a java.math.BigDecimal
  • Error when raising to a BigDecimal
  • Pointer on Windows JRE 64bit: Fix Memory access offset=0 size=8 is out of bounds
  • Backticks don't give exception for nonexistant command
  • Forcing jruby-complete to execute a command.
  • Inconsistency between MRI and JRuby when private methods are called and method_missing is present

New in JRuby 9.0.0.0 RC1 (Jun 23, 2015)

  • Updates since pre2:
  • Updated to Rubygems 2.4.8 addressing CVE-2015-1855
  • Several parser issues (also fixed in ripper)
  • Optimized multiple assignment
  • Several added smaller missing methods for better 2.2 compatibility
  • A couple of bugs involving nested exceptions/ensures and $!
  • 46 issues fixed for 9.0.0.0.rc1
  • Truffle:
  • JRuby 9000 includes an preliminary version of support for the Truffle language implementation framework and Graal VM from Oracle Labs. In future releases, Truffle will provide an extremely high performance and compatible backend for JRuby. The Truffle backend supports almost all Ruby language features and the majority of the core library, and is able to run simple gems and web frameworks such as Sinatra. It has no support for RubyGems, Rails or any database drivers, does not work on Windows, and is not ready to be tested with applications at this stage.
  • Github Issues resolved:
  • Don't call modify() on RubyStrings so eagerly when freezing them
  • Small string values backed by HUGE non-shared ByteList leading to large memory usage under 9k
  • OutOfMemoryError in 9k on code with very large methods
  • 9k has different scoping behavior than MRI
  • LocalJumpError: yield called out of block in JRuby 9.0.0.0.pre2
  • Module#included is private when called with super
  • splats with non-array like values
  • add recursion guard in Comparable.
  • Don't warn on private attribute accessors to match CRuby
  • Many failures in Sequel tests on [RuntimeError] exception expected, not Class: Message:
  • certain require do not load extension Service class
  • Socket.pair is not implemented
  • Net::HTTP can't ignore http.proxyHost of JVM System Property
  • Regression: Sequel's literals contain additional quotation marks under JRuby 9k head but not under pre2
  • Requiring Sequel triggers false warnings `already initialized constant`
  • NotImplementedError: waitpid unsupported or native support failed to load on OS X 10.9.5 / OpenJDK 8 / rbenv
  • JRuby 9k-pre2 throws IOError when reading from $stdin
  • JRuby 9.0.0.0.pre2 starts hanging while reading from a socket
  • Issue #2924
  • Issue in org.jruby.util.TypeConverter CheckType
  • Proc from Method breaks encoded parameter list
  • Add another layer of try/finally around rescue/ensure to reset $!.
  • Method#parameters doesn't annotate required parameters correctly
  • Multiple assignment has too much overhead
  • $! does not get cleared under certain circumstances
  • Different Regexp behavior from MRI
  • require 'ripper' yields const already init warnings
  • Fix for issue 2896 on master : Symbol#inspect with utf8 encode string
  • jrubyc failing - TypeError: failed to coerce org.objectweb.asm.ClassWriter to org.jruby.org.objectweb.asm.ClassVisitor
  • Implementation of initialize_copy for BigDecimal (fix #2868)
  • Enabling tty for powerpc64
  • NameError different behavior
  • BigDecimal can not be copied
  • Fannkuch-redux is less than half as fast in 9k as in 1.7
  • Make Dir raise Errno::EACCES
  • Allow File.open and File.new with 4 arguments
  • Syntax error with file that has OK syntax with MRI 2.2
  • Socket.getaddrinfo reverse_lookup
  • Fix power of 0 and 1 issues in Rational
  • Fix File.read with UTF-16LE
  • Add support for named captures in StringScanner (fixes #1067)
  • RubyArray#flatten! uses `respond_to?` unlike the original [lotus]
  • Truffle: Understand and reduce impact of Truffle on the distribution size
  • Demonstrate pedantic option
  • -X... and -X? options to search for properties.
  • Another unexpected kDO_BLOCK error in parser

New in JRuby 1.7.20 (May 6, 2015)

  • Highlights:
  • 62 issues fixed for 1.7.20
  • Rubygems updated to 2.4.6
  • jruby-openssl updated to 0.9.7
  • Java integration performance enhancements
  • ppc64le & ppc64 native support added
  • obligatory M17n fixes :)
  • Issues resolved:
  • Removing event hooks can AIOOB
  • Enumerable#find_index gives wrong result in case with types cast
  • Mimic MRI's openssl when jopenssl require fails.
  • Enabling tty for powerpc64 (1_7)
  • java_send will not invoke a method taking a CharSequence
  • org.jruby.javasupport.JavaMethod invocation does not wrap returned JavaObject
  • UnboundMethod#parameters for an assignment method wrongly returns blank array
  • Add PowerPC64 little endian support in FFI on 1_7
  • looks like org.jruby:jruby artifacts contains jruby-core
  • FreeBSD TestPTY#test_commandline fails
  • Jruby to use upcoming jnr-ffi release to have ppc64le TypeAliases
  • ThreadKill not handled by ThreadFiber
  • "warning: Unrecognized time zone: x" emitted to stderr
  • UNIX Sockets raising Errno::ECONNRESET or EOFError ( 9.0.0.0 && 1.7.19 )
  • some array factories do not work
  • RubyGems of JRuby1.7.19 is v2.4.5 (should be v2.1.9)
  • Regression in loading Java classes with upper case package names
  • Compiling app with embedded JRuby has RELEASE_6 warning
  • implements strict base64 encoding
  • Java integration should call toJava or to_int for array index and value
  • BigDecimal losses precision in JRuby 1.7.19
  • jruby core build fails on IBM ppc64
  • Enumerator containing range does not pass a block variable
  • embed internal fixes
  • java support cleanup and improvements
  • `des-ede3` is unusable in JRuby
  • RegexpError: invalid multibyte character for method gsub
  • File.stat gives incorrect mode value on PPC platforms
  • Exception java.lang.Error thrown while initializing thread_safe ConcurrentHashMapV8
  • Issue with object form constructor by reflection.
  • JMX MBean name collides when deploying multiple JRuby web apps to a single application server
  • Fix uninitialized usage of File::Stat on jruby-1_7
  • Fix for issue 2524 on jruby-1_7: [BigDecimal] Loss of precision with different execution order
  • Base64.strict_decode64 isn't strict
  • support for easy (Ruby) String to (Java) char conversion
  • Explicit require of autoloaded class triggers double load
  • upgrade to jruby-openssl 0.9.6
  • Rack tests broken
  • Error in File.stat
  • absolute paths without drive letter don't work in windows
  • JRuby subclass cannot call super with arguments if parent constructor is varargs
  • Redirecting $stdout to an object fails with: Errno::EBADF: Bad file descriptor - Bad file descriptor
  • system("...&&...") should work in windows
  • rubygems 2.4.5
  • RubyGems 2.4.5 Upgrade Triggers Bug in Java Extension Loading
  • Fix for issue 2182 on jruby-1_7 : Struct#inspect with utf8 encode string member
  • Infinite loop when using mutually-referential constants
  • unable to get value of object's fields in RubyMine debugger
  • Struct#inspect has ASCII encoding
  • Enum#valueOf thread safety issue
  • Add PowerPC64 little endian support in FFI
  • JRuby 1.7.11 (bundled with LogStash v. 1.4.1) fails on FreeBSD 10.0 with NotImplementedError: stat.st_dev unsupported or native support failed to load
  • Unsupported platform: unknown-linux (ppc64le)
  • Cannot require 'openssl' in a signed jruby jar as of jruby 1.7.3
  • Java class proxy creation deadlock
  • Literal `\あ` results in invalid multibyte char error
  • JRuby can Not load JFFI library under IBM Power 64 with PLinux platform
  • Calling .to_java(Java::byte[]) on a RubyArray doesn't convert to a multi-dimensional byte array, but fails with a TypeError exception
  • LocalJumpError raised on break from custom Enumerator enumeration
  • java_send on private subclass fails
  • jruby-openssl gem breaks PKCS5
  • java_send should be smart enough to unwrap the Ruby version of a Java class

New in JRuby 9.0.0.0-Pre2 (Apr 29, 2015)

  • Changes:
  • Startup time has improved but is a tiny bit slower than 1.7.x.
  • Memory usage has improved but still a ways to go.
  • Straight-line performance has improved since pre1
  • Windows support improved, but still needs further work and testing
  • Many keyword arguments problems fixed
  • 88 issues fixed for 9.0.0.0.pre2
  • Fixed issues:
  • Prepend breaks module "implementer" search
  • JRuby not using UTF-8 for source files
  • Psych dependency is installing non-JRuby version
  • Hash#each_pair should be a true alias of Hash#each
  • jrubyc blows with NPE
  • Bad nonlocal return with re-wrapped define_method block
  • Support respond_to_missing? in respondsTo() lookups
  • Autoload broken by path canonicalization
  • Returns nil instead of regex match group inside conditional
  • rindex() fails on strings read from binary files
  • Undefined group option during parse of mri/test_regexp.rb
  • IR improperly masks errors in defined-guarded conditional
  • unknown type of %string
  • Open3.popen3 treats string command differently than MRI
  • Open3.capture2e fails with "wrong exec option"
  • Encoding::Converter#primitive_convert has trailing null byte
  • JRuby doesn't define Process::Tms like MRI does
  • Make RUBY_ENGINE_VERSION as companion to RUBY_ENGINE
  • early return in each'd enumerator is jumping out of each and not method
  • how do I install with Jars? Re: "deprecated. use instead jars/installer" message
  • rb_cmpint difference from MRI
  • Micro bench is nearly 2x slower with JIT than interp
  • Fix for issue 2591 on master : double-quoted UTF8 hash key encoding
  • Truffle - Compile Error until when break in case statement
  • Truffle - Regex Parsing Error
  • Produce a warning on private attribute accessors
  • Fix Bignum's bitwise operations
  • Object.const_get behaves differently from other implementations
  • Mixed-mode execution exposes an unusual bug
  • $stdin.tty? reports wrong value on JRuby-9.0.0.0-pre1
  • error with bin/jruby -S gem install asd
  • Open3 fails with ArrayStoreException after ~50 executions
  • Unknown error in child-process gem when trying to open phantomjs browser in webdriver when running on jruby
  • Fix IO#write frozen string issue in textmode
  • double-quoted UTF8 hash key has the wrong encoding
  • Fixed the errors with RubySpec
  • simplecov triggers load error when running coverage on jruby-9.0.0.0.pre1
  • JavaSupport refactoring API (byte-code) incompatibility with extensions
  • Fixed arity issue with RubyMethod
  • Make filepaths with null byte fail
  • Error handling converting UTF-32 to UTF-8 is broken [9k] [lotus]
  • Different Encoding behavior from all other Rubies
  • Fix for issue 2182 on master : Struct#inspect with utf8 encode string member
  • Binding#receiver is not implemented [9k] [lotus]
  • Fix the bug with size with each_slice without block
  • Parallel value assignment broken in IR builder (multi-value literals, calls, attr-assign, etc.)
  • ClassCastException requiring minitest with JRuby 9000
  • Fix required arguments for File.chown
  • Exit iterator when `RubyHash#any?` short-circuits
  • Skip block-to-proc conversion for explicit block syntax when possible
  • Fix uninitialized usage of File::Stat
  • Mismatch on Enumerator#size result between JRuby and MRI
  • Dir.foreach does not allow encoding
  • JRuby+Truffle: Keyword Arguments - "illegal recursive call"
  • Fixed arity require in case of required keyword arguments
  • Fix for issue 2524 on master: [BigDecimal] Loss of precision with different execution order
  • undefined method `invoke_with_build_args' for nil:NilClass on Windows 7
  • [bigdecimal] Loss of precision with different execution order
  • Modified the make_wstr method so that it appends a null character.
  • Implement pack & unpacking ipv6 address in sockaddr
  • Require order appears to impact JRuby extensions [9k]
  • Keyword arguments incompatibility
  • Getting "BUG: $! and exception are not matching up" in RSpec in 9K
  • keyword arguments incompatibilities
  • Keyword method parameters cannot take a frozen hash
  • IO.popen cannot run 'date' on Windows 7
  • gem install failure on Windows
  • Open3 fails with varying signals on 9.0.0.0.pre1
  • Performance issue with invokedynamic + Rack + URI
  • Implemented support for keyword and keywordrest proc /lambda parameters
  • Minitest rails not working on 9000
  • Proc.parameters return an empty array
  • Implemented Enumerator#feed method
  • truffle artifacts are not on maven central and we have a release repo in jruby-parent.pom
  • Package Truffle stdlib files into tarball
  • IO#ready? returns incorrect results
  • NULL handling inconsistent with Ruby
  • Encoding.compatible? affected by call order
  • Fix for issue 1069 and 1390 on master: improve handling of non ascii character after backslash
  • Bundle fails with Java::JavaLang::StackOverflowError with git-hosted gems
  • Truffle: Kill all other threads when the main thread exits
  • StringLiteral consumers may not be CR-aware
  • Socket.getifaddrs returns incorrect interface list
  • Problem with super not passing params with IR
  • Method keyword arguments are destructive
  • AIOOBE in ThreadContext#postYield
  • Pre-compiled methods do not have AST available for re-compilation
  • Output unreliable from spawned processes

New in JRuby 1.7.19 (Jan 31, 2015)

  • Highlights:
  • 17 issues fixed for 1.7.19
  • Time.getlocal accepts fixnum as an argument (Rails 4.2 blocker)
  • A few encoding fixes
  • Socket.read(0) does not block (1.9)
  • Github Issues:
  • RegexpError: invalid multibyte character
  • No need to synchronise a newly created local RubyArray
  • ConcurrentModificationException from ThreadGroup.list
  • Time#getlocal should accept Fixnum as an argument
  • String#start_with? inconsistent with other Ruby implementations
  • NullPointerException when trying to assign UnboundMethod using define_method & to_proc
  • Encoding issue after v1.7.6
  • (MAINT) fix jnr-constants version in pom
  • (MAINT) Fix pom deps re: asm
  • JRuby fails to display Java splash at startup on OS X
  • encoded string
  • some error with RG with embedded JRuby
  • String#b improperly updates encoding of source string
  • ChannelDescriptor leak after close of ScriptingContainer
  • Remove unnecessary puts for GC::Profiler.total_time
  • casecmp on UTF-16LE encoded string produces ArrayIndexOutOfBoundsException
  • Socket.read(0) blocks caller (but not in MRI)

New in JRuby 9.0.0.0-Pre1 (Jan 21, 2015)

  • Ruby 2.2 compatibility, minus features listed below
  • A new optimizing runtime based on a traditional compiler design
  • New POSIX-friendly IO and Process
  • Fully ported encoding/transcoding logic from MRI

New in JRuby 1.7.18 (Dec 23, 2014)

  • Highlights:
  • 20 issues fixed
  • non-ASCII Symbols now have their proper encoding
  • fixed a couple of regressions from native crypt() landing
  • update stdlib to match MRI (C Ruby) patch level 551
  • Issues resolved:
  • Java::JavaLang::NullPointerException: org.jruby.RubyString.crypt(RubyString.java:2660)
  • File.realpath treats absolute "classpath:/" paths as relative paths
  • added String#b method
  • I/O calls do not invalidate `String#ascii_only?` cache
  • ArgumentError: "+HH:MM" or "-HH:MM" expected for utc_offset
  • ConstantCompilationTest.testContainerCompilation regression
  • Unable to use JRuby with google app engine due to use of sun.misc.Unsafe
  • Update JRuby 1.7.x to latest PL and default gems
  • unable to get value of object's fields in RubyMine debugger
  • Open3.capture3 still broken in JRuby 1.7.17
  • File.executable? raises an exception if the `file_path` is non-existent and native disabled
  • NullPointerException with JRuby 1.7.17 running rspec & simplecov in debug mode
  • Regexp.union [] gives wrong result in ruby 1.8 mode
  • String#crypt fails on Windows
  • Dir[] fails if path does not exist instead of returning nil
  • File.basename can return a string with a different encoding than the input
  • Symbols need to support UTF-8 names
  • Stat of an empty resource does not generate proper Exception.
  • Symlinks in load path should remain unexpanded in LOADED_FEATURES
  • jffi*.tmp files remain in %TMP% folder

New in JRuby 1.7.17 (Dec 10, 2014)

  • Highlights:
  • 56 issues fixed for 1.7.17
  • native crypt()
  • Fixed bad encoding of string interpolated within backticks
  • popen2+ now works properly with env hash
  • improvements to align MRI and JRuby FFI
  • updated stdlib to 1.9.3p392 (+ rexml security fixes)
  • Github Issues resolved:
  • 2271 - refactor FileResource.inputStream to be easier to use
  • 2264 - Illegal hex characters in escape (%) pattern
  • 2258 - Encoding issue with backticks
  • 2249 - Improve error message when adding file to X509Store fails
  • 2231 - Was the --indy cli option removed? (1.7.16.1)
  • 2223 - test Kernel.system on windows
  • 2219 - JRuby Complete 1.7.16.1 does not move asm to other package
  • 2173 - on jboss wildfly when starting a rack application: stat unsupported or native support failed to load
  • 2169 - Upgrade jcraft/jzlib dependency
  • 2123 - Fix for issue 2050 : BigDecimal and nil multiplication
  • 2120 - require 'win32/registry' fails
  • 2115 - Limit searches for service libraries to once per baseName, rather than once per suffix.
  • 2088 - Allow partial but not actual esoteric interpolation sequences to be regexp values
  • 2079 - Error running rspec (LoadError: load error: jopenssl/load -- java.lang.NoClassDefFoundError: org/bouncycastle/asn1/DERBoolean)
  • 2078 - Very large retained heap size for org.jruby.RubyRegexp$RegexpCache in JRuby Rails App
  • 2077 - jruby can't be used w/ jdk 9
  • 2075 - Provide better error message when using :: in java_import (fixes #2074)
  • 2074 - java_import does not accept :: for static nested classes
  • 2072 - Old tzdata in JRuby
  • 2068 - Made Exception#set_backtrace compliant with Ruby documentation
  • 2064 - improve handling of non ascii character after backslash
  • 2060 - Instance_eval tramples over block's binding's ivars
  • 2057 - Rubygems broken due to psych problem for 1.7.16 in 1.8 mode
  • 2055 - extensions found on classpath do not load
  • 2042 - Gem class missing in jruby-complete 1.7.16 when running from network folder (Windows only)
  • 2040 - jruby -S irb broken on solaris in 1.7.16 with JDK 7
  • 2032 - JRuby 1.7.16's complete.jar has a path regression from 1.7.15
  • 2017 - load path with jars not working anymore with 1.7.16
  • 2016 - java.library.path on Fedora
  • 2011 - Fix for issue 1695 : BigDecimal and Rational multiplication
  • 2008 - Implemented multi args 'system' method on Windows fix #1074
  • 2006 - Coding Conventions guide uses wrong link for sun java coding standards
  • 2004 - jruby-complete-1.7.16.jar includes /Users directory
  • 2003 - fix enums to return nil on unknown symbol
  • 2002 - tweak include order
  • 1999 - Land master File.readlink fix (084eef9c25860cccdd65b625a877e7e230414175)
  • 1983 - java -jar jruby-complete.jar -S irb doesn't work anymore
  • 1962 - Array() does not coerce according to MRI 1.9 logic
  • 1954 - FFI::Library#enum_value difference between MRI and JRuby
  • 1934 - Deprecate overloaded `setProfile`, prefer `setProfilingMode`
  • 1919 - Call Exception#set_bactrace when raising exception
  • 1875 - __FILE__ is wrong when using PathType.CLASSPATH so require_relative can't work
  • 1870 - Module#ancestors now includes singletons themselves
  • 1869 - ScriptingContainer.parse(PathType.CLASSPATH, "some.rb").run() fails
  • 1791 - scriptingcontainer native memory leak?
  • 1768 - OpenSSL cipher list mismatch
  • 1758 - Binding bug
  • 1752 - warning: Tempfile#unlink or delete called on open file; ignoring
  • 1695 - BigDecimal and Rational multiplication rounds the rational number
  • 1681 - Optimize SipHash using sun.misc.Unsafe
  • 1549 - openssl issue with rails and installed default gems
  • 1547 - Passing environment hash to Open3#popen3 causes IOError
  • 1290 - JRuby 1.7.8 (1.9) Open3 `capture3` bug
  • 1074 - Kernel#system with two parameter on Windows fails
  • 1035 - String#crypt behaving differently that in MRI
  • 957 - Time marshaling is incorrect

New in JRuby 1.7.16.2 (Dec 9, 2014)

  • A security fix release for CVE-2014-8090.

New in JRuby 1.7.16.1 (Oct 29, 2014)

  • A security fix release for CVE-2014-8080. All users are strongly recommended to upgrade.
  • There is one other small change in this release to strip out extra unused files from jruby-complete.jar. jruby-complete.jar is back down to a normal size again.

New in JRuby 1.7.16 (Sep 26, 2014)

  • Changes of note:
  • 20 issues fixed for 1.7.16
  • Fixed regression which improperly wrote wrong version for OSGi bundles
  • Fixed several regressions involving symbolic links and Ruby loading
  • Doubled performance of FileTest.directory?
  • Issues resolved:
  • Tempfile behavior change in 1.7.15
  • Regexp regression in 1.7.15 from 1.7.13
  • Snapshot builds of jruby-1_7 jruby-jars.gem have the wrong file name
  • Allow launch.inproc=true to expand glob patterns
  • Files in axiom-types and descendants_tracker gems use 400 and 440 modes
  • String#slice on multibyte chars raise Exception
  • java -jar jruby-complete.jar -S irb doesn't work anymore
  • jrubycomplete - OSGi DynamicImport-Package breaks Adobe AEM
  • nil TypError on bundle install, regression 1.7.14+
  • Bundle package broken after 1.7.14
  • jruby-core 1.7.14 isn't a valid OSGI bundle anymore
  • Gemfiles that use `:path` broken between 1.7.13 and 1.7.15
  • Array#product does not coerce incoming arguments properly
  • openssl ignores OpenSSL::X509::DEFAULT_CERT_FILE
  • All RubyFileTest methods have a race condition
  • File.exists?("broken_symlink") returns true
  • Bundle not working with two gemspecs - bug introduced in 1.7.14
  • IOError with OpenSSL #connect_nonblock: Writing not possible during handshake
  • NPE in Ripper with $ special variables
  • JRuby 1.7.2 with authlogic 3.x fails to boot (OpenSSL)

New in JRuby 1.7.15 (Sep 4, 2014)

  • This release is a quick followup release to JRuby 1.7.14. JRuby 1.7.14 had a mangled jruby-jars release as well as several non-obvious regressions involving our new load service internals. We apologize if these regressions have affected you and recommend all people upgrade to 1.7.15.
  • Changes of note:
  • 8 issues fixed
  • Potential memory leak resolved when reloading JRuby apps in Java App servers
  • jruby-jars gem did not have their embedded jars within it
  • rvm install of jruby would not properly follow gemset symlinks
  • Windows exec works again
  • lstat did not honor native.enabled property and always invoked native
  • Issues resolved:
  • Symlinks in load path get expanded when they should not
  • Update jnr-ffi dependency version
  • Pathname object in $LOAD_PATH causes error (1.7.14)
  • Add ScriptingContainer accessors for ProfileOutput
  • JRuby 1.7.14 relies on HOME in the environment - change in behaviour from 1.7.13
  • jruby-complete 1.7.14 appears to be missing some files
  • jruby-jars 1.7.14 gem seems to be missing jar files.
  • control-c in cmd while running webrick rails app does not kill jruby.exe

New in JRuby 1.7.14 (Aug 28, 2014)

  • Changes of note:
  • 30 issues fixed
  • Fixed potential memory leak with Jar file resources
  • Due to slow startup on Rails apps invokedynamic is no longer on by default
  • load/require internals refactored and simplified
  • Small smattering of compatibility fixes
  • Issues resolved:
  • String#start_with? returns false when using an empty string
  • Tempfile and deleteOnExit
  • Can't call static method on Java 8 interface
  • Fix the memory leak and actually close the resources.
  • NPE from org.jruby.java.proxies.ArrayJavaProxy.to_a
  • native memory leak when reading files from inside a .jar
  • JMX tries to double-bind a port when using bundle exec
  • JRuby with Java 8 4 to 10 times slower than Java 7
  • JRubyClassloader seems to have a problem with file urls pointing to jar ...
  • embedded jars do not get loaded
  • Fix $LOAD_FEATURES paths for 1.8
  • fix ArrayJavaProxy#to_a failure on arrays containing null
  • can not load resources from jar anymore with jar uri
  • apply minor enebo's comments
  • Fix BigDecimal#round behavior with NAN and INFINITY
  • Zlib crc improvements
  • Fix minor bug in `setNativeEnabled`, and expose it in ScriptingContainer
  • Fix Encoding::Converter#inspect output
  • mvn -Pall fails at the documentation step
  • Make Time#to_r consistent with MRI
  • ServerSocket#accept_nonblock returns the server's port, not the client's
  • avoid sub-classing ThreadLocal since it will leak in envs such as .wars
  • added a java_field method for use in the jrubyc command.
  • enhanced the java_class compiler so it can handle multiple constructors
  • Refactor LoadService to make use of resources
  • no valid struct layout for Ethon::Curl::Slist
  • Empty hash optimization
  • IO.select raises CancelledKeyException on shutdown
  • Date comparison as java objects
  • bouncy-castle-java JARs missing when warbling with JRuby 1.7.10

New in JRuby 1.7.13 (Jul 5, 2014)

  • new krypt gem release
  • jruby-opensll snapshot build not working properly on 1.7 branch
  • openssl load 1.8 (and possibly 1.9 compatibility) fix
  • Openssl is broken in 1.8 mode due to IO::WaitReadable
  • Ruby 1.9+ will use nil not false for type argument of set_trace_func
  • [GH-1726] - File.read should raise an Errno::ENOENT when the file is an empty String
  • JRuby 1.7.12: File.read("") throws Java ArrayIndexOutOfBoundsException
  • Make behavior of Array#eql? more closely match MRI
  • Strange FloatDomainError
  • String#rindex should handle matchdata strings
  • quote variables so works with directories with spaces
  • add spec for array coercion
  • * Treat SSL NOT_HANDSHAKING as FINISHED.
  • jruby-openssl gem version inconsitency
  • Fix for issue #1695
  • StringIO.set_encoding may change shared ByteList encoding
  • jruby-lib build fails in windows
  • Do not rescue java.lang.Error using StandardError
  • Rescue StandardError rescues Java errors
  • String rindex does not work properly with matchdata
  • Fix for issue #1517
  • Regression in compiling with default 1.8 mode
  • Use pwd -P to work on systemlinked locations.
  • ArrayJavaProxy#to_a now returns nested arrays where applicable
  • (more) OpenSSL cleanup
  • Kernel#fail should handle java exceptions
  • Fix #1664 for Hash#compare_by_identity and Hash#store
  • when Hash#compare_by_identity is called, it should not copy the keys
  • BasicSocket#shutdown should accept strings or symbols
  • minor (infrastructure) openssl cleanup
  • require 'net/https' fails on 1.7.12 and master if jruby.native.enabled=false
  • Triplicate BouncyCastle jars in the build
  • GH-1633 - BigDecimal operations should throws TypeError when the first argument is nil
  • Fixing: Fixnum#to_s seems to generate strings immune to #[]=
  • Fix jar entry path expansion (https://github.com/jruby/jruby/issues/321 issue) fail and raise behave differently
  • "Regexp Interrrupted" Typo
  • Static JavaProxy#getJavaClass needs to clear $!
  • Erroneous BigDecimal operations
  • BigDecimal#{round,truncate,floor,ceil} with no args returns to_i
  • Add support for symbol rounding mode arguments
  • Refactor channeldescriptor to use FileResource
  • Actually use Java7ClassValue when using Java 7+.
  • api for custom profiler
  • Uninitialized constant OpenSSL::SSL::SSLContext::METHODS in 1.7.x
  • Hash#hash fails when keys & values are the same
  • BasicSocket.shutdown() is not compliant for >= 1.9.x
  • Result of operation between BigDecimal and Rational differs.
  • loading (default) gems varies between jruby 1.7.x versions
  • Fixnum#to_s seems to generate strings immune to #[]=
  • openssl 'BC' (security provider) leak
  • fix initialize visibility
  • ArgumentError: comparison of Class with Class failed
  • Time#to_s with different UTC offset gives local hour with given offset
  • Enumerator.peek throws NullPointerException after the last item (1.7.8)
  • OpenSSL::ASN1.decode results vary from MRI (and fail)
  • OpenSSL::PKey::RSA.new returns the wrong value
  • File.readlink cannot read dangling symlinks

New in JRuby 1.7.12 (Apr 18, 2014)

  • Changes of note:
  • 39 issues fixed for 1.7.12
  • Mostly small 1.9.3 compatibility fixes
  • Fixed a small leak if throwing lots of X509Errors
  • Improved loading speed of Ruby files from jar files.
  • Issues resolved for 1.7.12:
  • #1626 - Fix compare_to for to_java'ed Ruby objects
  • #1625 - Array#pack(cC) should not raise RangeError when argument is bignum
  • #1618 - Enum.java:238:in `valueOf': java.lang.IllegalArgumentException: No enum constant jnr.constants.platform.AddressFamily.AF_AF_INET
  • #1612 - jruby affected by libyaml CVE-2014-2525?
  • #1608 - Inconsistent parsing of long strings to integers between JRuby and MRI
  • #1607 - index.txt for s3 files
  • #1606 - Exception when comparing Time with nil using ===
  • #1605 - syslog FFI constants not generated for Syslog class on FreeBSD
  • #1603 - Remove [@] syntax to add IBM i compatibility
  • #1600 - Enums.... round three
  • #1599 - Fix dynamic rescue on Java exceptions (issue #1598)
  • #1598 - Dynamic rescue blocks don't catch Java exceptions
  • #1595 - "gem install bundler" fails using 2.0 or 2.1 mode
  • #1592 - Fix definition of JavaUtilities::ModifierShortcuts#static?
  • #1589 - Rand fix master
  • #1588 - fix Random.rand(1.0) behavior
  • #1587 - Refactor channeldescriptor to use FileResource
  • #1583 - Random.rand is broken with floating point values vs 1.9.3
  • #1575 - mvn build error for [INFO] JRuby Lib Setup ................................... FAILURE
  • #1573 - Fix exponential perf degradation in Time.parse and Time.strptime.
  • #1564 - String#{to_r,to_c} should not use backref when calling gsub internally
  • #1563 - Calling String#to_r causes loss of Regexp.last_match data
  • #1557 - Pathname doesn't have to_path in 1.8
  • #1556 - Dir.home returns LOGDIR env var instead of HOME or user.home
  • #1546 - Implement jar directory snapshot caching.
  • #1534 - NPE in RubyIO.fwrite(RubyString buffer)
  • #1532 - Potential runtime leak from X509Error$ErrorException
  • #1529 - Krypt 0.0.2.rc1 update
  • #1526 - Change to use FileResource to get entries for RubyDir
  • #1523 - unexpected ArgumentError in curried Proc
  • #1508 - fix spinning indefinitely on partial TLS record (issue #1280)
  • #1507 - Processdottimesfix
  • #1506 - Better messaging with NameErrors
  • #1478 - Array#pack difference between jruby 1.7.10 and ruby 1.9.3
  • #1460 - org.jruby.ext.pathname.RubyPathname class doesn't properly support instance_variable_set method
  • #1280 - jruby-openssl spins endlessly trying to read from a non-blocking SocketChannel while no data is available.
  • #1210 - Unbundle bouncy-castle-java
  • #1207 - Unbundle krypt libraries
  • #1100 - When inside a .JAR, __FILE__ returns a URI-like string that isn't understood by some keywords

New in JRuby 1.7.11 (Feb 26, 2014)

  • Changes of note:
  • 54 issues fixed for 1.7.11
  • Miscellaneous encoding fixes
  • Several fiber edge cases fixed
  • Fiber thread pool reinstated
  • More Ruby-friendly Java backtraces
  • Issues resolved for 1.7.11
  • #1519 - Catch/throw and exceptions do not propagate out of fibers
  • #1515 - Make JRuby\'s RubyTime argument checking be same as MRI
  • #1512 - Fixing encoding problem with string format.
  • #1511 - Encoding problem with string format
  • #1510 - Resurrect replacing '\' with '/' in JRubyFile for windows.
  • #1504 - Unreadable stacktraces when exceptions occur within Java code
  • #1501 - Time.utc can't handle hour 24
  • #1499 - Warning in Win32api.rb - check fails in Ruby 2.0 mode
  • #1498 - do not install jruby-launcher on mvn \-Pbootstrap for windows
  • #1494 - Refactor RubyFileStat and RubyFileTest to use FileResources
  • #1489 - Error Installing Gems in jruby 1.7.11-SNAPSHOT java.lang.NoClassDefFoundError: org/bouncycastle/asn1/DERBoolean
  • #1488 - fiber GH-1463 regressed
  • #1485 - NPE not being caught or is printing out for no reason
  • #1483 - Fix uniq/uniq\! with block for array slices
  • #1481 - jruby-complete.jar broken on master
  • #1477 - Bugfix for issue #1248
  • #1475 - BUILDING.md: Added info about incremental compiling, cleaning after switching branches
  • #1474 - Strange encoding differences with UTF-8 strings
  • #1473 - Java NullPointerException raised inside Proc gets printed out even though it was rescued
  • #1470 - Building JRuby: some classes are not rebuilt properly by "mvn package"
  • #1468 - Fix jar globbing for real now.
  • #1463 - Raising an exception on a thread that is in a Fiber causes a NullPointerException
  • #1454 - Removed the custom glob code and added "defacto" expectations
  • #1453 - Dir.glob is broken for files inside jar
  • #1450 - Make warnings show the right line number
  • #1448 - Fix Gem.ruby singleton method on Windows
  • #1446 - Line number in runtime warnings is one greater than the actual line number
  • #1445 - [2.1] Return in a lambda always returns from the block, even when &-ified
  • #1443 - Fibers don't seem to reuse threads
  • #1442 - Fixed issue 1441. Forced check that value was of an appropriate type.
  • #1441 - Subtracting nil from a BigDecimal returns nil
  • #1440 - Enumerator#each_with_object should provide the yielder\'s return value to its block
  • #1439 - Restore hex and random_bytes to SecureRandom 1.8 \- fixes Travis
  • #1436 - Allow Travis on select branches
  • #1434 - uniq! returns nil when it is after a shifting operation.
  • #1424 - Incorrect line number reported in "already initialized constant" warining
  • #1421 - Need ByteList release for 1.7.11.
  • #1417 - Ripper error "lex_p < tokp" caused by multi-byte character
  • #1416 - mvn -Pbootstrap fails to build JRuby Integration Tests?
  • #1414 - Cache DecimalFormatSymbols instances to reduce lock contention
  • #1412 - Fix ffi buffer
  • #1410 - main.inspect returns wrong value.
  • #1406 - Further improvements to SecureRandom
  • #1403 - Hash cleaned when used as named parameters (JRUBY_OPTS=--2.0)
  • #1402 - Opening a class body doesn't reset the value of __method__
  • #1400 - Reduce locking in VariableTableManager#initObjectId
  • #1399 - Reduced the number of String allocations for the NONE parameterList case.
  • #1392 - NullPointerException loading rouge gem
  • #1377 - Implement Addrinfo.getaddrinfo
  • #1361 - invalid bytes in ascii string result in ArrayIndexOutOfBoundsException on chars
  • #1248 - Problems with paths containing space characters
  • #1181 - Thread leak or expected behavior with fibers
  • #1098 - Program that works under C Ruby fails under JRuby
  • #272 - Bad error message for block pass through with return statement

New in JRuby 1.7.10 (Jan 10, 2014)

  • Changes of note:
  • 22 issues fixed
  • Windows require_relative regression fixed.
  • Accidental SNAPSHOT dependency fixed
  • A couple of Marshalling bugs involving encoding fixed.
  • Issues resolved for 1.7.10:
  • #1385 - Socket::SOMAXCONN
  • #1380 - test-extended failing
  • #1375 - Global eventually ignores assignment
  • #1374 - require_relative fails when called from classpath:/ path file on Windows in JRuby 1.7.9
  • #1363 - Compiling from source at 1.7.9 fails due to unsatisfied maven dependencies
  • #1355 - Exception starting new thread after set_trace_func call
  • #1349 - bin/{rake,rdoc,ri} broken by default in jruby 1.7.9
  • #1345 - UnmarshalStream: Look for encoding information in all instance variables
  • #1338 - UnmarshalStream: Fixed two off-by-one errors in unmarshalInt
  • #1336 - Fixing Enumerator#peek behaviour
  • #1335 - Array#repeated_permutation should have arity 1
  • #1334 - #enum_slice and #enum_cons are 1.8-only
  • #1323 - Snapshot dependency in released jruby-core 1.7.9
  • #1322 - Dir resolves symlinks
  • #1317 - 1311 datetime comparision
  • #1312 - File.expand_path("NUL") broken
  • #1311 - DateTime comparision at sub-millisecond resolution
  • #1252 - Range#size missing from JRuby 1.7.8 in 2.0 mode
  • #1184 - undefined method `__ruby_object' for interface implementation
  • #1156 - jruby-openssl spins endlessly trying to write to a socket which is in state CLOSE_WAIT
  • #1129 - IO#read_nonblock blocks sometimes for SSL Sockets
  • #480 - JRuby does not Handle UTF-8 Source Files

New in JRuby 1.7.9 (Dec 7, 2013)

  • Changes of note:
  • 36 issues fixed
  • Windows File.size fixed
  • Windows now will properly display to console windows codepage
  • Fixed regression which broke Compass (or anything which depended on FSSM)
  • A few more encoding issues fixed
  • Lots of Enumerable method improvements
  • Issues resolved for 1.7.9:
  • #1300: Fix #1222, StringIO.gets w/ utf8
  • #1295: Don't set java.net.preferIPv4Stack in shell scripts #1286
  • #1293: Adding spec for JRUBY-5946
  • #1292: subList toIndex should be exclusive, not inclusive. (fromIndex is inclusive.)
  • #1291: Sidekiq: Minitest error: NoMethodError: unmocked method :==, expected one of []
  • #1282: Blockless Struct#select should return an enumerator
  • #1275: Quote a JSON key so it's valid JSON.
  • #1274: RubyArray.subList should treat toIndex as exclusive, not inclusive.
  • #1272: File.size (org.jruby.RubyFile.size() ) impacts underlying file handle
  • #1271: Fix arrays with overridden each
  • #1267: Removes Logger customizations in JavaUtilLoggingLogger
  • #1265: StackOverflowError overriding Array.each since 1.7.5
  • #1264: Fix Enumerable#chunk arg handling
  • #1263: Fix Enumerable#take_while arg handling
  • #1262: Fix Enumerable#slice_before arg handling
  • #1257: mvn clean package wipes out installed jruby launcher
  • #1255: StringIO Encoding Issue
  • #1254: String#encode raises different errors on 1.7.8 than on 1.7.4 (and both are different from MRI)
  • #1251: "Stub gems" missing/wrong in JRuby 1.7.8
  • #1246: Fixing String#concat(symbol) should raise TypeError
  • #1245: Undefined method exception when using `compass watch' in jruby 1.7.8.
  • #1242: UTF-8 string interpolation in US-ASCII string sometimes returns wrong US-ASCII string
  • #1239: Compiled method bodies do not scope defn/defs correctly
  • #1238: JRuby 1.7.8 fails to initialize OpenSSL::PKey::RSA.new with encrypted key
  • #1236: Erroneous files in JRuby 1.7.8 "bin/" directory.
  • #1234: Fix any_spec
  • #1231: Fix count_spec (1.7.x)
  • #1229: duplicate class definition when reifying classes
  • #1222: CSV parse fails when string with mutibyte character terminates with CR-LF
  • #1221: openssl: add handling for base 0 to new and to_s
  • #1209: Pathname#dup is broken in 1.7.5.
  • #1204: Regression: Encoding error saving YAML with Norwegian characters
  • #1198: String encoding
  • #901: Enumerable arg handling issues for `#chunk`, `#slice_before`, and `#take_while`
  • #770: file size error on windows

New in JRuby 1.7.6 (Oct 23, 2013)

  • Changes of note:
  • Restored some missing .bat files for Windows
  • Fibers no longer throwing uncatchable errors
  • Removal of already initialized warnings from OpenSSL
  • Issues resolved for 1.7.6
  • #1145 - Process.respond_to?(:fork) returns true when profiling is enabled
  • #1142 - Threading fixes
  • #1141 - Error Messages Seem Different Compared to YARV
  • #1138 - Files missing from JRuby 1.7.5
  • #1135 - Round method not consistent with jruby 1.7.5 compared to 1.7.3
  • #1133 - Tempfile no longer unlinks created files upon garbage collection
  • #1128 - strformat corrupt cyrillic symbols
  • #1121 - Bigdeciment 1.9+: to_s sometimes has extra trailing zeroes
  • #1118 - Arrays duplicated by splats (e.g. a_dup = [*a]) share structure, but shouldn't
  • #1116 - Ignore AccessControlException while setting network stack system property
  • #1106 - Java exceptions raised in fibers cause the fiber to die without notifying parent
  • #1088 - JZlibRubyGzipWriter doesn't handle nil arguments gracefully
  • #1071 - Lots of already initialized errors from jruby-openssl
  • #1044 - Allow whitespace between -> and () in lambdas in 2.0

New in JRuby 1.7.4 (May 17, 2013)

  • Dozens of 1.9-mode compatibility fixes
  • Many IO and encoding issues fixed
  • Transcoding support for :xml entity encoding
  • Proc and block dispatch perf improvements
  • Fiber and Enumerator#next improvements and fixes
  • Fixed a regression in windows java native launcher
  • Experimental Ruby 2.0 support (most features and stdlib included)
  • 90%+ complete Ripper support
  • OpenSSL fixes and updated to newer Bouncy Castle library
  • Updates and fixes to FFI subsystem (compat with C ext, AIX support, etc)
  • Long running regexp can be interrupted by Thread#kill and raise
  • 137 issues fixed for 1.7.4

New in JRuby 1.7.3 (Feb 22, 2013)

  • Changes of note:
  • Security fix (no CVE) for DOS using entity expansion in REXML
  • Security fix (CVE-2013-0269) for unsafe object creation using JSON
  • Relicensed from CPL to EPL
  • Fixed one regression in windows java native launcher
  • A few encoding issues resolved
  • 42 issues fixed for 1.7.3
  • Jira Issues resolved:
  • JRUBY-7058 - NPE in BiVariableMap.getLocalVarNames() after clear()
  • JRUBY-6887 - Thread.current.object_id inside an Enumerator is different from outside it
  • JRUBY-7048 - Kernel#gsub is not available when -p/-n command line option specified.
  • JRUBY-7068 - StringIO.open should accept any number of arguments
  • JRUBY-7069 - Dir.home(nil) should be my home
  • JRUBY-7079 - Uninitialized constant NameError should store a symbol and not a string
  • JRUBY-6793 - Update bouncycastle jars to the latest version. (1.47)
  • JRUBY-7081 - Thread.current does not remain consistent between Fibers
  • JRUBY-7091 - Infinity should not be roundable :)
  • JRUBY-7035 - Rails 4 master doesn't start on JRuby 1.7.1 (OpenSSL::PKCS5)
  • JRUBY-7001 - maven jruby-rake-plugin classpath goal fails on windows
  • JRUBY-7084 - Interaction between oh-my-zsh configuration and jruby shell script
  • Github Issues resolved:
  • #537 - Add the complete text of the Eclipse Public License
  • #536 - Fix occasionally failing spec.
  • #534 - Fix Enumerable#find_each block arity
  • #533 - Default indy off for early IBM Java 7 releases #477
  • #532 - Current head switches on +indy before 1.7update14
  • #529 - Combination of Enumerable#each_slice and Array#transpose raises TypeError
  • #528 - fix samples/mvm.rb
  • #526 - Move to EPL from CPL
  • #525 - Unexpected behaviour of `Enumerator#find_index` with block (1.9 mode and HEAD)
  • #519 - nailgun missing in src package
  • #518 - Fix typos in "1.9/io/console.rb"
  • #517 - Rational/Float/Fixnum/Bignum `.to_s.encoding` is US-ASCII
  • #516 - krypt is not 1.8-compatible
  • #512 - Update json to 1.7.6
  • #511 - tty issue with drip
  • #508 - added Junit test to help fixing bug #7058
  • #506 - throw stringifies the name
  • #504 - Infinite loop (or performance issue) writing using MultiByteEncoding
  • #494 - FFI::MemoryPointer#free may cause JVM crashes
  • #492 - Add missing throw to default_internal=.
  • #485 - Resolve #482 Array#zip with infinite enum results in OOM
  • #482 - Combination of Array#zip and Array#cycle result in OOM
  • #479 - Fix write loss on concurrent ivar table growth
  • #477 - IBM J9 VM should also have INVOKEDYNAMIC_DEFAULT = false
  • #470 - Bignum#div raise ZeroDivisionError if the argument is Float zero
  • #466 - Bunch of fixes for IO.copy_stream
  • #465 - Add const_get to java package Fixes #435
  • #464 - [rfc] Support unmarshaling hashes created in MRI 1.9.1 with US-ASCII strings
  • #457 - Accept Encoding object for Encoding.compatible?
  • #435 - support for const_get() in java_package_module_template

New in JRuby 1.7.2 (Jan 5, 2013)

  • Changes of note:
  • Reworked openssl ext to allow updating from gem
  • Improved performance of constants and global variables
  • Improved performance of Java arrays accessed from Ruby
  • Many miscellaneous 1.9 compatibility fixes
  • 32 issues fixed for 1.7.2
  • Jira Issues resolved for 1.7.2:
  • JRUBY-6973 - Release jruby-openssl-0.8.0 gem
  • JRUBY-7039 - net/protocol in Ruby 1.8 mode loads Ruby 1.9 version of socket
  • JRUBY-6951 - Unable to encrypt data and then decrypt it in MRI Ruby
  • JRUBY-7017 - OpenSSL::HMAC transcodes data to iso-8895-1 before signing
  • JRUBY-7018 - sha1 library file, SHA1 top level class, and sha1 class method missing in Ruby 1.8 mode
  • JRUBY-7032 - Time#strftime %3N doesn't limit sub-seconds to 3 digits
  • JRUBY-7029 - add_parameter_annotation broken
  • JRUBY-7037 - Files containing literal '[' or ']' will not be required from LOAD_PATH
  • JRUBY-6953 - --ng-server fails if you have JRUBY_OPTS set
  • JRUBY-7046 - unable to copy files > 2GB
  • JRUBY-7043 - Test failures, again.
  • JRUBY-7016 - There's a "t" missing in the output from --profile.json
  • Github Issues resolved for 1.7.2:
  • #473 - File.truncate should not move write pointer
  • #467 - glib2 doesn't compile under jruby 1.9.7
  • #452 - Implement loaded feature caching to reduce load path searching.
  • #447 - Javadocs mangles some HTML in org.jruby.util.Pack
  • #445 - Requiring an empty string causes AIOOB with RubyGems active
  • #441 - jruby-7029: fix add_parameter_annotation, it was untested and broken.
  • #440 - Constant lookup falls off top scope in new compiler scoping logic
  • #439 - String#upcase and downcase fail for multibyte characters
  • #436 - Fix Readline.get_screen_size before Readline.readline
  • #434 - Update psych to tenderlove/psych@d5757ea
  • #433 - strftime does not implement %-flag in 1.8 mode.
  • #431 - Include runtime version in site dir
  • #429 - Setup .gitattributes for eol normalization
  • #428 - Directed graph library specs
  • #427 - Don't override default_exec_format method for rubygems
  • #426 - Trie impl is slower on JRuby than other Rubies
  • #425 - Fixed implicitly creating a vertex if it is absent while removing a edge or vertex
  • #360 - Non-ASCII character escape sequence in string_content results in SyntaxError
  • #215 - 10 argument variant of `Time.local` mishandles timezone.
  • #174 - [JRUBY-6668] StringScanner#scan_until spins forever on UTF-8 data

New in JRuby 1.7.1 (Dec 4, 2012)

  • Changes of note:
  • New hashing algorithm to address CVE-2012-5370
  • Update standard lib to match MRI patchlevel 1.9.3p327
  • Several fixes to new io/console.rb implementation
  • system/spawn/popen fixes and additional options hash fixes
  • Several SSL fixes (jruby-openssl release coming soon for 1.6.8 users)
  • IO.select not erroneously reporting data to be read
  • Psych YAML engine updated to latest
  • 43 issues fixed since 1.7.0
  • Jira Issues resolved since 1.7.0:
  • [JRUBY-5529] - [1.9] undefined method `read_nonblock' for # (NoMethodError)
  • [JRUBY-5986] - $! is not set to nil in an ensure block where no exception is raised
  • [JRUBY-6339] - JRuby can't load from JAR files on a path with a '#' symbol (breaks Tomcat 7 Parallel Deployment)
  • [JRUBY-6346] - Error establishing SSL connections: OpenSSL::SSL::SSLError: Socket closed
  • [JRUBY-6391] - undefined method `write_nonblock' for OpenSSL::SSL::SSLSocket
  • [JRUBY-6581] - "yield called out of block" for Enumerators created with enum_for
  • [JRUBY-6636] - OpenSSL::X509::Certificate and OpenSSL::PKey::RSA constructors don't accept File objects
  • [JRUBY-6744] - We are at p204 but 1.9.3 is only at p194
  • [JRUBY-6777] - RubyFixnum.java - two methods fail to detect some long integer overflows
  • [JRUBY-6870] - IO.select says there is data but read_nonblock raises 'read would raise' using SSLSocket
  • [JRUBY-6949] - system() silently fails when options are passed
  • [JRUBY-6954] - Time.new does not respect UTC offset in the 7-argument form
  • [JRUBY-6960] - Failure to start ant from JRuby 1.7.0
  • [JRUBY-6961] - Loading jruby-openssl gem on jruby-1.7.0 can cause "private method `verify_mode' called for #

New in JRuby 1.7.0 Preview 2 (Sep 19, 2012)

  • Notable Changes:
  • 1.9.3 is now our default runtime mode (–1.8 is needed for 1.8.7 support)
  • Many 1.9.x compatibility fixes
  • invokedynamic has been disabled for now on Java 7 (still on by default on Java 8)
  • Performance and concurrency improvements
  • Java 5 support dropped (Java 6+ required)
  • Several IO transcoding issues
  • YAML now encodes scalars properly instead of using Java locale
  • Kernel#exec now does a true native exec on all platforms
  • Improvements and fixes to Java integration and embedding
  • Fix several native support issues on Solaris
  • 122 issues resolved
  • Issues resolved:
  • JRUBY-5053 memory leak in rubygems
  • JRUBY-5785 BUG: invoking UndefinedMethod.call
  • JRUBY-5899 NotImplementedError: Process::Status#exited? not implemented
  • JRUBY-5939 [:space:] does not match unicode 0x3000: fullwidth whitespace
  • JRUBY-6056 High CPU Loop with parallel Etc.group iterrations
  • JRUBY-6121 Local variables cross eval scopes
  • JRUBY-6124 Yielding no values to a block gives ArrayIndexOutOfBoundsException
  • JRUBY-6125 Yielding a single object to a block with |a, b| arguments does not call #to_ary
  • JRUBY-6181 SSH Agent forwarding does not work with jRuby (which lets capistrano ssh-deployments fail)
  • JRUBY-6253 IBM JVM rejects class/method names with #, as in our JIT recently
  • JRUBY-6286 jnr-posix WindowsHelpers.isBatch Always Returns False
  • JRUBY-6299 Slow perf in String#split or #join on 1.9 mode
  • JRUBY-6317 YAML can’t parse some valid unicode characters
  • JRUBY-6330 Performance degradation in Time.strptime with invokedynamic
  • JRUBY-6376 File.stat.size on Solaris: ridiculously large results
  • JRUBY-6395 Coerce Fixnum to Number
  • JRUBY-6424 Allow java_signature to generate throws clause for methods/constructors
  • JRUBY-6428 Regression: Float#to_d doesn’t work on 1.7 (did in 1.6)
  • JRUBY-6459 JRuby head causes rack response to change behaviour
  • JRUBY-6465 out of memory building c extensions
  • JRUBY-6481 AccessControl exceptions attempting to create JRuby instances in applet
  • JRUBY-6493 Calling dynamically defined method throws Java::JavaLang::NullPointerException or returns nil without executing method body
  • JRUBY-6494 File#directory? always returns false on Solaris
  • JRUBY-6495 java.nio.ByteBuffer.wrap throws java.lang.IndexOutOfBoundsException
  • JRUBY-6514 java.lang.NullPointerException when using ScriptingCotainer from an Appletjava.lang.NullPointerException
  • JRUBY-6521 With Java 7, nailgun client cannot list local gems more than once
  • JRUBY-6525 FFI bug with Solaris JRuby >=1.6.6
  • JRUBY-6532 ftp.nlst, ftp.ls doesn’t work on JDK 7u3
  • JRUBY-6548 REXML error when reading files containing ISO-8859-1 encoded data
  • JRUBY-6552 File.directory? does not work under 1.9 mode on Solaris
  • JRUBY-6553 Application continues running after throwing out of memory exception in Thread
  • JRUBY-6613 special characters like umlauts make Kramdown hang (works with MRI Rubies)
  • JRUBY-6615 File.open ignores specified external encoding
  • JRUBY-6638 Multicast UDPSocket send does not work with host and port
  • JRUBY-6639 Marshal.load takes forever when deserializing Rails unicode db in WEBrick
  • JRUBY-6658 Problem when setting up an autoload entry, defining a class via require, then redefining the autoload entry
  • JRUBY-6663 `jruby -S bundle exec rails c` fails with “Bundler: command not found”
  • JRUBY-6666 Open3.popen3 failing due to missing handling for [path, argv[0]] array
  • JRUBY-6674 Inconsistent java method/signature choosing depending on java version/platform
  • JRUBY-6677 open(“|something”, “w”) does not open in write mode
  • JRUBY-6678 compilation fails for CC=”ccache gcc”
  • JRUBY-6679 Encoding.default_external discrepancy between JRuby and MRI
  • JRUBY-6682 ’ jgem search -r ak ’ causes exceptions
  • JRUBY-6685 Encoding problem when using JRuby 1.7.0.preview1 + Nokogiri under Windows
  • JRUBY-6686 JRuby/RSolr - BLOCKED on org.jruby.internal.runtime.methods.InvocationMethodFactory.getCompiledMethod
  • JRUBY-6688 Tempfile#{unlink,delete} should warn or actualy do something
  • JRUBY-6693 Get the terminal width with JRuby
  • JRUBY-6694 Invalid byte sequence in utf-8
  • JRUBY-6697 JRuby 1.7 should report 1.9 as default
  • JRUBY-6701 Net::HTTP ignore JSE defined HTTP Proxy options
  • JRUBY-6702 File.utime does not check file permissions
  • JRUBY-6703 Remove Enumerable#join from 1.9 mode
  • JRUBY-6705 Error during gem loading in Rails: ActiveRecord is not missing constant Base
  • JRUBY-6706 Collections.shuffle works incorreclty on Ruby arrays
  • JRUBY-6707 JRuby master (1.7) is LOT slower than jRuby 1.6.7 & MRI in generating tictactoe game tree
  • JRUBY-6708 NullPointerException instead of proper exceptions output
  • JRUBY-6709 ffi problems on 1.7.0.preview1?
  • JRUBY-6711 JRuby 1.7 needs a formal release of jline
  • JRUBY-6713 win32/registry.rb warning
  • JRUBY-6714 require ‘java’ in verbose mode causes circular dependency warning
  • JRUBY-6715 jruby-openssl cert validation fails on windows
  • JRUBY-6717 jruby1.7.0preview1 doesn’t work on Windows with jdk7
  • JRUBY-6718 crash with java.lang.invoke.WrongMethodTypeException
  • JRUBY-6721 probably extraneous warning message generated
  • JRUBY-6722 Can’t instantiate ThreadGroup subclass with arguments
  • JRUBY-6724 NO_FILE_CLASS Profile does disables File but not FileStats that depends on File
  • JRUBY-6725 NameError: uninitialized constant RubyVM
  • JRUBY-6729 1.9: block argument to yield method is not correctly pass to a block. – pp’s seplist method
  • JRUBY-6731 Can’t load class files in WARs compiled by warbler using jruby 1.7.0.preview1
  • JRUBY-6734 Socket.new seems broken – throws exceptions on valid params
  • JRUBY-6735 FileUtils.chmod broken for symlinks
  • JRUBY-6737 Cannot use rspec with JRuby 1.7
  • JRUBY-6739 Does not read UTF-16 properly
  • JRUBY-6740 BasicObject.respond_to? raises a “undefined method `respond_to_missing?'”
  • JRUBY-6741 Inconsistent == on java.lang.Integer between Mac and RedHat Enterprise Linux
  • JRUBY-6742 ant dist aborts on non-Mac hosts
  • JRUBY-6745 ClassCastException calling Fixnum#== with a Java Integer
  • JRUBY-6746 OpenSSL ‘connect_nonblock’ missing/broken in 1.6.7 and

New in JRuby 1.6.8 (Sep 19, 2012)

  • Updated to RubyGems 1.8.24
  • Fixed a resource leak in LoadService
  • No more accidental GC of runtime state in unusual situations
  • Various 1.9 compability fixes

New in JRuby 1.6.7.2 (May 2, 2012)

  • Update to Rubygems 1.8.24

New in JRuby 1.6.5 (Oct 28, 2011)

  • Many –1.9 encoding issues resolved
  • .jrubyrc support for storing convenient execution options
  • New cext.enabled property to turn off only C extentions but not native support
  • C extension support now uses less memory
  • Updated to Rubygems 1.8.9
  • -rjruby/thread_dump adds a USR2 Ruby thread dumper
  • Improved peformance interacting directly with Java Maps
  • Improved fiber performance and support for JVM coroutines
  • Improved zlib support
  • Issues Resolved:
  • JRUBY-5324 StringScanner should be 1.9 aware
  • JRUBY-5499 Update to rubygems 1.5.2 since 1.5.0 has severe bugs
  • JRUBY-5735 I18n handling of Rails 3.0 differs between 1.9 and 1.8 compatibility mode
  • JRUBY-5758 bundler not working in jruby 1.6.1 (ruby-1.9.2-p136) — works in 1.8 mode
  • JRUBY-5763 Encoding::CompatibilityError with UTF-8 encoded ERB template
  • JRUBY-5778 net http and gzip decompression in 1.9
  • JRUBY-5793 java.lang.ArrayIndexOutOfBoundsException installing chicken_little gem
  • JRUBY-5794 1.9: Bundler fails to install certain gems from github
  • JRUBY-5861 Installing gems that have unicode characters in the gemspec cause an error in 1.9 mode
  • JRUBY-5885 java.util.Map#[]= is up to 20 times slower than #put
  • JRUBY-5927 JRuby in 1.9 mode fails text-hyphen’s test/test_bugs.rb the same way that 1.8 mode does
  • JRUBY-5946 IO.select is returning write array with nil elements
  • JRUBY-5994 Bad performance using hash accessors on ConcurrentMap
  • JRUBY-6017 Undocumented windowBits feature of Zlib::Infrate/Deflate
  • JRUBY-6019 A Ruby instance is not fully unregistered from the BeanManager on teardown
  • JRUBY-6030 After calling const_set, setting const name didn’t set Class.name
  • JRUBY-6031 ActiveRecord::JDBCError in JRuby 1.6.4
  • JRUBY-6034 NullPointerException at RubyProc.java:248
  • JRUBY-6036 REXML fails on XML with UTF-8-chars on jruby in 1.9-mode
  • JRUBY-6049 Bignum#[] returns an incorrect result when Bignum is given
  • JRUBY-6050 Fixnum#[] blows when small Bignum is given
  • JRUBY-6053 [1].pack(“b2”) returns an 1-length string
  • JRUBY-6060 NKF converts strings into wrong encoding
  • JRUBY-6064 Builder gem incompatible in –1.9 mode
  • JRUBY-6070 TCPSocket#new issues with local_addr and local_port
  • JRUBY-6075 ant dist fails on both master and jruby-1_6 branches
  • JRUBY-6077 Allow loading a Ruby source file from the class path using the fully qualified name
  • JRUBY-6079 gherkin.lexer.LexingError running cucumber example i18n/it jruby using compatibilty mode 1.9
  • JRUBY-6101 JSR 223 code execution breaks with JRuby 1.6.4/1.6.3 with no error message
  • JRUBY-6108 bin/jruby script has incompatible bourne shell syntax
  • JRUBY-6116 Errors on String#lines
  • JRUBY-6118 Dir.glob duplicate folder names
  • JRUBY-6135 CASEFOLD systems magically screw up globs with . or .. in them
  • JRUBY-6139 JRuby 1.9 mode encoding problem on to_yaml method
  • JRUBY-6141 All MatchData objects resulting from an invocation of String#scan are updated with the current match
  • JRUBY-6144 1.9 RubySpec failures on BEGIN

New in JRuby 1.6.3 (Jul 29, 2011)

  • Notable Changes:
  • 1.9 language and core class fixes
  • Ruby object construction performance boost
  • Require performance improvements
  • Windows native exec fixes
  • Issues Resolved:
  • JRUBY-2457 Instantiation of Ruby subclass of Java class does incorrect constructor argument check
  • JRUBY-5511 1.9: Failing character iteration specs for StringIO in 1.9 mode
  • JRUBY-5669 RubySpec: String#strip failures (1.9 mode)
  • JRUBY-5716 Enumerable should provide each_with_object
  • JRUBY-5719 Trivial patch to bin/jruby to allow spaces in the path
  • JRUBY-5722 Duplicate class definition issue in 1.9 mode
  • JRUBY-5724 jrubyc generates classes with the wrong names
  • JRUBY-5743 Build fails to run on OpenJDK build on OS X 10.6
  • JRUBY-5768 apparent bug in mkmf logic
  • JRUBY-5773 assignment in a method with default argument strip off other arguments.
  • JRUBY-5807 1.9: String.rstrip brokes UTF-8 string.
  • JRUBY-5813 FFI::AutoPointer occasionally calls releaser proc when GC’d, even if autorelease is set to false
  • JRUBY-5820 HashMap#map does not splat the arguments to the block
  • JRUBY-5824 exec(env, command) and Process.spawn(env, command) throw Errno::ENOENT exception
  • JRUBY-5827 FFI enum always maps the value 0
  • JRUBY-5828 FFI Structs no longer support bools
  • JRUBY-5833 $LOAD_PATH scanning slowness
  • JRUBY-5835 ruboto: File#read fails with jruby-jars-1.6.2
  • JRUBY-5837 Building jruby in git-free environment fails
  • JRUBY-5839 Enumerable#map is picky about it’s internal block arguments in –1.9 mode
  • JRUBY-5840 Rails won’t start with -X+C
  • JRUBY-5841 Call to ScriptingContainer#setCurrentDirectory is ignored after a call to ScriptingContainer#put
  • JRUBY-5844 jruby -x (executing ruby embedded into a message) fails
  • JRUBY-5849 make JAVA_VM to be set from environment
  • JRUBY-5850 jruby –1.9 : Exception in thread “RubyThread-1: threadtest.rb:1” java.lang.LinkageError: loader (instance of org/jruby/util/JRubyClassLoader): attempted duplicate class definition for name: “threadtest$block_0$RUBY$true?”
  • JRUBY-5853 Added WIN32OLE_EVENT#off_event
  • JRUBY-5854 conflicting license info in FFI
  • JRUBY-5856 CLONE -Kernel.exec will not use a modified ENV PATH to locate commands on Windows
  • JRUBY-5857 Should not be able to set ENV keys that contain an =
  • JRUBY-5863 Named captures cause crash when there is no match
  • JRUBY-5864 jruby bash scripts do not work with msys/mingw
  • JRUBY-5871 java.lang.NegativeArraySizeException from RubyEnumerator (after JITed)
  • JRUBY-5875 extending Struct and override initialize would make Marshal fail
  • JRUBY-5878 Enumerator.map is not yielding all values
  • JRUBY-5883 Hash Subclass#== not respected when checking equality of collections.
  • JRUBY-5887 Strange error in classloader
  • JRUBY-5888 missing File#readbyte
  • JRUBY-5889 Problem running JRuby 1.6.2 (via jruby-jars.gem) on 32-bit Systems
  • JRUBY-5900 java.lang.ClassFormatError: Invalid method Code length

New in JRuby 1.6.2 (May 25, 2011)

  • Notable Changes:
  • YAML problem generating an ArrayIndexOutOfBounds Exception JRUBY-5581
  • Java names of the form getX were not getting aliases of get_x, x (regression)
  • A couple of embedding errors (JRUBY-5734, JRUBY-5635)
  • A few 1.9 issues resolved
  • 1.6.2 Issues Resolved:
  • JRUBY-5805 Kernel.warn should use 2 writes instead of 1 puts
  • JRUBY-5802 Problem loading yaml string in 1.9 mode with JRuby 1.6 and newer
  • JRUBY-5791 rvm install jruby-head rewrite’s the current rakes hash-bang invocation to be: #!/usr/bin/env jruby
  • JRUBY-5788 Java names with only on capital letter not getting Ruby shortcuts defined
  • JRUBY-5787 ConcurrencyError from Array#choice when the Array was truncated before
  • JRUBY-5786 SelectorPool file descriptor leak
  • JRUBY-5776 secure_random.rb broken on jruby (RangeError: bignum too big to convert into ‘long’)
  • JRUBY-5769 SSH connection can fail unpredictably
  • JRUBY-5762 Proc#=== is not same as Proc#call in 1.9 mode.
  • JRUBY-5740 zip with Range argument does not work in 1.9 mode
  • JRUBY-5734 Repeatedly getting ScriptEngine causes (NameError) uninitialized constant #::ARGV
  • JRUBY-5733 String#unpack: @ directive doesn’t work on substrings
  • JRUBY-5729 Process.respond_to?(:fork) must return false
  • JRUBY-5728 Array#pack is no longer threadsafe
  • JRUBY-5712 Threading issues in 1.6.0 and 1.9 mode
  • JRUBY-5689 Regression: wrapException throws unexpected exceptions depending on previously-run code
  • JRUBY-5674 Cannot override Fixnum operators
  • JRUBY-5665 RubySpec: String#scan failures
  • JRUBY-5635 ScriptingContainer.put() does not always work (race condition?)
  • JRUBY-5624 Class.new { p eval(“self”, binding) }
  • JRUBY-5606 asprintf does not exist on Solaris, so C extensions do not build
  • JRUBY-5581 gem install throws java.lang.ArrayIndexOutOfBoundsException
  • JRUBY-4828 Null-byte vulnerability