JamVM 1.2.3 released on 23rd December 2004
==========================================

- Fix the mistake in JamVM 1.2.2 that broke Swing/AWT :)

- Sets the locale specified in the environment and defines
  System properties user.language and user.region appropriately

- PowerPC platforms : bug fix for JNI methods with very large
  numbers of arguments (e.g. 14 integer/reference arguments).

- Consistency checks for zip/jar files loaded by bootstrap class
  loader.  A bad zip shouldn't crash the VM.

- Endian check for platforms without endian.h (e.g. cygwin)

- JamVM's VM classes are now installed and loaded from a zip file
  (unless zip support is disabled in the bootstrap loader).  This
  stops old classes being left around from a previous version.

JamVM 1.2.2 released on 14th December 2004
==========================================

This release is primarily intended to align JamVM with recent changes
made to GNU Classpath's VM interface.  As of now, JamVM 1.2.2 again
works with Classpath from CVS, and Classpath-0.12.  A couple of
minor bug-fixes have also been made.

- Native methods for new VM integration class VMSystemProperties
  implemented, and changes to VMRuntime.

- Bug fix for DCONST_1 on ARM machines using mixed-endian doubles
  (bug was introduced in new interpreter).

- Added check for VFP soft-floating point on ARM (in addition to FPA).

- Bug fix for arraycopy and boolean arrays.

- Bug fix for JNI function GetStringUTFLength.


JamVM 1.2.1 released on 2nd December 2004
=========================================

- Standalone jar files can now be executed via the -jar command line option

- Updated to use Classpath-0.12 
	- Merged changes to reference VMClassLoader, reflect/Method
	- Now uses Classpath's system class loader
	- VMAccessController implemented

- 5-10% interpreter speed improvement

- Improved ARM platform support
	- Big Endian systems
	- Soft floating point

- SMP memory barriers on Intel and PowerPC

- Fix for certain Unicode chars in JNI method names

- Intel FP bug fix (Debian bug no. 260410).  Use double (64-bit) rather
  than extended (80-bit) precision

- Memory leak when two threads compete to load a class (rare race
  condition)

- Handle SIGPIPE, stopping the VM aborting.


JamVM 1.2.0 released on 9th September 2004
==========================================

- Substantially rewritten the interpreter to use "stack-caching".  This is
  an optimisation to eliminate most of the intermediate loads and stores to
  the operand stack.  On desktop PowerPC (e.g. PPC750fx, MPC7447 with large,
  on-chip L2 cache at full processor speed) it achieves a speed increase of
  between 15 and 30%.  On ARM (XScale PXA250) it achieves a speed-up of 
  50%.  Unfortunately, due to the addressing modes of the IA32 (Pentium, etc.)
  and the code produced by gcc, it is actually slower than the old interpreter!
  Because of this, stack-caching is disabled by default on IA32.

- Zip/Jar support is implemented in the bootstrap class loader.  This means
  glibj.zip no longer needs to be unzipped.  This includes resources.

- Fix for edge-conditions in floating-point to integer conversion (floating-
  point value greater than int/long range).

- Fix for very large array allocation, where the required memory overflows a
  32 bit int (fixes the SEGV with Mauve).

- Several other minor bug-fixes (e.g. ExceptionCheck was missed out of the JNI
  i/f table).


JamVM 1.1.4 released on 21st May 2004
=====================================

- JNI enhancements introduced in Java 1.2 implemented.

- Updated to use GNU Classpath 0.09.

- Pre-compiled VM classes will now be rebuilt automatically if Java sources
  change.  Fix to enable build directory to be different to source directory.

- Deprecated compiler warnings in gcc >= 3.3.3 fixed (use of cast expressions
  as lvalues).  JamVM now also builds with gcc 3.5.0.

- Minor bug-fixes and speed optimisations.

- Eclipse now starts up.


JamVM 1.1.3 released on 12th April 2004
=======================================

JamVM 1.1.3 is primarily another bug-fix release.  New functionality will
be included in JamVM 1.1.4.

- Resolution fixes to make JamVM 100% compatible with code produced
  by javac in JDK >= 1.4 and Jikes 1.19.

- New command line options -bootclasspath/a and -bootclasspath/p to prepend
  or append entries to the default bootstrap class loader.

- Default initial heap size increased to 1Mb from 256K.  "Hello World" will
  work with a heap of 75K, but this better reflects desktop application heap
  usage.  In an embedded environment -ms can be used to specify a smaller
  initial heap (e.g. -ms256k).

- Bug fix for private method invocation via JNI and reflection.

- Several other minor bug-fixes.


JamVM 1.1.2 released on 29th March 2004
=======================================

JamVM 1.1.2 is primarily a bug-fix release.  No new major functionality is
included, but many, many bugs have been fixed.  If JamVM didn't work for you
before, give this release a go!  Off the top of my head and in no
particular order:

 - Arraycopy and instanceof fixed for arrays involving different dimensions
   and Object element type

 - Array/inner class/primitive class access flags correctly set (important
   for serialization)

 - Reflection API : method invoke on interface methods now works

 - JNI : method invoke on interface methods now works

 - getResource/getResources implemented for bootstrap class loader

 - ClassLoader.findLoadedClass now handles classes initiated by a
   class loader

 - The thread contextClassLoader is now set

 - The protection domain is now set for a class

 - Many other minor bugs 

JamVM now uses VMRuntime and will now only work with Classpath 0.08.


JamVM 1.1.1 released on 25th January 2004
=========================================

- Now supports classes compiled for target >= 1.2.  In the past, javac inserted
  synthetic methods for interface methods not implemented by abstract classes.
  These are not produced if javac is used with -target 1.2, which is now the
  default with JDK 1.4.  JamVM now inserts these methods if they are not
  supplied by the compiler.
  
- Class loader changes.  JamVM now records initiating loaders so user-defined
  class loaders should be referred to less.

- Updated to use classpath 0.07.

- Java 2 style application class loader/bootstrap class loader split
	 - new command line options -bootclasspath and -classpath (or -cp)
	 - Jar and Zip archives can now be specified in the classpath.

- bug fixes (integration of Classpath 0.06 in JamVM 1.1.0 broke instanceOf)

- Re-worked stack overflow handling.  Previously, the first thread overflow
  would be trapped, but further overflows would not.  A thread may now catch
  StackOverflowException and repeatedly overflow.


JamVM 1.1.0 released on 17th November 2003
==========================================

There's been quite a few changes, including performance improvements and more of
the specification is now implemented (should be everything now but Runtime.exec),
as well as the usual bug-fixes.

- Interface method tables are now implemented.  This means an interface method
  invocation should now be almost as fast as a normal virtual method.

- The full Reflection API is implemented (Constructor, Field, Method, etc.)
  with primitive widening and wrapping and inner class support.

- Updated to use Classpath-0.06 rather than 0.04 (note JamVM won't work with
  0.04 anymore).

- Ported to the ARM architecture.

- Re-worked exception printing - now supports 1.4 style StackTraceElements.

- Interpreter optimisations (more "fast" bytecodes).

- Command line system properties can now be specified (-Dname=value).



JamVM 1.0.0 released on 12th March 2003
=======================================

- INITIAL RELEASE
