JRuby 1.7.5 Released

Monday, October 07 2013

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

JRuby 1.7.5 is our fifth 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.

This release is a special point release in that it is the last point release before we move JRuby 1.7.x onto a maintenance branch. At this point we will put out more releases of 1.7.x based on bug reports, but a bulk of our effort will change to work on the next major version: JRuby 9000.

We fixed a number of issues with JRuby’s support for invokedynamic, but due to increased memory requirements and some lingering issues we have opted to leave it disabled until Java 8 (due in March). Users willing to bump up memory use (PermGen, specifically) can still enable invokedynamic via -Xcompile.invokedynamic=true. We also encourage users to try their apps on early access builds of Java 8.

This summer, the JRuby team and our community members mentored ten students on a wide range of projects as part of Google’s Summer of Code 2013.. We would like to thank Asakawa Ryu, Benoit Daloze, Chamila Wijayarathna, Devwrat More, Eric West, Faraaz Ismail, Kumar Sukhani, Maximilian Konzack, Matthew Getch, and Tobias Pfeiffer for participating and congratulate them on their excellent work.

From this point forward, all users should report issues on our https://github.com/jruby/jruby project site. You can also just go to https://github.com/jruby/jruby/issues.

Changes of note:

  • 243 issues fixed for 1.7.5
  • Compatibility
    • Many many encoding/M17n issues resolved.
    • Improved transcoding support
    • Fiber fixes
    • Ripper support
  • Performance
    • Faster pathname implementation
    • Faster date/time implementations
    • Improved call performance for magic globals ($~ and $_)
    • Block/proc creation and dispatch performance improvements
  • Moved build to Maven from Ant. See BUILDING.md.
  • Updated RubyGems to version 2.1.5
  • Moved several standard libraries out as default gems

Jira Issues resolved for 1.7.5

  • JRUBY-7101 - BigDecimal / <float between 0 and 1> => Infinity
  • JRUBY-6409 - Open3.popen3(...) is broken in 1.9 mode
  • JRUBY-6874 - Successive writes to SSLSocket are not read
  • JRUBY-7190 - Incorrect encoding on result string read from File introduced in JRuby 1.7.4
  • JRUBY-7151 - Array#drop fails for arrays containing floats in 1.8 mode
  • JRUBY-6996 - jirb tab completion not working in Windows
  • JRUBY-7095 - Time overflowing since 1.7
  • JRUBY-7173 - IO#stat from IO.pipe didn't work
  • JRUBY-7148 - Division with BigDecimal not working
  • JRUBY-7167 - Regexp match not thread safe when called in a lambda
  • JRUBY-7176 - "org.jruby.RubyNil cannot be cast to org.jruby.RubyMatchData" in multithreaded program
  • JRUBY-6763 - Incorrect handling of arguments by method object
  • JRUBY-7149 - Socket information is wrong with IPv6
  • JRUBY-7185 - IllegalArgumentException when converting to utf-16
  • JRUBY-7007 - Inconsistent String#encode behavior for binary to UTF-8 conversion
  • JRUBY-7142 - failed to load valid utf-8 yaml file
  • JRUBY-6994 - exec() in chdir block doesn't inherit cwd
  • JRUBY-5290 - Thread#priority= resets negative values to 1
  • JRUBY-7056 - Thread#backtrace sometimes reports backtrace for wrong thread
  • JRUBY-7188 - Nested Fibers in 1.7.4 incorrectly raises error - resuming fiber from different thread
  • JRUBY-7054 - NullPointerException in Thread#backtrace for adopted(?) Java threads
  • JRUBY-7195 - REXML gives 1 character strings BINARY text encoding
  • JRUBY-7172 - Java::JavaLang::NullPointerException when calling super in method in duped module included in subclass
  • JRUBY-7166 - invalid multibyte char (UTF-8) caused by '\’'
  • JRUBY-7189 - invalid byte sequence in US-ASCII
  • JRUBY-7013 - JDK8 CHM incompatibility

Github Issues resolved for 1.7.5

  • #1078 - Delegate does not pass block through when object does not implement method
  • #1076 - Enumerator lifecycle needs a test
  • #1075 - Fiber finalizer fix
  • #1072 - Latest 1.7.5 snapshot breaks DateTime + method
  • #1071 - Lots of already initialized errors from jruby-openssl
  • #1065 - Valid DateTime treated as invalid
  • #1054 - Fixes for keyword argument handling
  • #1053 - Remove the special invokedynamic default case for IBM J9
  • #1049 - [2.0] Incorrect arity checking for methods with kw arguments
  • #1047 - Passing nil as the value of a keyword argument causes JRuby to act as if there were no such keyword argument
  • #1046 - profile output in json
  • #1041 - JRuby inlining causes bugged behavior (Regexp globals)
  • #1038 - jruby-jars missing from http://ci.jruby.org/snapshots/master/
  • #1034 - Disable invokedynamic for Java 7
  • #1029 - Fix italics syntax in BUILDING.md
  • #1022 - Fix string representation of an Edge object
  • #1020 - Begin fixing osgi metadata for maven build
  • #1019 - some version updates
  • #1017 - Capistrano Issue
  • #1015 - Deadlock occurs on Thread.kill
  • #1014 - memory increase needed when using jruny-head jdk7u40 +indy
  • #1012 - com.github.jnr:jnr-posix:jar:3.0.1-SNAPSHOT needs a release
  • #1009 - jruby master gem install jasmine-core does not work
  • #1008 - StringIO doesn't work with frozen strings in 1.7.5.dev
  • #1007 - NPE loading Rails console
  • #1006 - Can't require jars with leading underscores
  • #1005 - Application failure after updating to Java 7u40 with invokedynamic
  • #1004 - ArgumentError: wrong number of arguments calling `eql?` (1 for 0)
  • #1002 - Update to RubyGems 2.1.2
  • #1001 - dist artifacts must not install jruby-launcher
  • #1000 - NullPointerException bug: openssl.Digest
  • #998 - 1.7.5.dev: error for rake spec for shoes4 (bundler/setup IllegalAcceError to_path)
  • #996 - IR Event Handling
  • #995 - YAML file fails to load if JVM character set is MS932 (common on Windows)
  • #993 - Can't require in two threads at once in JRuby 1.7.5.dev
  • #992 - BigDecimal#* returns Float (should be BigDecimal)
  • #990 - Dist archive must use jruby.bash instead of native binary for bin/jruby
  • #989 - Pathname#realpath is returning a String instead of a Pathname
  • #988 - Fix failing time tests
  • #982 - Document the purpose of `localrepo`
  • #979 - Always compute Enumerable#count through enumeration for 1.9+
  • #977 - rspec refactor for ffi to use expect inspite of should to make it better
  • #972 - Package jay/yydebug should only be in jruby-core not jruby-stdlib
  • #970 - Ruby 2.0 parser doesn't intern symbol strings in literal symbol array
  • #968 - Re factor compiler specs to use 'let','match_array','expect',be_nil'
  • #966 - use expect instead of should in rspec
  • #961 - Comma in the file name results in JIT compile error
  • #960 - remove rspec should also use let for input stream
  • #959 - [jruby-jars gem] lib/jruby-jars.rb not same as source, and fails to load "jruby-jars/version"
  • #955 - Bug with RubyRegexp when pass it a block.
  • #954 - JIT-compile methods named 'none'.
  • #953 - .jrubyrc file not supporting `cext.enabled=true`
  • #950 - ThreadGroup#enclose does not guard against thread addition
  • #949 - jruby --properties generates confusing comments in .jrubyrc
  • #948 - Test failures in the MRI 1.9 suite (Time class) when TZ is set
  • #945 - In Ruby 2.0, String#lines returns an Array, rather than an Enumerator
  • #944 - Add RVM step to build instructions
  • #943 - Fix typo in testing documentation
  • #941 - Enumerator#inject() is broken
  • #939 - Marshal load loses correct encoding for string subclass
  • #937 - Strange (JIT?) behaviour causing assignment function to be called twice in Rails
  • #936 - sprintf formatting with "%+.2d"
  • #935 - incompatible character encodings: ASCII-8BIT and UTF-8
  • #934 - rubygems version with jruby does not obey 'no_proxy' ENV
  • #928 - More arg-handling improvements for Enumerables
  • #927 - super inside def self.new behaves incorrect when called via alias
  • #923 - Document --2.0 flag.
  • #922 - Enumerator#count returns nil
  • #919 - JRuby cannot decrypt a private key using the AES-256-CBC cipher
  • #917 - Scheduler for controlling the Execution of IR Passes
  • #912 - dist and jar-complete targets
  • #907 - add the latest gems version in pom file
  • #905 - IR Specs broke because use of Ruby 1.9 Hash syntax. Fixed it by using 1.8 Hash syntax
  • #904 - Custom spec helpers for IR specs related to Vertex.java
  • #902 - Time zone conversion overflow
  • #898 - More arg handling fixes for Enumerable methods
  • #897 - Convenient debug flags for IR
  • #896 - upgrade gems version in pom file
  • #894 - Fix a naming conflict jrubyc can introduce in generated java.
  • #893 - Use rspec opts for IR specs
  • #892 - Added flag for IR visualizer
  • #890 - Date library using Joda-Time (v2)
  • #889 - Don't overwrite rspec_opts. Instead of that append to it.
  • #888 - Add index/rindex to java lists (java.util.List)
  • #887 - Update site with developer, license, CI info. Update some deps and plugins.
  • #886 - String#byteslice can raise an inappropriate ArrayIndexOutOfBoundsException
  • #884 - More IR Specs related to Vertex.java
  • #883 - Upgrade RSpec to latest version
  • #882 - Date library using Joda-Time
  • #881 - String#encode with undef replace options problem
  • #880 - Fix parent hierarchies and plugins for the 'all' profile
  • #878 - Fix Unmarshaling of Date objects marshaled with MRI 1.9+
  • #877 - Issues generating checkstyle report
  • #876 - bin/ast Add of IR Debugging Features
  • #875 - Maven site can now be published to github pages
  • #874 - Add javafx as predefined package for java 8
  • #873 - script with long DATA block hangs
  • #872 - NameError is thrown by method_missing when using self
  • #869 - Customize checkstyle to make it more lenient.
  • #867 - Use <dependencyManagement> for junit. Updated other deps.
  • #866 - Separated the two comparison cases by parenthesis and added explanation
  • #865 - Use <pluginManagement> in parent pom so that all plugins (and their versions) for the project can be centrally managed.
  • #864 - Move Maven site reporting to parent pom. Fixed parent hierarchy.
  • #863 - Direct Memory Buffer Leak in File IO
  • #862 - Compilation with Maven is slow
  • #858 - Interface incompatibility in BiVariableMap on Java 8
  • #857 - Hybrid (native/ruby) pathname library
  • #856 - JRuby 1.7.x String.encode not using Unicode replacement character
  • #854 - Add Maven Site reporting
  • #852 - Fixed a bug in checking the type of edges in EdgeTypeIterator
  • #850 - Added Maven Site reports
  • #849 - Komax refactoring factor methods
  • #848 - Komax codestyle override annotations
  • #847 - Komax codereview
  • #844 - Removed comment about assert[ci skip]
  • #839 - alias_method not preserving UnboundMethod#parameters
  • #837 - Provide a convenient way to incorporate the latest tzdata
  • #835 - method(:require).parameters is [] during Minitest run
  • #834 - Strange defined? error with ::BasicObject
  • #833 - Added Specs for IR and renamed a method in Vertex.java
  • #832 - Restructure openssl artifact to separate out BC jars
  • #831 - readline, openssl jar, yecht in place, copy jlin, bouncy-caster jar into stdlib
  • #830 - RuntimeError: no local gem found for mocha
  • #827 - File::EXCL is not thread safe
  • #826 - Support foo.jar that is linked to extensionless jar files
  • #824 - fix #823
  • #823 - X509Cert.set_serial breaks for Certificate SerialNumbers with MSB=1
  • #822 - fix slice_before on empty enumerable
  • #817 - Fixed JRubyClassLoader to not require protective domain access check
  • #816 - Need to unwrap exception before checking for security exception
  • #815 - Fix enum arg handling in Enumerator Nexter
  • #814 - JRuby 1.7.4 Regression, defined? fails for ::BasicObject
  • #813 - JRuby's Ripper omits the :paren s-expression on method definition
  • #808 - jrubyc: cannot find symbol lockAndRequire
  • #807 - Fix each_with_index argument handling
  • #806 - Chatty output while running RSpec
  • #805 - "ArgumentError: wrong number of arguments calling `const_get` (2 for 1)" for java constants
  • #802 - Weird JIT behaviour causing Rails to fail serving request
  • #801 - Jruby 1.7.4 Timezone is inverted when creating a Time object
  • #800 - Tag unreliable specs unstable rather than fails
  • #798 - Named based constant cache invalidation
  • #797 - Fix for BigDecimal#/
  • #796 - Remove qualified const_get test
  • #795 - Invalidate constant cache if included module has constants
  • #794 - Fix String performance regression
  • #793 - Fix the timezone string parser so it won't choke on TZ=JST-9, etc.
  • #792 - jruby-1.7.3 Timeout is not working with long string and regexp.
  • #788 - jnr-constants update needed for JRuby 1.7.5
  • #787 - All command-line options should be configurable via JVM properties
  • #786 - Pack roundtrip through BER ( w ) yields incorrect type
  • #784 - add typecasting to RTEST macro
  • #780 - Tag intermittent spec failures
  • #775 - IPv4 stack should be preferred to IPv6
  • #773 - Resolv.getaddress fails w/ 'connect: name or service not known' on Windows
  • #772 - BigDecimal#hash returns different value for numerically equal numbers
  • #771 - Checking for size of outgoing and incoming edges of the vertex after removing a single edge
  • #768 - raise ArgumentError when IO.new/IO.open last argument is not a hash or nil
  • #766 - IO.sysopen accepts mode & permission that are nil
  • #764 - add support for options and not truncating offset for IO.write
  • #763 - binwrite should pass write only when options are not empty but don't have a "mode"
  • #760 - Remove a bad assert and untag some tests it was affecting
  • #759 - Implements #614
  • #758 - spec/regression/JRUBY-5811_case_insensitive_loaded_features_spec.rb fails on case-insensitive filesystem
  • #757 - Untag a number of passing specs
  • #756 - String#concat should preserve encoding
  • #754 - Added a missing 'y'.
  • #750 - Fix IOInputStream single-byte read
  • #749 - Fix dash_s_spec
  • #748 - Fix dash_c_spec
  • #747 - 1.7.4 Regression: Time::localtime broken
  • #746 - rake spec:compiler failing since ba4df82
  • #745 - Fix precision issues in Time by avoiding conversions to nanoseconds.
  • #744 - TypeError with Prime.each_with_index and mass assignment
  • #741 - Update OSGi classloader
  • #740 - Make Time#to_date compliant with MRI 1.9-2
  • #739 - Improve GzipReader#gets performance.
  • #738 - Added rake task for running IR specs
  • #736 - Dispatching a string through send to method_missing causes encoding to revert to ASCII
  • #735 - Synchronize profile printing.
  • #734 - Fix RubyString#byteslice on substring.
  • #732 - jline2 bundled jansi needs update after fixing security issue
  • #731 - strftime "-" flag affects more than one field at a time (inconsistent with MRI)
  • #730 - Fixing write specs
  • #727 - Fix string concatenation with a number as per rubyspec behaviour.
  • #723 - IO.copy_stream should handle objects that respond to read or write. Fixes #437
  • #722 - REFACTORING: supporting flag about receiving an offset or not.
  • #702 - Untag passing Marshal.dump specs
  • #694 - Regexp #== and #eql? is true if self does not specify /n option and other does and vise versa
  • #692 - Use hash rather than full sexp for cache key to significantly reduce mem...
  • #690 - Raise a RangeError when codepoint is invalid for the default internal encoding
  • #678 - TempFile#unlink - do not work if #close is not called right before, even if nothing has been done over the file.
  • #652 - BC Date (with ActiveSupport) regression
  • #648 - Division with BigDecimal not correct
  • #644 - Error in Division of BigDecimal
  • #641 - jruby/thread_dump fails in JRuby 1.7.2
  • #640 - Fixing hashing consistency across JVM instances.
  • #631 - About 60 RubySpecs fail if the entire suite is run.
  • #624 - Field annotations
  • #623 - Java classes with signatures should be reified
  • #614 - KindOf implementation using Class.isInstance() instead of instanceof
  • #603 - #caller returns `__send__' as one of the callers
  • #563 - Encoding error when parsing UTF-8 CSV in (1.7.3 - 1.9 mode)
  • #561 - Differences between XML string encoding in MRI and JRuby
  • #520 - New ng.exe required before release
  • #483 - Psych yaml parser can not parse uppercase ÄÖÜ but äöü can parse
  • #474 - YAML weirdness
  • #461 - String#encode hard errors without replacement for ASCII 8-bit range to multibyte
  • #460 - add multiple assignment support to java.util.Collection's Fixes #459
  • #456 - Marshal.load encoding error
  • #415 - Getting this error: "LocalJumpError: yield called out of block"
  • #406 - Gathering global thread backtraces fails often on CentOS with JRuby 1.7
  • #375 - String#encode fails with :invalid => :replace option
  • #332 - Open3.popen3 doesn't return a thread object in jruby 1.7.0-rc1
  • #302 - DRegexp creates too many transient objects
  • #264 - JRuby19mode behavior is different with CRuby. When Enumerator has mulltiple values for a block paramter.
  • #218 - rspec related out of bounds array access in multi-character string splitting
  • #168 - 1.9 mode runs "threaded reverse" bench slower than MRI