Guarana 1.6:

- Updated to June 1st's snapshot of Kaffe 1.0.b4

- Adopted automake and libtool for the whole build process.  Examples
are now automatically built, and the performance program is run as a
regression test.

- A new subclass of MetaObject, called MetaBlocker, has been
introduced.  Whenever a new object is created, before the MetaObject
of its creator is requested to configure it, a MetaBlocker is
associated with it, so that the MetaObject may delegate the
configuration request to other MetaObjects without the fear that they
might take over control of the new object.

- MetaLogger has become part of the Guarana API.

- Operations and meta-objects are now walked precisely by the garbage
collector, just like the rest of Kaffe.

Guarana 1.5.1: Brazilian Republic Day edition (November 16, 1998)
(should have been November 15, but it was past midnight already)

- Updated to Nov 11's snapshot of Kaffe 1.0.b2

Guarana 1.5: Brazilian Patroness Day edition (October 12, 1998)

- It is now possible to intercept finalize() for arrays and for other
objects that do not override Object.finalize()

- Updated to Kaffe 1.0.b2

- Ported back to 0.10.1 the fix of a bug that would cause JNI
dispatchers to be garbage collected on sparc

- Exceptions thrown in the base-level are now properly reified even if
they do not conform with the declared exceptions of a method or
constructor.  This was needed to cover the cases of native methods
that don't bother to declare the exceptions they throw

- makeProxy now properly supports array types: an empty array will be
created.  For non-empty arrays, java.lang.reflect.Array.newInstance
should be used

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)
