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