JRuby 1.1.4 Released


It’s late and I don’t have time to write something witty about this. This is the release announcement:

JRuby 1.1.4 is the fourth point release of JRuby 1.1.  The fixes in this
release are primarily obvious compatibility problems and performance
enhancements.  Our goal is to put out point releases more frequently for
the next several months (about 3-4 weeks a release).  We want a more
rapid release cycle to better address issues brought up by users of JRuby.

Highlights:

– Massive refactoring of Java integration layer
– 2-20x speed up of most features (calls, construction, arrays)
– Many long-standing Ruby/Java interaction bugs fixed
– Existing features made more consistent, reliable
– Closures can be passed as interface to static methods, constructors
– Java exceptions can be raised/rescued directly from Ruby
– Massive memory efficiency improvements (a lot less GC)
– Beginning of Ruby 1.9 support (enabled with –1.9 flag)
– Native complex/rational
– Additional efficiency, performance work in the interpreter
– Memory leak under –manage repaired
– FFI subsystem for calling C libraries
– syslog module from Rubinius is working and included
– win32 API support started
– Thread pooling improved (at least one production user now)
– Array concurrent-access improvements
– 72 issues resolved since JRuby 1.1.3

Issues fixed:
JRUBY-231        Provide attr_reader, attr_writer, and attr_accessor for JavaBean style getters & setters
JRUBY-1183     New closure conversion should prefer methods with convertable args over those without
JRUBY-1300     Masquerading of native Java exceptions
JRUBY-1326     Error invoking overloaded Java constructor
JRUBY-1562     Declaration of certain method name (setJavaObject(Xxx x)) will throw an exception using BSF
JRUBY-1615     Raising java exceptions from ruby causes TypeError
JRUBY-1707     Unable to raise Java exceptions of derived types
JRUBY-1735     Java Integration wraps to much
JRUBY-1839     closure conversion fails for blocks
JRUBY-1964     Determine what test/specs are needed to be written in order to refactor java integration post 1.1
JRUBY-1976     Working with JavaMethods doesn’t work.
JRUBY-2136     $VERBOSE = true; require ‘tmpdir’ gives non-fatal Java exception
JRUBY-2192     YAML parser does not appear to deserialize object types.
JRUBY-2204     Syslog module is not available for JRuby
JRUBY-2236     NPE in isDuckTypeConvertible
JRUBY-2287     Storing ruby objects in java classes instances
JRUBY-2377     Wrong line numbers for ArgumentError for Java calls
JRUBY-2429     Cannot Catch Core Java Exceptions From JRuby Internals in Ruby Code
JRUBY-2439     Trying to subclass a Java class from a signed .jar will crash on you.
JRUBY-2449     Implement closure convention for static java methods
JRUBY-2561     JavaField.set_value(foo, nil) breaks
JRUBY-2673     Java exceptions do not return the wrapped exception when getStackTrace is called
JRUBY-2680     When JIT Compiler compiles the append_features in the ruby\site_ruby\1.8\builtin\javasupport\proxy\interface.rb the compiled code slows down by a factor of 10
JRUBY-2741     OSGify jruby.jar in the release jruby distribution
JRUBY-2749     Make RaiseException show the exception message and the Ruby stack trace
JRUBY-2803     Bad performance calling Java classes
JRUBY-2823     Can’t reference Java’s constants that start with a lower case character
JRUBY-2828     Rational#% differs from MRI when argument is negative
JRUBY-2843     Issues with BasicSocket#close_read
JRUBY-2847     A non-existant jar + dir on the load path causes require to error
JRUBY-2850     In some cases, reopened Java objects cannot find methods on Ruby objects subclassed from Java
JRUBY-2854     AST offset error for StrNode and DStrNode
JRUBY-2857     Coercion error with public member variables
JRUBY-2863     Nested Interfaces can’t find the correct method when Java calls Ruby
JRUBY-2865     Can’t extend a class in default package
JRUBY-2867     Wrong overloaded Java method called when both int and float signatures exist
JRUBY-2869     IO.select fails to block with nil timeout
JRUBY-2870     [REGRESSION] Converting a Ruby array to a Java array (of Object references) broken
JRUBY-2872     JSpinner cannot accept Fixnum for it’s value
JRUBY-2873     FFI needs a way to specify call convention
JRUBY-2874     TCPSocket#new and TCPServer#new crash JRuby when the specified port is out of range (negative or bigger than 65k)
JRUBY-2879     net/ftp library is broken if mathn is also loaded
JRUBY-2880     Regression: 17 new RubySpec failures and 3 unit tests falirues caused by r7327 (Array changes)
JRUBY-2881     JAVA_HOME with () breaks JRuby on windows
JRUBY-2882     Incorrect subclass for constructor arg throws internal JRuby error
JRUBY-2886     Extending a final Java class should be rescuable as a normal Ruby exception type
JRUBY-2890     UDPSocket.recvfrom should block until something is available
JRUBY-2891     UDPSocket.bind throws a Java Error when already bound on Java 5
JRUBY-2892     JRuby releases use random copies of joni svn HEAD
JRUBY-2893     mspec runs need to pass properties through -T argument for compilation, etc
JRUBY-2894        When spec runs fail, Ant is not terminating with a failure message
JRUBY-2899     Using JavaEmbedUtils.rubyToJava causes problems when passing RubyObject-derived parameters back in to Ruby code
JRUBY-2903     Allow implementing Java interfaces with underscored method names
JRUBY-2905     NoMethodError does not give a useful message when thrown in BSF
JRUBY-2906     IOError message is garbled when java.io.IOException message is multi-byte character.
JRUBY-2907     method_missing invocation paths end up boxing arguments twice, among other inefficiencies
JRUBY-2910     Object#send is not specific-arity
JRUBY-2915     Exception construction performance is poor
JRUBY-2918     jruby 1.1.3 + activescaffold 1.1.1 generating RJS error
JRUBY-2919     Time.-(Time) does not include microseconds and is off by 10
JRUBY-2923     Eliminate (unknown) from trace elements
JRUBY-2924     JMX support added leaks memory like crazy
JRUBY-2927     Calling interface method on specific instance from Java doesn’t work.
JRUBY-2928     Same issue with hashCode and toString for Interfaces.
JRUBY-2929     Java Integration with regards to arrays of classes are broken
JRUBY-2931     Templater error causes merb-gen (0.9.4 and trunk) to fail on JRuby 1.1.3
JRUBY-2932     Move static soft reference timezone cache to be runtime-specific cache to remove complexity of dealing with soft references
JRUBY-2938     Calling JavaUtil.convertJavaToUsableRubyObject throws AssertionError
JRUBY-2943     Memory leak in closure coercion
JRUBY-2944     Java caller gets null when calling a method on a Ruby object implementing an interface method declared to return Object[], and the Ruby object returns an array of Ruby objects subclass of Hash converted with #to_java
JRUBY-2946     New invokers attempt to access argument list of non-overloaded methods with incorrect arity
JRUBY-2947     Multidimensional array conversion broke in recent Java integration refactoring

Not too bad, is it? Now go find out more at http://www.jruby.org, and download at http://dist.codehaus.org/jruby/