[ANN] JRuby 9.2.0.0 is released!

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

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

JRuby 9.2.x is our new major version of JRuby. It is expected to be
compatible with Ruby 2.5.x and stay in sync with C Ruby. JRuby 9.2.0.0 is
our first release for 2.5 support.

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:

  - 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

···

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