Guarana 1.4.1: Brazilian Independence Day edition released
(should have been Sept 7, but was delayed to Sept 12, 1998)

- Updated to Sept 10's snapshot of Kaffe 1.0.b1

- Fixed compilation with static linking

- Fixed 0.10.1 bug triggered by Pizza compiler

- Documented wrapper scripts

- Removed dependency on Pizza and Kaffe 1.0 classes from 0.10.1
wrapper scripts

Guarana 1.4: Master Thesis edition released (August 21, 1998)

- Updated to (the latest snapshot of) Kaffe 1.0.b1, but an option for
installing with the last snapshot of Kaffe 0.10.1 is still provided

- Improved versions of the scripts distributed with Kaffe 1.0.b1 were
ported back to Kaffe 0.10.1

- New scripts `guarana' (same as kaffe) and `guaranac' (same as
javac)

- Result.throwObject and OperationFactory.invoke and .construct now
prevent exception constraints from being violated.  Previously
accepted thrown results and replacement operations may now be
rejected.

- Worked around native `float' problem (see BUGS for details)

- Dirty registers are no longer spilled twice in JIT interception
code, which should slightly improve performance


Guarana 1.3: Corpus Christi edition released (June 13, 1998)

- Updated to Kaffe 0.10.1: JNI method calls, object and array
creations and monitor enter and exit operations are intercepted; field
read and write, array length and array element read and write are not,
just like it used to be without JNI.

- Operations can only be perform()ed once, and only if they are not
replacement Operations.

- source code for all examples in the Guarana Tutorial included.

- moved the implementation of MetaSequenceArray into
SequentialComposer, and deprecated MetaSequenceArray.

- MetaException will now print the encapsulated exception as part of
its message.

- minor bugfixes


Guarana 1.2: Brazilian Slavery Abolition Day edition released
(May 13, 1998)

- upgraded to (the latest snapshot of) Kaffe 0.10.0

- great performance improvements

- solved all Guarana-related portability problems

- operations produced using Java Core Reflection API (now fully
implemented in Kaffe, except for security tests) are intercepted too

- like always, lots of bug-fixes

- new examples

- new method Guarana.getClassName(Class) for obtaining the name of a
class without invoking any method of the class itself.
Guarana.toString would invoke Class.getName(), which caused
interference of the meta level with the base level.  This is now
fixed.


Guarana 1.1: Easter edition released (Apr 13, 1998)

- Easter Eggs could not be implemented in time, sorry :-)

- Guarana has got its own home-page and mailing-list.

- Although Kaffe 0.10.0 was released two weeks ago, Guarana 1.1 is
still based on Kaffe 0.9.2, for two reasons: Kaffe suffered a major
reorganization in the directory tree and it has been `unported' to
some platforms.  Anyway, the next release of Guarana should be based
on some newer version of Kaffe, either 0.10.0 or, hopefully, 1.0.
I've got plans to port Guarana to GNU Japhar too.

- Lots of bug-fixes.  I can't really understand how the sample program
worked.  Thanks to Delano Medeiros Beder <delano@dcc.unicamp.br> and
Nadia Vieira Leao Pereira <972155@dcc.unicamp.br> for all the testing!

- Class Guarana has got three new methods, useful for logging
information and debugging meta-objects: hashCode, getClass and
toString.  All these methods take an Object as argument, and they
return the same value that would be returned by invoking the methods
with the same name from class Object.

- Class OperationFactory has got a new method, that makes it possible
to create do-nothing Operations.  They may be used as placeholders,
that can be replaced by actual Operations by any MetaObject in the
meta-configuration of an Object.

- A replacement operation now *must* have the same target object as
the replaced operation.  This could become a common gotcha for (even
unintended) multi-object meta-objects.

- New HashWrapper class, very handy for using base-level objects as
keys in meta-level HashTables.


Guarana 1.0: Carnival edition released (Feb 25, 1998)
