JRuby 1.7.4 Released

Thursday, May 16 2013

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

JRuby 1.7.4 is our fourth update release since JRuby 1.7.0. The primary goal of 1.7 point releases is to fill out any missing compatibility issues with Ruby 1.9.3. The community participation lately has been great. Keep reporting issues and sending pull requests.

Changes of note: - 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

Thanks to all contributors for this release:

Alex Tambellini, Andrew Kiellor, Andy Lindeman, Anoop Sankar, Benoit Daloze, Bohuslav Kabrda, Charles Oliver Nutter, Daniel Noll, Dario Bertini, Gino Lucero, Hiro Asari, Iain Barnett, Isaiah Peng, Jake Goulding, James Pickering, Jeff Simpson, John Shahid, Jonathan Adams, Jose Donizetti, Kevin Menard, Mark McCraw, Martin Ott, Matt Wilson, Patrick Mahoney, Prathamesh Sonpatki, Robin Message, Ryan Blue, Sakumatti Luukkonen, Seth Wright, Subramanya Sastry, Sébastien Le Callonnec, Thomas E. Enebo, Uwe Kubosch, Vipul A M, Wayne Meissner, ryenus

Jira Issues resolved for 1.7.4

  • JRUBY-7112 - Fiber exception handling regression in JRuby 1.7.3
  • JRUBY-7121 - String#encode(:xml => :attr) encoding differs from MRI
  • JRUBY-5742 - Fails to use UTF-8 encoded source with BOM.
  • JRUBY-7102 - Time.now == "" should return false and not nil
  • JRUBY-7117 - Dir.foreach should list entries in JAR root and in JAR directories ending in slash like "file:myjar!/test/"
  • JRUBY-7033 - yielding from fiber fails when running jruby with --debug
  • JRUBY-7127 - Ripper bug when parsing "::Object"
  • JRUBY-4820 - [windows] File.size is completely broken on Windows
  • JRUBY-6136 - Changing jnr-posix to use errno() value unconditionally has created lots of failures in windows
  • JRUBY-7122 - File.realpath does not handle classpath:/ path on Windows
  • JRUBY-7157 - IO.copy_stream broken for non-seekable source streams
  • JRUBY-7143 - FileUtils.cp, FileUtils.copy, FileUtils.copy_stream bug on windows when copying from jar files
  • JRUBY-7145 - FileUtils.mkdir_p creates extra directory named after drive letter
  • JRUBY-7161 - NPE in socket connection
  • JRUBY-7113 - Setting ssl_timeout on a Net::HTTP instance throws an exception
  • JRUBY-7130 - Missing support for Time.getlocal(utc_offset) method in JRuby
  • JRUBY-7134 - Dir.exists? sets $! when directory does not exist

Github Issues resolved for 1.7.4

  • #737 - require_relative fails in jars
  • #733 - Inconsistency between MRI and JRuby with begin/rescue/else
  • #729 - Fixing IO.binwrite specs, parsing options.
  • #728 - Refactored directed graph specs
  • #726 - IO.binwrite doesn't truncate the file if an offset is given
  • #725 - IO.binwrite doesn't truncate the file if an offset is given
  • #724 - When offset passed return RandomAccessFile when not return FileOutputStream
  • #717 - Add fails tag to failing Kernel.spawn spec
  • #716 - Add fails tags for Process.{get,set}rlimit
  • #715 - Bignum#/ should not raise ZeroDivisionError if other is zero and is a Float
  • #714 - Some rubyspec additions
  • #712 - Complex#/ with a Numeric which responds to #real? with false should coerce the passed argument to Complex and divide the resulting elements
  • #711 - Exception#== should return true if the two exceptions inherit from Exception but have different classes
  • #709 - NullPointerException on calling java_* methods on java interface impl in Ruby
  • #708 - Fix failing rubyspecs for Encoding#compatible?
  • #707 - Kernel#singleton_methods should return a unique list of methods
  • #706 - Kernel#open should correctly handle objects that responds to to_open
  • #704 - Kernel.exec should raise an ArgumentError if the command includes a null byte
  • #703 - Kernel.abort should set the exception message to the given message
  • #701 - Untag passing Math.cbrt and Math.gamma specs
  • #700 - Numeric#div should raise ZeroDivisionError for 0
  • #699 - Range#each should raise a TypeError if the first element is a Time object
  • #698 - Range#first should raise an ArgumentError when count is negative
  • #697 - Supporting IO.ungetbyte
  • #696 - Regexp#initialize should raise a SecurityError on a Regexp literal
  • #695 - Regexp#options should include FIXEDENCODING and NOENCODING when enabled
  • #693 - using bytelist instead of a linkedlist for a better performance
  • #691 - Implement String#to_sym special cases.
  • #689 - Thread#initialize should raise a ThreadError when already initialized
  • #688 - Fixing IO.ungetc tagged specs!
  • #687 - Time methods should coerce the day, hour, minute, or second with #to_int
  • #686 - jcodings release needed for JRuby 1.7.4
  • #685 - REFACTORING: supporting a list of bytes
  • #684 - Fix some failing rubyspecs for String#encode
  • #683 - Fix unseekable stream implementation of IO.copy_stream in RubyIO.java
  • #682 - Verifying if character is corrupted, meaning that one more char is needed.
  • #681 - Untag passing float rubyspecs
  • #680 - StringIO#puts should print newline when passed nil 1 or more times
  • #679 - StringIO#set_encoding should set the encoding to default external when passed nil
  • #677 - TempFile path consistency vs the rest of the Ruby implementations
  • #676 - Fix eclipse problems
  • #675 - Fix failing rubyspecs for String#unpack
  • #674 - My stab at fixing JRUBY-7122
  • #673 - Remove required argument constraint from StringIO#readpartial
  • #672 - Fix Etc rubyspecs
  • #671 - Untag passing conditional variable rubyspecs
  • #669 - Fix BigDecimal#div rubyspecs
  • #668 - Fix float rounding issues.
  • #667 - Do not display class name for an anonymous struct.
  • #666 - LoadError#path not implemented
  • #665 - NameError for version when loading gemspec in 2.0 mode
  • #664 - GzipReader#rewind should reset the position of the stream pointer
  • #663 - Tempfile#size should return the size of self even if self is closed in 1.9
  • #662 - Add license header to anno package classes.
  • #661 - Bignum failing specs
  • #660 - Fixing IO.foreach rubyspec, set env variable $_ to nil
  • #659 - Ruby 2.0 Compatibility - NET:HTTP
  • #658 - Math.gamma should return -∞ for -0.0
  • #656 - Fix #645 by calling Java Math.cbrt directly.
  • #655 - Io foreach
  • #654 - [FFI] FFI::AutoPointer#free causes FFI::AutoPointer#autorelease? to cast NullPointerException
  • #653 - Ant integration causes exception trace on failed build
  • #651 - Kernel#__dir__ missing from 2.0 mode
  • #650 - File/IO readlines supporting new params limit, and open mode
  • #647 - Using Enumerable#cycle causes a background thread to be created but never destroyed.
  • #645 - Behavior of Jruby Math.cbrt(number) does not match MRI
  • #643 - FIXES #235 Fix for relative require from within a gem on the classpath.
  • #639 - Project files fix
  • #637 - Updated shared module dependencies.
  • #635 - remove double assignment and addition to 0
  • #634 - Implemented OpenSSL::PKCS7::write_smime
  • #630 - [FFI] Struct Arrays behave differently on JRuby vs FFI gem
  • #628 - OpenSSL::TestPKCS12 failure on OpenJDK 6
  • #627 - ant integration breaks with ant 1.9.0
  • #626 - jruby dies with fatal error on jdk8-ea-b83 on ubuntu
  • #622 - Added new option jruby.timeout.thread.pool.max to control the max number...
  • #617 - An object's ID is not copied
  • #615 - Restore $! when catching exception.
  • #613 - Ruby 2.0 caller API
  • #612 - [FFI] FFI::Struct.by_ref mapped type accepts arbitrary structs in it’s #to_native
  • #611 - Timeout worker pool size
  • #609 - Add support for Floats as the first argument in Time.at.
  • #608 - [FFI] FFI::Pointer#slice is not defined
  • #607 - [FFI] FFI::Pointer.size is not defined
  • #602 - RSpec 2.13 doesn't load in 2.0 mode
  • #601 - Ant integration DSL issue
  • #600 - Fixing RubyBasicObject#compareTo bug.
  • #599 - Recursive annotation visiting
  • #595 - Fixing build problem introduced by removing encryption jars
  • #591 - Time.new: the UTC offset is always negative
  • #590 - Consistent hash code values between JVM instances
  • #587 - AIX 6.1: stat.st_gid unsupported or native support failed to load
  • #583 - Method#parameters returning empty array for some Object methods
  • #580 - [windows][jruby-complete] Resolv.getaddress fails
  • #579 - Don't include imports from previously processed ruby files in every generated java file.
  • #578 - Update psych to edf05c9f40e0c566e391f7e04b4a30327c31a828
  • #575 - Require paths with .. in them are not normalized
  • #571 - Fix so require_relative can handle an absolute path.
  • #569 - Ruby 2.0: locations and caller APIs can take ranges now
  • #568 - [Ruby 2.0] Kernel#caller_locations
  • #566 - Ruby 2.0: Range#bsearch
  • #565 - Time.at broken in 1.7.3 when passed (Time, 0)
  • #556 - RbConfig.expand is missing
  • #554 - Fixes issue #549 (OpenSSL sockets spin indefinitely on timeout in handshake)
  • #553 - show build status from travis [ci skip]
  • #552 - Zlib::GzipWriter.wrap in 1.9 mode accepts only one argument
  • #551 - Fi JRUBY-5122_nonblocking_io_spec on Fedora 19 by raising chunk size
  • #550 - JRuby 1.7.3 breaks Sidekiq (DeadTaskErrors on startup)
  • #549 - OpenSSL sockets spin indefinitely on timeout in handshake
  • #546 - Remove unused call to `String#replaceAll()`.
  • #544 - replacing a hash with itself returns an empty hash in ruby 1.9 compatibility mode
  • #539 - Time::new should treat numeric offsets as the GMT offset in seconds.
  • #530 - JRuby is quick to show version number, slow to exit
  • #523 - Java integration failures in 1.9 mode
  • #522 - Generate new empty RubyString's with US-ASCII encoding.
  • #515 - Dir.foreach fails in jar files
  • #497 - JRuby behaves different from MRI and Rubinius when it comes to setting Module#name
  • #471 - File.directory? should handle IO's
  • #405 - jruby-1.7.0 Dir::tmpdir returns current directory if it is not world writable.
  • #189 - OpenSSL::SSL::SSLError when talking to github