Dear Elephant community,

Robert and I are pleased to announce that a release candidate for 
Elephant 0.9 is now available.  See the online announcement at http://
www.common-lisp.net/project/elephant/news.html for details and 
pointers to documentation and downloads.

A quick note on the switch from 0.6.x to 0.9.  With the marked 
improvement in stability and the existence of a stable and useful 
feature set, we decided to abandon the 0.6.1 release label and change 
it to 0.9.  There is a modest set of features remaining to achieve a 
1.0 release later this year. These features are recorded as tickets 
at the Trac project site. (http://trac.common-lisp.net/elephant)

We do not anticipate any functional changes prior to a formal release 
and are confident that databases created with this code base will be 
compatible with the final release.  We aim to finalize the release in 
the next 1 to 2 weeks after a period of evaluation by the community.

Features and changes since the Beta 0.6.1 announcement:

* Mapping operators
    o BTrees, BTree indicies, class index and slot/derived indices all
      have a map operation
    o Enable mapping a function over values and ranges
    o Map in both ascending and descending order
    o Collect function results into a list
    o Efficient stack allocation where appropriate
* Persistent sets
    o A lighter weight API for persistent collections
    o Provides insert, remove, find, map and list operations
    o With appropriate methods, makes one to many slots easy to 
construct, see
      tutorial and user-guide for details.
* Complete update and rewrite of the users manual
    o All new and up-to-date tutorial
    o New section containing more detailed implementation information 
for
      advanced users
    o New sections for prospective data store developers
    o Detailed installation instructions (supercedes INSTALL file)
    o A list of use case scenarios that should help developers 
understand Elephant better
    o Much work remains to clean up the manual for 1.0, but the bulk 
of the
      rewrite is done and we invite comment on what is missing or 
unclear.
* Feature tweaks
    o Drop commands for persistent collections to reclaim storage for 
reuse.
    o Expanded support for nested aggregates in serializer and 
migrate (i.e. an
      array of persistent objects will be properly migrated, whereas 
before only
      btree collections of persistent objects were properly copied).
    o Better error handling during object creation, change class 
operations, etc.
    o Better error checking during cross-store operations.
    o Persistent instances passed to print-object print their oid by 
default
      to create a recognizable signature
    o Loading directly via ele-bdb.asd and ele-clsql.asd is now 
supported as well
      as the 2-phase load
    o And many bug fixes...
* Performance enhancements
    o Option to increase cache size for BDB backend
    o Improve contention performance while mapping btrees
    o And much more...

Testing and Platforms:

Prior to tagging the CVS tree tests were run successfully on the 
following configurations.

Mac OS / Allegro / BDB -- green
Mac OS / Allegro / SQlite -- green
Mac OS / SBCL / BDB -- green
Mac OS / SBCL / SQlite -- green
Mac OS / Lispworks / BDB -- green
Mac OS / Lispworks / SQLite -- green
Mac OS / OpenMCL / BDB -- green (1 failing test -- see errata)
Linux / SBCL / BDB -- green
Linux / SBCL / SQLite -- green
Linux / SBCL / Postgresql -- green
Linux / Lispworks / BDB -- green
Linux / Lispworks / SQLite -- green
Windows / Lispworks / BDB -- green
Windows / Lispworks / SQLite -- green
Windows / Allegro / BDB -- green
Windows / Allegro / SQlite -- green

(NOTE: Several small changes to the loading process were made after 
these tests and only a subset of the platform combinations were 
retested after, but this included all OS's and all but OpenMCL.  It 
is possible that something slipped through that we will have to fix 
in the final release).

Errata:

There are only two known issues with this release:

* OpenMCL 1.0 has 1 known problem: redefinition of classes do not 
always result in indices being properly updated.  This results from a 
known problem with the OpenMCL 1.0 MOP implementation. No workaround 
is currently known, but in practice you can evaluate the defclass 
form again and manually call (ccl:finalize-inheritance <pclass>) or 
change the indexing state manually using the API. This will probably 
not get fixed in this release.

* The :deadlock-detect option for the BDB data store is not working 
in Lispworks.  This will be fixed for the formal release.


Ian Eslick and Robert Read