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