Jelatine release news.

* Version 0.9.4
===============
- A lot of bad bugs were fixed
- More code refactoring and cleanup
- A few minor optimizations were implemented

* Version 0.9.3
===============
- More major bugs were fixed
- Added partial support for version 50 classfiles
- Some code refactoring and cleanup, minor static footprint reduction
- A small optimization, in the form of a change to the constant pool structure,
  was added

* Version 0.9.2
===============
- A few major bugs which went unnoticed for a long time were fixed
- Classes with a version number of 51 are now partially supported
- The VM static footprint was shrunk by ~5%
- Multiple classpaths are now supported for the --classpath option
- Double.parseDouble() has been implemented

* Version 0.9.1
===============
- Optimized the memory consumption of permanent C allocations, this shaved a
  few KiBs of memory from the bootstrap process
- Significant improvements in the multi-threading implementation, lots of
  thread-related bugs were fixed and Thread.interrupt() works much better than
  in the previous version
- Basic socket support was added by Guillaume Legris
- Many important bug fixes in various parts of the VM
- Rewritten the code base using C99 features, many parts were simplified and
  made more readable (especially the GC). The refactoring also made the static
  footprint of the VM go down a bit
- Improved OS X support

* Version 0.9.0
===============
- Massive overhaul of the whole virtual machine
- Three threading models are now supported: POSIX threads, GNU/Pth threads and
  no threading
- The KVM native interface (KNI) is now implemented
- Quite a bit of nasty bugs were fixed
- The interpreter has gone through further optimizations, especially to
  virtual method calls
- The VM static and dynamic memory footprint have gone down a bit
- The build system has been improved with configuration reporting and better
  support for cross-compilation
- The whole codebase has been audited and cleaned up, especially the aspects
  regarding exceptions, the build system and documentation have been improved

* Version 0.8.10
================
- Some minor improvements to the interpreter allowed for some reductions in the
  VM static footprint
- Fixed a bad bug which caused random crashes in the bootstrap code when using
  threads
- Fixed the build problems with printing and floating-point support removal
- Fixed a couple of types which caused problems with more recent versions of gcc
  and 64-bit machines

* Version 0.8.9
===============
- Reworked the string handling/conversion code and fixed a bug which caused
  incorrect calculation of the hash value of certain literals. Fixed a bug
  which prevented String.intern() from working correctly
- Fixed a few minor memory leaks when terminating a thread's execution and when
  dealing with JAR files
- Fixed a *very embarassing* bug introduced in version 0.8.4 which caused non
  array objects to occupy as much as four times the memory they actually
  required. Memory consumption is down *a lot* from the previous version.
- Made the process of finalizing objects much more aggressive, this can be very
  useful when memory pressure is high and there are objects which hold a lot of
  memory waiting for finalization
- A lot of code refactoring, this paves the way for some changes which will be
  introduced in the next version
- The Doxygen documentation has been updated and corrected

* Version 0.8.8
===============
- Added support for finalizer
- Implemented the java.lang.Class.getResourceAsStream() method
- Fixed a problem caused by violating the strict aliasing constraints of the C
  language, tested with various versions of the gcc compiler and removed  the
  -fno-strict-aliasing flag from the default build, this should provide a
  healthy performance boost
- Minor optimizations to the interpreter
- Fixed a number of serious bugs:
  - when an interface inherited methods from another interface the virtual table
    wasn't built correctly
  - when looking up a static field the superinterfaces of a class weren't
    scanned for it
  - the Object.wait() method didn't work as it should
  - command line  parameters weren't passed in the correct order to the Java
    application's main() method
  - copying boolean arrays with java.lang.System.arraycopy() corrupted the stack
  - the Class.forName() method didn't turn the class name into the internal
    format before looking for it
  - fixed a couple of minor bugs when dealing with utf8 strings
- Fixed a few small memory leaks in the class loader
- Cleaned up the classpath and simplified the class structure, this saves a bit
  of memory and reduces the classpath static footprint
- Reorganized the opcode translation system, now Java opcodes are clearly
  separated from the internal opcodes improving their manipulation
- Fixed a bug in the configure script which accepted older versions of zziplib
  which did not offer the required functionality
- Fixed a bug in the classpath which prevented it from being compiled with the
  Eclipse Java Compiler, also fixed a number of warnings produced by ech when
  compiling

* Version 0.8.7
===============
- Added an internal preverifier by modifying Sun's one. This allows the
  classpath to be compiled with Sun's javac compilers shipped with version
  1.4, 1.5 and 1.6 of the JDK. Previously builds with version 1.4 and 1.6 were
  unsupported
- classpath files are now automatically installed into $prefix/share/jelatine,
  by the default the VM will look them up there if no bootclasspath is
  specified
- Fixed a bug which prevented the labels-as-values test to run by default,
  as a consequence baseline performance for the VM should be significantly
  improved
- Fixed a small bug related to NaN handling on exotic machines
- Fixed a number of warnings which might turn out when using the latest versions
  of gcc or by testing the machine with valgrind

* Version 0.8.6
===============
- Added JAR support. Now a JAR file can be passed instead of a directory to
  both the --bootclasspath and --classpath options for use by the VM
- Fixed a bug in the garbage collector which prevented architectures where the
  pointer size was half the maximum alignment constraint from working properly.
  Thanks to this now Jelatine runs on Linux/SPARC targets
- Now supports full VPATH builds which weren't supported in the classpath
  subdirectory

* Version 0.8.5
===============
- Major rewrite of the basic type system, some problems are still present
  on Linux/SPARC targets (32-bit pointers but natural alignment required for
  64-bit types), hopefully this will be fixed in the next release
- Merged the VM library and front-end into a monolithical application, library
  use of the VM will be rewritten later with better integration as it was
  quite poor
- Many important bugs were fixed including a couple of mistakes when allocating
  method code, incorrect behaviour in the verifier when handling LDC_W opcodes
  and more
- Minor optimizations to the garbage collector
- The previous version should be considered unreleased, I actually put it in the
  wild for a few days but quickly realized that it was horribly buggy and so I
  withdrew it as soon as possible, don't use it, all of its improvements are
  present in this version
- Added some primitive bytecode and method printing facilities, these can be
  enabled with the --enable-printing flag of the configure script and later
  activated in the VM by passing the --print-methods or --print-opcodes options
  when invoking jelatine

* Version 0.8.4
===============
- Modified the field layout procedure so that it can produce more compact
  objects. This is done by reusing padding bytes at the end of the previous
  generation in the inheritance chain if possible
- Class initialization methods are now unloaded after they have been called as
  they are used only once, this helps save a bit of memory on complex classes
- Fixed a number of bugs affecting big-endian machines as well as machines
  requiring natural alignment for types larger than 1 byte
- Fixed a bug which caused large reference arrays to be mishandled when using
  pointer reversal

* Version 0.8.3
===============
- Compressed the constant-pool of any class by 10% by storing a couple of tags
  in a single byte integer instead of just one
- Removed the dependence from libpopt in the front-end
- The pointer-reversal based algorythm is now the default used by the garbage
  collector
- Fixed a couple of bugs regarding NaN use in the interpreter
- Adapted to use autoconf 2.60
- Introduced more tests and wrappers to adapt better to different environments
- Cleaned up the Doxygen documentation and fixed a lot of typos which made a
  big part of the comments to be ignored
- Finished cleaning up the resolution process in the interpreter, now all direct
  references to the system class loader have been removed from there. Startup
  speed should also have improved as a side-effect.
- Executable size is now below 90 KiB when compiled with -Os

* Version 0.8.2
===============

- Complete rewrite of the loading process, including method and class handling,
  this should provide somewhat faster startup times
- The interpreter has been cleaned-up and old testing code has been removed
- Class loader code is now much cleaner though work on the way classes are
  managed must still be done
- Complete rewrite of the method binding process, method management was greatly
  simplified and made much cleaner
- Changed the way private, static and initialization methods are called. The
  relevant bytecodes do not access anymore the virtual dispatch table for
  private and initialization method and the static dispatch table for static
  ones. Early tests show a slight increase in performance. The static dispatch
  table has been removed thus removing references from the loader too. This
  change should be applied also the opcodes accessing the global class table in
  future versions.
- Removed the limits on the maximum number of private and static methods which
  could be declared, relieved the limits on the number of virtual methods
- Doxygen documentation has been improved though quite a bit of work must still
  be done about it
- Fixed a bug which made malformed classfiles with duplicated field entries pass
  the loader consistency checks
- Fixed a slight bug in the interpreter

* Version 0.8.1a
================

- Fixed a problem which made the build process fail if JAR file support was
  disabled

* Version 0.8.1
===============

- Reworked field management and layout, should provide a minor performance
  improvement and the related code is much cleaner now and easy to modify
- Fixed a couple of minor problems

* Version 0.8
=============

- INITIAL RELEASE
