Jikes RVM 2.3.0 is now available from the developerworks web site
(
http://www-124.ibm.com/developerworks/oss/jikesrvm).

There are a number of major changes and significant improvements in
overall system stability and functionality since Jikes RVM 2.2.2.

Highlights of this release include:
+ Now using classpath version 0.06
  - lots of improved functionality in classpath
  - fixes several critical defects in Jikes RVM
+ Build process:
  - ksh has been replaced with bash
  - improved robustness and error detection in all build tools
+ GC/Memory management:
  - MarkSweep and CopyMS Plans are considered stable
  - CopyMS is now recommended as the default memory manager
  - RefCount plan is functional (does not support finalization or parallel GC)
  - heapsize dynamically grows/shrinks based on utilization and load
  - implementation of soft, weak, and phantom references from Chris Hoffman
  - numerous bug fixes and performance improvements
  - numerous code cleanups from Robin Garner and Andrew Grey.
+ Simplified configuration of Jikes RVM
  - Added 4 logical configs to help new users pick a 'good' one
  - All builds with opt compiler use adaptive system
+ Baseline compiler is re-entrant; parallel baseline compilation enabled
+ Some progress on port to 64 bit PowerPC
   - Numerous code cleanups
   - More use of VM_Address, VM_Word, etc.
   - Complete reimplementation of syscalls (see VM_SysCall)
+ Includes 9 user contributions since 2.2.2;

Other notes:

We fixed all Javadoc warnings in the source code.

VM_Time.now() replaced by VM_Time.cycles(). Internal interval timing
should now be done using hardware cycle counters (VM_Time.cycles)
instead of getting the time of day. VM_Time.currentTimeMicros() can be
used to get the same functionality as VM_Time.now(), but is less
efficient than VM_Time.cycles().

A number of other miscellaneous bugs in version 2.2.2
are fixed in the 2.3.0 release.  See the developerWorks bug
tracking software tool and CVS history for details.


Expansions of some of the highlights listed above:

+ Classpath 0.06
 Although many programs may still work with Jikes RVM 2.3.0 and
 GNU classpath 0.05 we strongly recommend switching to classpath 0.06.
 We no longer test Jikes RVM with classpath 0.05.

+ logical configurations
 There are a large number of possible Jikes RVM configurations.
 Therefore we define four ``logical'' configurations that are most
 suitable for casual or novice users of the system.
 The mapping of logical to actual configurations may vary from release
 to release.  In particular, it is expected that the choice of garbage
 collector for these logical configurations may be different as JMTk
 evolves. The four configurations are:
 (1) prototype
     A simple, fast to build, but low performance configuration of
     Jikes RVM.   This configuration does not include the
     optimizing compiler or adaptive system.  Most useful for rapid
     prototyping of the core virtual machine.
 (2) prototype-opt
     A simple, fast to build, but low performance configuration of
     Jikes RVM.  Unlike prototype, this configuration does
     include the optimizing compiler and adaptive system. Most useful
     for rapid prototyping of the core virtual machine, adaptive
     system, and optimizing compiler.
 (3) development
     A fully functional configuration of Jikes RVM with reasonable
     performance that includes the adaptive system and optimizing
     compiler. This configuration takes longer to build than the two
     prototype configurations.
 (4) production
     The same as the development configuration, except all assertions
     are disabled.  This is the highest performance configuration of
     Jikes RVM and is the one to use for benchmarking and
     performance analysis. Build times are similar to the development
     configuration.

+ Jikes RVM's Java preprocessor documented, and more robust:
 The preprocessor is now documented, both in the User's Guide and via a
 --help option.  It is also a lot more robust than it used to be.
 We wrote up-to-date documentation for the preprocessor.  We also fixed
 some deficiencies where certain errors in using the preprocessor would
 lead to silent failures.  The preprocessor was generating incorrect
 exit status codes under some failure conditions; these are fixed.  All
 buffer overflows are now caught and fixed.  All GCC warnings fixed in
 the preprocessor.

 The preprocessor now notices incorrect syntax (extra trailing
 characters after a conditional) and correctly complains about it.

 The preprocessor now handles failures and fatal signals by
 conservatively deleting the output file in progress.  This keeps us
 from having half-updated files sitting around.

+ improvements in build process to make it stop on errors:
 Any error occurring during a build of Jikes RVM now cause the build
 process to immediately abort.  We had, in the past, at least twice a
 month received reports that a built RVM failed to work, where upon
 investigation we discovered that the build process had encountered
 errors earlier, and these earlier errors were the real source of the
 problem.

+ ksh => bash
 Jikes RVM's build process is now entirely free of KSH.  This makes it
 more convenient for Linux users to install the system.