Blog

Blog

JRuby 1.0.2 Released

The JRuby community is pleased to announce the release of JRuby 1.0.2.

Homepage: http://www.jruby.org/
Download: http://dist.codehaus.org/jruby/

JRuby 1.0.2 is a minor release of our stable 1.0 branch. The fixes in this
release include primarily obvious compatibility issues that we felt were
low risk. We periodically push out point releases to continue supporting
production users of JRuby 1.0.x.

Highlights:
- Fixed several nasty issues for users on Windows
- Fixed a number of network compatibility issues
- Includes support for Rails 1.2.5
- Reduced memory footprint
- Improved File IO performance
- trap() fix
- 99 total issues resolved since JRuby 1.0.1

Special thanks to the new JRuby contributors who rose to Charlie's challenge
to write patches for some outstanding bugs: Riley Lynch, Mathias Biilmann
Christensen, Peter Brant, and Niels Bech Nielsen.  Welcome aboard...

JRUBY-413       Thread does not define an allocator, and does not respond properly when an attempt is made to Marshal it
JRUBY-905     Thread context classloader should not be saved
JRUBY-1005     Array#pack fails for Q/q directives
JRUBY-1023     File.new does not support 3rd form (file descriptors)
JRUBY-1042     Array block args not expanded when calling explicit block argument
JRUBY-1043     Java proxy InvocationHandler's parameterTypeCache should be thread-safe
JRUBY-1049     IO.open not defined
JRUBY-1053     Rubinius class_spec failures
JRUBY-1066     Rubinius core/struct_spec failures
JRUBY-1070     Rubinius language/method_spec failures
JRUBY-1085     gem install rails results in OutOfMemoryError
JRUBY-1111     ARGV not defined when running ruby scripts via BSF
JRUBY-1121     rake hangs
JRUBY-1123     missing encoding attribute
JRUBY-1125     Weird NPE when ObjectSpace._id2ref called for GC'ed object in conditional statement
JRUBY-1129     net/imap failes with parser errors
JRUBY-1139     NPE on unmarshalling new-style "user"-marshalled class
JRUBY-1144     rails script shebang line causes incorrect interpretation
JRUBY-1160     jruby.bat parses argument with "=" incorrectly
JRUBY-1191     method() on alias calls wrong super (but not in our opinion)
JRUBY-1219     Japanese problem in YAML
JRUBY-1229     require throws a LoadError when Jar has a null Manifest
JRUBY-1231     File.directory?('') should return false
JRUBY-1236     Regexp : yet another regular expression diff from MRI
JRUBY-1238     Make Frame#getName and Frame#getPosition public
JRUBY-1242     ClassCastException: org.jruby.ast.NthRefNode w/match variables used as #$1 in here document in string substitution
JRUBY-1243     Module#class_variable_defined? not defined.
JRUBY-1246     Base64Coder#encode(String) has a problem.
JRUBY-1262     RbConfig is not defined
JRUBY-1269     probable bug in ObjectSpace::define_finalize
JRUBY-1274     YAML.dump requires second argument to .respond_to? :write
JRUBY-1275     Java integration violates Module#name contract (reduction of jirb issue)
JRUBY-1286     'Thread.main.exit!' and/or 'Kernel.exit!' does not work under certain circumstances
JRUBY-1287     ant dist is putting unneeded files in resulting zip and tar files
JRUBY-1289     JRuby fails if assertions are enabled
JRUBY-1290     DRb fails to bind to socket: Address in use (Errno::EADDRINUSE)
JRUBY-1295     Invalid instance/class variable and constant names may be set
JRUBY-1302     Intermittent Mongrel failures with "uninitialized constant Errno::ECONNABORTED"
JRUBY-1306     Java 6-based chmod reverses logic for readable and writable
JRUBY-1308     File.new using File::CREAT should imply reading, not writing
JRUBY-1315     'system', 'popen', etc... with spaces in path of jruby does not work system('"C:/foo bar/har har/bin/jruby" doSomething.rb')
JRUBY-1317     Heredocs ending in non-curly expansion do not include final newline
JRUBY-1318     :$`, :$&, :$\, :$+ goes boom
JRUBY-1321     any tab completion after typing object name that doesn't exist folled by a "." crashes jirb
JRUBY-1331     YABAB - Yet Another Block Argument Bug
JRUBY-1333     unpack(M*) does not read encoded value if it is last in the packed value
JRUBY-1334     Iconv exceptions end up exceptioning out during their creation
JRUBY-1335     "gets" method in jirb does not echo to stdout
JRUBY-1336     unpack(M) loses last character
JRUBY-1337     Fix broken unit tests in mri/externals/stringio/test_stringio.rb
JRUBY-1339       Constants nested in a Module are not included
JRUBY-1343     Signal#trap doesn't work
JRUBY-1347     wrong algorithm in _jrubyvars.bat to set the classpath for jruby
JRUBY-1348     gem installation does not set executable rights correctly
JRUBY-1350     CLASSPATH environment variable increases exponentially in _jrubyvars.bat
JRUBY-1353     newSymbol symbolid's make 1.to_sym, etc... give weird answers
JRUBY-1367     rev 4315 changes to _jrubyvars.bat breaks jruby
JRUBY-1368     Attempting File.open('foo', 'w') when './foo' is a directory raises Errno:ERNOENT, but should raise Errno:EISDIR
JRUBY-1370     Call/FCall don't provide incoming block during arg processing
JRUBY-1372     Rails helper loading fails due to Regexp quoting bug
JRUBY-1373     Cannot run JRuby through 'java' when having space in path in JRuby's home
JRUBY-1374     Our File.sync is too over zealous
JRUBY-1375     Dir.mkdir doesn't raise SystemCallError
JRUBY-1379     [PATCH] file.flock(File::LOCK_UN | File::LOCK_NB) support
JRUBY-1380     jruby complete jar file forgot to include jline.dll
JRUBY-1393     JRuby Errno module is missing ECONNABORTED
JRUBY-1394     README.test points people to wrong file name
JRUBY-1401     Pathname#realpath fails for Windows drive letters
JRUBY-1406     Reading streams from launched shell process is slow
JRUBY-1408     JRuby crashes with error: can't find string "EOF" anywhere before EOF (SyntaxError)
JRUBY-1410     Signal on Windows blows up with missing signals
JRUBY-1416     eval of a "proc" with setting the line number for something lower than 1 to adjust the line number causes "java.lang.ArrayIndexOutOfBoundsException: -1 (NativeException)"
JRUBY-1417     Wrong var name inside thread dosent popup exception. With -d optino enabled.
JRUBY-1419     alias_method does not call method_added for the new method
JRUBY-1422     (patch) File.dirname('C:
') returns incorrect results
JRUBY-1423     Range#step - strange behavior with alpha range, numeric step
JRUBY-1426     error occurs when attempting to disable jit at the command line on windows
JRUBY-1427     YAML wrongly serialize String contains certain utf8 characterset
JRUBY-1430     Kernel::rand() is broken for arguments larger than Integer.MAX_VALUE
JRUBY-1432     NFE from RubyYaccLexer.yylex
JRUBY-1435     YieldNodes sometimes have wrong position information
JRUBY-1437     Heap overflow on attempted gem install
JRUBY-1443     Wrong position information for a CallNode with parentheses
JRUBY-1446     FileUtils#mkdir_p causes test suites to not register if the mkdir_p argument already exists
JRUBY-1447     Setting the priority of a dead thread causes NPE
JRUBY-1450     Builtin scripts don't establish a new frame and class when loaded
JRUBY-1451     jruby does not warn about uninitialized instance variables even when warnings are enabled
JRUBY-1452     TCPServer in the midst of accept should still be usable after being Thread.raise interrupted
JRUBY-1460     TCPSockets do not stay fully closed
JRUBY-1465     Test failures under Windows
JRUBY-1468     blocks with var args does not work the same as MRI or JRuby 1.0.1 when the argument supplied is an array
JRUBY-1477     IO Error requiring certain jars in JRoR
JRUBY-1479     irb completion doesn't work for 'java.[TAB]'
JRUBY-1481     don't automatically define ARGV when embedding
JRUBY-1482     Make ARGV default always to [] and configurable through RubyInstanceConfig
JRUBY-1484     JRuby.bat -e and double-quoted string processing broken
JRUBY-1491     MethodCache maintains hard references to Ruby classes and methods that should be weakly referenced
JRUBY-1499     Mongrel log should go to standard out by default. This doesn't happen for some reason
JRUBY-1500     JIRB startup failure "unrecognized switch: -=-" (trunk+WinXp)

JRuby 1.0.1 Released

The JRuby community is pleased to announce the release of JRuby 1.0.1.

Homepage: http://www.jruby.org/
Download: http://dist.codehaus.org/jruby/

JRuby 1.0.1 is a minor release of our stable branch. The fixes for this
release are obvious compatibility issues that we feel are low risk. Our
intention is to periodically push out point releases to help better support
production uses of JRuby.

Highlights:

  • Fixed a issue which caused most multipart processing to not work
  • Fixed issue with sockets that affected some aspects of net/* libraries
  • Fixed network timeout issue for large packets
  • 28 issues resolved

Key Summary
JRUBY-1080 Kernel#system behaves differently under MRI and JRuby for missing commands
JRUBY-1108 IOError exception in Net::FTP using 1.0.0RC3 under WinXP
JRUBY-1110 Concurrent modification exception when exiting IRB
JRUBY-1119 FTP.nlst error !!!
JRUBY-1120 Implementing BigDecimal.mode()
JRUBY-1131 RubyFileTest fails to be compiled in Eclipse
JRUBY-1132 $! gets set to 'uninitialized constant RAILS_FRAMEWORK_ROOT' after Rails Initializer run - inconsistent with MRI
JRUBY-1150 Multipart Uploads still fails.
JRUBY-1156 Implementing BigDecimal.power()
JRUBY-1162 Dump invocations in maven build
JRUBY-1169 YAML parser do not escape nested yaml string correctly
JRUBY-1174 Ranges in if and if_mod evaluate incorrectly
JRUBY-1181 Rake batch file for Windows environments
JRUBY-1191 method() on alias calls wrong super (but not in our opinion)
JRUBY-1200 commit #3984 breaks Webrick startup: active_support/dependencies.rb:266:in `load_missing_constant'
JRUBY-1206 Form's with enctype="multipart/form-data" fail in JRuby/Rails
JRUBY-1220 YAML dump is broken for multi-line string values with leading space
JRUBY-1228 TCPSocket.open will not accept a string for the port parameter
JRUBY-1239 Monitor synchronize hangs
JRUBY-1244 ENV variables should be removed from the environment when set to nil
JRUBY-1245 File.mtime should raise exception if file is not found
JRUBY-1247 ShellLauncher command line parsing does not handle embedded quotes
JRUBY-1248 StringIO.puts shouldn't append \n if it's already there
JRUBY-1255 Indented heredoc trims trailing '\n' characters
JRUBY-1266 TCPServer doesn't close connection properly using blocks
JRUBY-1270 Unable to round trip paritcular forms of strings using YAML
JRUBY-1271 Jruby error on loading ActiveMerchant plugin
JRUBY-1280 Hash#select block parameter semantics are not cRuby compatible

JRuby 1.0 Released

The JRuby community is pleased to announce the release of JRuby 1.0!

Homepage: http://www.jruby.org/
Download: http://dist.codehaus.org/jruby/

JRuby 1.0 is a major milestone for our project. Our main goal for 1.0 has been Ruby compatibility. We feel this goal has been reached. When we see companies like ThoughtWorks offering commercial JRuby support; we know this goal has been reached. Please download JRuby and take it for a test drive. Try running your Ruby and Ruby on Rails applications with it. Give us feedback. Join our community. Help us continue to improve JRuby.

We cannot say this enough... Our community is what really makes working on JRuby a treat. Whether it is a decent discussion on IRC or a nice reduced test case attached to one of our bugs, we really appreciate all the time people are spending on JRuby. We all get along well and I think the progress really shows. Just think, a little over a year ago we just starting to see simple Rails controllers route! It is amazing how far we have come.

JRuby 1.0.0RC3 Released!

The JRuby community is pleased to announce the release of JRuby 1.0.0RC3.

Homepage: http://www.jruby.org/
Download: http://dist.codehaus.org/jruby/

This will likely be our final release candidate before our 1.0 release.  People are
encouraged to try out this release to help us find any remaining showstopper issues.  We
have spent a lot of time over the last month squashing compatibility bugs and we have
confidence that applications 'will just work' (tm)*.  Please try your applications and
libraries against JRuby and give us feedback.

In the last month we have had a record number of people come in and provide a patch or
report a bug.  Interest in JRuby has exploded since JavaOne and RailsConf, and many
development groups are now testing and deploying JRuby and JRuby on Rails apps in
production. This has really helped accelerate our progress and JRuby is looking much
better because of it.  A few honorable mentions go out to: Koichiro Ohba, Daniel Berger,
David Montag, Dr Nic Williams, and Jon Tirsen.  

We also want to thank all the people who hang out on IRC, triage/report/patch issues, and
communicate on our mailing lists.  Their interest has really helped shape JRuby into a
better implementation.

As we approach our 1.0 release, we encourage Ruby (and JRuby) community members to
contribute to a few projects key to the success of alternative implementations:

- The RubySpec Wiki (www.headius.com/rubyspec) has slowly been growing into a free,
community-driven specification of Ruby. Many people have contributed articles, and several
of those directly aided JRuby development. The more people contribute to the wiki--in any
way--the more it will begin to form a complete specification for Ruby the language and
Ruby the platform. Have you written RubySpec today?

- Both the Rubinius and JRuby projects have been building out their testing suites, to the
point that JRuby now runs more regression/compatibility tests than any other Ruby
implementation and Rubinius has the largest collection of RSpec specifications for Ruby.
We two projects have been coordinating and cooperating on these testing/spec suites, but
they need your help! Check out the JRuby or Rubinius source code and dig into the tests...
you'll be helping both projects and the community at large. For more test suites, check
out the RubyTests project on RubyForge, where it is hoped that all test suites will
eventually reside, and the ruby_test project under the Shards project on RubyForge.

JRuby's tests are at http://svn.codehaus.org/jruby/trunk/jruby in the test dir.
Rubinius's specs are at http://code.fallingsnow.net/svn/rubinius/trunk in the spec dir.
RubyTests is at http://rubyforge.org/projects/rubytests
RubySpec is at http://www.headius.com/rubyspec

* - The trademark is a joke

JRuby 0.9.9 Released

The JRuby community is pleased to announce the release of JRuby 0.9.9.

Homepage: http://www.jruby.org/
Download: http://dist.codehaus.org/jruby/

This release has largely been a stabilization release where we have spent
more focus on Ruby compatibility.  We are gearing up for a 1.0 release.  Here
are some of the more significant acheivements for 0.9.9:

  • Major compatibility and performance overhaul of String, Array, Hash
  • Many YAML and Marshalling issues have been fixed
  • Java Integration overhaul fixing many outstanding issues
  • 180 Jira issues resolved
  • Several more bottlenecks removed
  • Rails applications like Mephisto and plugins like Goldberg are running without hitches
  • Performance has improved by 40% over 0.9.8 based on YARV benchmarks
    With all the hard work done by Marcin Mielżyński and Bill Dortch we are adding
    them as core committers.  Their contributions have made a huge difference in
    our progress as of late.

We also want to thank all people who hang out on IRC, triage/report/patch
issues, and communicate on our mailing lists.  Their interest has really
helped shape JRuby into a better implementation.

Please take JRuby 0.9.9 for a spin and help us root out the last issues
before our 1.0 release!

JRuby 0.9.8 Released

The JRuby team is pleased to announce the release of JRuby 0.9.8.
Download: http://dist.codehaus.org/jruby/

This release has some great improvements:

  • Ruby on Rails support. We have been working hard on getting Rails own unit
    tests running and over 98% of them now run successfully. We feel things are
    running well enough to invite Ruby users to kick the tires and help root out
    any final issues.
  • Ruby classes can extend concrete/abstract Java classes and override methods
  • New Java primitive array syntax
  • Reimplementation of String, Numeric classes, and Array to be more correct
    and performant
  • Significant bottlenecks have been identified. In some cases IO is 6.5x
    faster than previous releases. Java included classes are significantly
    faster than in the past.
  • 225 Jira issues resolved since last release

At the beginning of this development cycle we added Nick Sieger as a committer
to JRuby. Nick has been a welcome addition to the team.

Special thanks to Marcin Mielżyński for his tireless work in rewriting a
number of core classes to be much more correct and quick. His attention to
detail has rooted out many corner cases.

The amount of IRC conversations, mailing list threads, bug reports, patches,
and blog entries in the community has been a great help and our community is
really making a huge difference in how fast JRuby is improving. The amount
of progress is really staggering....

JRuby 0.9.2 released!

The JRuby team is pleased to announce the release of JRuby 0.9.2.

Download: http://dist.codehaus.org/jruby/

This release has some great improvements:

  • Extensions openssl and readline now working
  • Code for a new graphical irb console
  • Partial support for iconv and bigdecimal extensions
  • RSpec now supported
  • Improved Rails support
  • Fixed all known block and scoping bugs
  • Enhanced parser performance
  • More compiler and performance work
  • Refactored variable scoping logic
  • 127 Jira issues resolved since 0.9.1

Ola Bina gets accolades for completely writing an openssl clone in Java from
scratch! We are not worthy (smile)

Damian Steer has written a beautiful irb console in Java Swing which has color
highlighting and popup code completion.

Thanks to several new and returning contributors: Anders Bengtsson, Aslak Hellesoy,
Peter K Chan, Thomas Palmer, and Wes Nakamura.

Additional thanks to all the people on our mailing lists who help give feedback and
ideas.

JRuby 0.9.1 Released!

The JRuby team is pleased to announce the release of JRuby 0.9.1. 

Download: http://dist.codehaus.org/jruby/

This release has some significant improvements:

- Overall performance is 50-60% faster than JRuby 0.9.0
- Improved Rails support
- New syntax for including Java classes into Ruby
- New interpreter design
- Refactoring of method dispatch, code evaluation, and block dispatch code
- Parser performance enhancement
- Rewriting of Enumerable and StringScanner in Java
- New experimental syntax for implementing interfaces
- 86 Jira issues resolved since 0.9.0

Ola Bini has been inducted into JRuby as a core developer during this development cycle.
He has been coding like an unstoppable machine and we want to make sure he gets the
recognition he deserves.

In addition to contributions from the regular suspects we have several new contributors
worth mentioning: Ryan Bell, Dave Brosius, Miguel Covarrubias, Antti Karanta, and
Michael Studman.

Additional thanks to all the people on our mailing lists who help give feedback and ideas.
JRuby just keeps getting better and better.

Two wikis have been launched to support Rubyists and JRubyists worldwide.

The first is the RubySpec Wiki, to serve as a community-evolved specification of the Ruby language, libraries, runtime, and implementations. Everything from String methods to marshaling specifications can go here, to form a central repository for information on how Ruby really works.

The second is the JRuby Wiki, maintained for and by the JRuby community. Getting Started, HOWTOs, FAQs, and other documentation on JRuby will be available here, and anyone can contribute.

The Wiki phenomenon has helped transform the internet, and now it can help Rubyists and JRubyists alike get and share the information they all need. Contribute an article or edit today!

Charles Oliver Nutter and Thomas Enebo, the two core JRuby developers, will become employees at Sun Microsystems this month. Their charge will be to work full-time on JRuby, rounding out performance and compatibility goals and making Ruby on the JVM as fast and clean as possible.

 Check out the blogosphere for more posts about this exciting turn of events. This can only be good for Ruby, JRuby, and dynamic languages on the JVM. We're very excited about this new future!

We have finally moved all remaining services that were running on sourceforge over to codehaus.  Codehaus is new home for all activities.  Long live codehaus.

In the next few months we hope to reorganize our documentation to make it easier for users to find stuff/get started.  People interested in writing documentation can send mail to  dev@jruby.codehaus.org

This article at InfoQ talks about some of the reasons why we are moving from Sourceforge to InfoQ.

An interview on LinuxJournal with JRuby developers Charles Nutter and Thomas E Enebo has shown up.    Gives a decent insight into where JRuby wants to go in the near future.   Also published on O'Reilly Ruby.

JavaWorld is featuring an article on JRuby by Joshua Fox.   It gives a good introduction to JRuby.

JRuby 0.9.0 Released

We are pleased to announce JRuby 0.9.0. This release has had so much activity and progress that we decided to bump things up to a 0.9.0 release. Many many bugs have been fixed to the point that:

  • RubyGems 0.9.0 installed and working*
  • WEBrick runs
  • Ruby on Rails runs on top of WEBrick (and generation scripts work)**
  • much improved YAML parser thanks to JvYAML and RbYAML projects
  • we bundle all non-native standard libraries in our distribution

We are getting to a correctness level where the more complicated Ruby libraries and applications are running properly. From this point on we are going to improve on correctness and start to focus more on performance.

For 0.9.1 we plan on getting Rails to run in a JEE servlet container out of the box. We also plan on improving Rake support. More correctness fixes will be applied as discovered.

As always we thank and encourage all who contribute to our project and community. We would like to give some special thanks to:

  • Ola Bini for his rubygems and YAML work. He has spent a lot of sweat and tears to get rubygems functioning. His YAML work is a very exciting. Development of JvYAML extends beyond JRuby in scope into the Java world at large. He also spent a lot of time looking at bottlenecks and addressing performance of Rubygems once it was working.
  • Evan Buswell for his server socket work. He improved on David Corbin's original socket work and got the socket code working well enough to WEBrick to start.

footnotes:
* Though the YAML and download of the remote gem is somewhat comparable to Ruby performance we have a severe performance problem when generating rdocs for the new gem. We plan on looking at this at the beginning of the next development cycle. Consider using options: --no-rdoc and --no-ri
** We are able to generate and run the cookbook demo from rolling with rails tutorial (http://www.onlamp.com/pub/a/onlamp/2005/01/20/rails.html) with what we have and all appears to work. With this said, it is likely that there are several aspects of rails that are not working correctly. See docs/README.rails for known issues/instructions in release.