Milestones
JRuby is an alternate implementation of the ruby scripting language. It
is different from the C reference implementation of ruby in that it:
- Is implemented on top of the Java Vritual Machine in Java
- Has Java integration features
- Can not load ruby external modules (native shared libraries)
This document will discuss when and in what order features are likely to
be implemented in JRuby. This document is dynamic and may change depending
on external circumstances (like someone deciding to implement a later feature
sooner).
The goal from this point on in the project is to put out a release every
1.5-2 months. These releases will be point releases on the current point
release until all features have been implemented for the next major point
release (e.g. After 0.8 will come 0.8.1, 0.8.2, ... until all 0.9 features
are done).
If new features are needed (or discovered) then they can be added to the
next point release. The jruby-devel mailing list is the appropriate place
to start a discussion about doing new work and integrating it into a
future release.
JRuby 0.8 (Late January, 2005)
- Ruby 1.8.2 grammar complete
- Enough 1.8.2 core libraries implemented to adequately run rubicon
- Relicense to GPL/LGPL/CPL
JRuby 0.8.1 (Released Apr 11, 2005)
- Make Java collections and native Ruby collections more transparent
- From ruby scripting
- From java programming
- Address constant scoping issues (this may be a lot larger than it
sounds)
- Some basic distribution of 'rb' files so we do not need to link
to an existing ruby distribution (which would be nice to be in a
jar).
JRuby 0.8.2 (Released September 29, 2005)
- RubyArray implements java.util.List
- RubyHash implements java.util.Map
- Some parts of socket.rb working
- digest implemented
- Squash all known concurrency problems (using ruby threads)
- Squash remaining block passing problems
JRuby 0.8.3 (Released March 27, 2006)
- Java included classes/modules are much faster
- Merge TOM_RDT_POSITION branch to trunk
- Fix constant scoping problem [1303983]
- Create an extended Java File type to deal with cwd changing and forward-slash versus backslash semantics [1280905]
- Make sure arbitrary java threads have a way of using BSF returned values[1305005]
- More parts of socket.rb working
- Support Bindings
- irb working (jirb)
- Make all stacks obey java.util.Stack semantics
- Ability for multiple java native threads to call methods on a ruby object concurrently
- Merge RDT Position branch with head
- Make parser more accessible for JRuby hackers/embedders
- yaml
- zlib
- updated evalautor
JRuby 0.8.4 (early May 2006)
- Remaining block issues
- Proc#arity problems
- Rubygems working
- Ruby on Rails working (generate and dispatch)
- Make JDBC connector for RoR ActiveRecord
- More conversion to having class have its own MetaClass
- More socket improvements
JRuby 0.8.5 (end of June 2006)
- Change IO/File to use NIO to support select and locking
- Ruby classes which extend Java one can override methods in a way that Java consumers can see
- More migration of interpreter to being stackless
- Webrick working
JRuby 0.9 (????)
- Full support for socket.rb
- Continuations
- Pipes
JRuby 1.0 (????)
- Ability to write java classes from jruby scripting environment (this
requires ability to compile classes)
- Extend abstract classes (needed for some part of swing)
- Swing-based example app which is an interactive ruby shell.
- 1.8.x core library complete (of things java can realistically support
- Ability to pass rubicon 100% (by this point, this statement is more
about updating rubicon to exempt us from certain tests than it is about
JRuby not passing tests)
Futures/Intangibles
- Large performance focus. Having a complete ruby implmentation is the
best place to start looking at large refactoring issues to get better
performance (IMHO). This is not to say we will not positively affect
performance on the way to 1.0. I just would rather have us reach a
full implementation as fast as we can.