JRuby 1.7.1 Released!

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

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

JRuby 1.7.1 is our first 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 feedback we have gotten (along with
patches) has ended up being a subtantial release.

We also addressed security vulnerability CVE-2012-5370 and stopped
using MurmurHash2 as our hashing algorithm (now using same Hashing
algorithm as Perl). All users are recommended to upgrade to JRuby
1.7.1.

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
  • 113 issues fixed since 1.7.0

Jira Issues resolved since 1.7.0

[JRUBY-1608] - STDIN/STDOUT "not a tty" under Kernel.system
[JRUBY-2724] - Can not create Ruby on rails application while

using UNC path folder
[JRUBY-3622] - newInstance and getDeclaredConstructor fail to
respect class overridden in JRuby
[JRUBY-3756] - Jirb terminates immediately if “special character”
encountered
[JRUBY-3786] - RubyGems tests are not green; fix remaining
failures/errors
[JRUBY-3917] - Module#public does not follow method redefinition
[JRUBY-4732] - Clean up anything that calls dataGetStruct on a
wrapped Java object to get the object
[JRUBY-4756] - Interface that has abstract methods final in Ruby
hierarchy break “real class” implementation
[JRUBY-4890] - Unicode characters are lost when embedding JRuby
even if the calling code performs no conversion to byte[]
[JRUBY-5303] - [1.9] Wrong parameters parse for method signatures
with default values
[JRUBY-5323] - control-c in cmd while running webrick rails app
does not kill jruby.exe
[JRUBY-5349] - Process.spawn ignores output params
[JRUBY-5427] - 1.9 mode slower on redblack benchmark than 1.8 mode
[JRUBY-5529] - [1.9] undefined method read_nonblock' for #<OpenSSL::SSL::SSLSocket:0x246adb31> (NoMethodError) [JRUBY-5692] - PDFKit fails on Windows JRuby - IO.popen and Double Quotes [JRUBY-5798] - 'defined?' for constant should not invoke auto-load [JRUBY-5986] - $! is not set to nil in an ensure block where no exception is raised [JRUBY-6025] - Precompiled class raises exception, but in interpreted mode - works well. [JRUBY-6105] - become_java! returns nil for Ruby classes that inherit from Java classes [JRUBY-6126] - [1.9] [RubySpec] In 1.9 mode, for should yield only as many values as there are arguments [JRUBY-6162] - IO.popen doesn't wait until a process ends but returns immediately [JRUBY-6195] - [1.9] Process.spawn (and related methods) ignore option hash [JRUBY-6247] - NULL handling inconsistent with Ruby [JRUBY-6312] - JRuby 1.7 non-indy constant lookup performance has degraded [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 methodwrite_nonblock’ for
OpenSSL::SSL::SSLSocket
[JRUBY-6409] - Open3.popen3(…) is broken in 1.9 mode
[JRUBY-6516] - IO.select times out with ssl connection
[JRUBY-6521] - Invokedynamic leads to unusual errors in RubyGems
dependency logic
[JRUBY-6563] - each_with_index yields invalid values when custom
Enumerable class calls Proc#call
[JRUBY-6581] - “yield called out of block” for Enumerators created
with enum_for
[JRUBY-6610] - JRuby 1.9 mode require does multiple requires and
extra file system searching
[JRUBY-6622] - Unable to Load encrypted Private Key pem file
[JRUBY-6636] - OpenSSL::X509::Certificate and OpenSSL::PKey::RSA
constructors don’t accept File objects
[JRUBY-6656] - JRuby subclass cannot call super with arguments if
parent constructor is varargs
[JRUBY-6673] - MacOS installer is not updated via our build system
and hardcodes version numbers
[JRUBY-6696] - 32 bit jruby cannot run with 64 bit JVM installed
[JRUBY-6699] - OpenSSL::PKey::RSA.new fails on Windows
[JRUBY-6738] - Kernel.load(…, true) --> scope problem
[JRUBY-6744] - We are at p204 but 1.9.3 is only at p194
[JRUBY-6749] - respond_to? caching disabled in 1.9 mode due to
respond_to_missing? logic
[JRUBY-6751] - java_signature does not affect method signature at
runtime
[JRUBY-6758] - Test suite time outs:
org.jruby.test.Batch-With-Multiple-Tests:test_socket
[JRUBY-6763] - Incorrect handling of arguments by method object
[JRUBY-6777] - RubyFixnum.java - two methods fail to detect some
long integer overflows
[JRUBY-6826] - OpenSSL::PKey::RSAError: Neither PUB key nor PRIV
key:
[JRUBY-6841] - State file use in UUID gem causes severe
performance degradation
[JRUBY-6856] - Kernel#system and backquote suppress important errors
[JRUBY-6870] - IO.select says there is data but read_nonblock
raises ‘read would raise’ using SSLSocket
[JRUBY-6887] - Thread.current.object_id inside an Enumerator is
different from outside it
[JRUBY-6891] - SSLSocket.accept forces reverse DNS lookup, not
required for most SSL and sometimes causes very poor performance
[JRUBY-6920] - Regression: test_env precompiled with invokedynamic
[JRUBY-6931] - console outputs in windows are wrong for UTF-8,
windows
[JRUBY-6943] - io/console extension missing in 1.9 mode (jgem push
causes JRuby to fail)
[JRUBY-6944] - JRUBY-6891 Breaks Server Name Indication (SNI)
[JRUBY-6945] - append_features called with non-class
[JRUBY-6949] - system() silently fails when options are passed
[JRUBY-6954] - Time.new does not respect UTC offset in the
7-argument form
[JRUBY-6955] - Cannot define method <=>, get
ClassLoader.java:286:in defineClass': java.lang.NoClassDefFoundError: test$method__3$RUBY$\=\^=\_ [JRUBY-6958] - Cast error inheriting from a Java class with precompile code. [JRUBY-6959] - Cannot meta-program java signature [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 methodverify_mode’ called for
#<OpenSSL::SSL::SSLContext…" error
[JRUBY-6962] - Unimplemented methods OpenSSL::PKCS7#type=,
OpenSSL::PKCS7#add_data
[JRUBY-6963] - PKCS7 structures that have their content
encapsulated in a sequence are not imported correctly
[JRUBY-6964] - DateTime#to_time creates wrong Time objects sometimes
[JRUBY-6966] - Open3.popen3 does not take optional environment
hash as first argument
[JRUBY-6970] - FILE has strange ‘jar:’ prefix when inside a
gem in a jar.
[JRUBY-6972] - system("…&&…") should work in windows
[JRUBY-6973] - Release jruby-openssl-0.8.0 gem
[JRUBY-6974] - Timeout.timeout not working using UDPSocket
[JRUBY-6978] - try/rescue should treat native Exceptions like
rubys StandardError
[JRUBY-6983] - UNIXServer.open ignores the block arg
[JRUBY-6984] - OpenSSL::X509::Name.parse raises NullPointerException
[JRUBY-6987] - Ruboto build failures with recent master
[JRUBY-6994] - exec() in chdir block doesn’t inherit cwd
[JRUBY-6995] - Raising an Exception from #each wrapped in
Enumerator.new results in StopIteration
[JRUBY-6997] - Newline in UTF-16 (BE and LE) incorrect under windows
[JRUBY-6998] - IO::NULL undefined (should be === File::NULL)
[JRUBY-6999] - Encoding from Windows-1252 to UTF-8 results in
transcoding error
[JRUBY-7000] - to_path should be unconditional
[JRUBY-7002] - File.join does not handle ‘’ on Unix systems
properly
[JRUBY-7004] - Implement Etc.sysconfdir and Etc.systmpdir
[JRUBY-7008] - Undefined method `search_convpath’ for
Encoding::Converter:Class
[JRUBY-4739] - Make source dist be inclusive by default so we do
not keep missing new files/folders added to our source tree
[JRUBY-5205] - Make hashy arguments faster
[JRUBY-5620] - Mixed perf on String#to_i versus Ruby 1.9 and
Rubinius
[JRUBY-5799] - InternalJavaProxy needs setInvocationHandler
[JRUBY-5800] - Encapsulate @java_proxy_class computation in
JavaProxy
[JRUBY-6453] - Make String/ByteList creation facilities part of
RedBridge APIs
[JRUBY-6491] - Pushing your changes of Rubygems to Rubygems upstream
[JRUBY-6500] - Compiler improvements
[JRUBY-6643] - jrubyc AOT Java compilation doesn’t identify failure
cause
[JRUBY-6901] - Use Java 7 NIO.2 APIs to implement dir opening
[JRUBY-6905] - JRuby does not warn about assigned but unused
variable
[JRUBY-6935] - Update 1.9 stdlib to p286
[JRUBY-6976] - byte[] should have a to_s method
[JRUBY-4670] - Plug ruby2java java2ruby marshalling
[JRUBY-6466] - externalize build_lib dependencies
[JRUBY-6793] - Update bouncycastle jars to the latest version.
(1.47)
[JRUBY-6873] - jruby-1.7.0.preview2 much slower jruby-1.6.3 (192s
vs.60s)
[JRUBY-6916] - Better support for 64-bit AIX (FFI)
[JRUBY-6982] - Various issues producing an updated JRuby package for
Fedora

Github Issues closed since 1.7.0:

#404 Use canonical_name instead of full_name
#400 Update 'json' library.
#398 JRuby 1.7.0 unix sockets - 100% CPU - worked in preview2
#390 New FFI::IO.for_fd fails on Linux (and possibly other 

platforms)
#207 JRuby 1.7 Bundles Invalid Bouncy Castle Security Provider
openssl
#198 Inheriting from BigDecimal returns incorrect class
#349 Improved support for Server Name Indication (SNI)
#178 JRUBY-2724: I’ve added some tests and I tried to fix unc
pathing
#326 JSON format profile printer (additions)
#313 Math.atan 0.0/0.0 core

Whooooops…Jira lied to me and by extension to you all. We only
fixed 33 issues in our Jira Issues. This has been corrected on
jruby.org and here is the real quite a bit shorter list:

[JRUBY-5529] - [1.9] undefined method `read_nonblock' for

#OpenSSL::SSL::SSLSocket:0x246adb31 (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
#<OpenSSL::SSL::SSLContext…" error
[JRUBY-6962] - Unimplemented methods OpenSSL::PKCS7#type=,
OpenSSL::PKCS7#add_data
[JRUBY-6963] - PKCS7 structures that have their content
encapsulated in a sequence are not imported correctly
[JRUBY-6964] - DateTime#to_time creates wrong Time objects sometimes
[JRUBY-6978] - try/rescue should treat native Exceptions like
rubys StandardError
[JRUBY-6983] - UNIXServer.open ignores the block arg
[JRUBY-6984] - OpenSSL::X509::Name.parse raises NullPointerException
[JRUBY-6987] - Ruboto build failures with recent master
[JRUBY-6994] - exec() in chdir block doesn’t inherit cwd
[JRUBY-6995] - Raising an Exception from #each wrapped in
Enumerator.new results in StopIteration
[JRUBY-6997] - Newline in UTF-16 (BE and LE) incorrect under windows
[JRUBY-6998] - IO::NULL undefined (should be === File::NULL)
[JRUBY-6999] - Encoding from Windows-1252 to UTF-8 results in
transcoding error
[JRUBY-7000] - to_path should be unconditional
[JRUBY-7002] - File.join does not handle ‘' on Unix systems
properly
[JRUBY-7004] - Implement Etc.sysconfdir and Etc.systmpdir
[JRUBY-7008] - Undefined method `search_convpath’ for
Encoding::Converter:Class
[JRUBY-6935] - Update 1.9 stdlib to p286
[JRUBY-6976] - byte[] should have a to_s method