Update of /project/elephant/cvsroot/elephant In directory common-lisp:/tmp/cvs-serv5850
Modified Files: TODO Log Message:
Added :index vs. :indexed slot option Improved tests and added some more Some minor cleanup
--- /project/elephant/cvsroot/elephant/TODO 2006/02/08 03:23:12 1.10 +++ /project/elephant/cvsroot/elephant/TODO 2006/02/10 01:39:12 1.11 @@ -7,20 +7,22 @@ 0.6.0 - Adding default class/slot indexing - Finish indexing tests (Ian) - Documentation update (Robert) -- Tutorial example rethink: update the blog tutorial using indexed - objects to create different views as well as integrating something - like logging for admin or version control purposes. (Both?) +- Add a class-indexing class option to the metaclass so we can maintain class instances + index without any secondary indices or indexed slots (Ian) +- Add :inverse-reader to slot options to create a named method that indexes into objects + based on slot values. Is this a GF or defun? Do we dispatch on class name or bake it in?
0.6.1 - performance, safety and portability
Stability: - Add clsql like support for building .so/.dylib from asdf loader on most systems - Port elephant to closer-to-MOP to make it easier to support additional lisps (Both) -- Cleanup multi-repository operation (a simple registry of open stores, - clear object-repository associations) (Both) +- Cleanup multi-repository operation (ensure that conflicts between an object's + registry and *store-controller* does not leed to lockup, especially with BDB (Both) - Think through default vs. explicit store referencing all over the APIs (Both) -- Cleaner failure modes if operations are performed without repository (Both) -- Add asserts if *auto-index* is false and we're not in a transaction +- Cleaner failure modes if operations are performed without repository or without + transaction or auto-commit (Both) + Add asserts if *auto-index* is false and we're not in a transaction to help users avoid lockups in bdb? Should be able to turn off for performance but it will help catch missing with-transaction statemetns in user code. (Both) @@ -34,36 +36,57 @@ - Metering and understanding locking issues. Large transactions seem to use a lot of locks. In general understanding how to use Sleepycat efficiently seems like a good thing. (Both) -- Add dependency information into secondary index callback functions so that - we can more easily compute which indices need to be updated to avoid the - global remove/add in order to maintain consistency (Ian) - Reclaim table storage on index drop (Ian) - Higher performance fix for allegro unicode serialization workaround than my current one (Ian)
Indexing features: -- Add a class-indexing class option to the metaclass so we can maintain class instances - index without any secondary indices or indexed slots (Ian) -- on class change, new slots should have their initform values pushed +- On class change, new slots should have their initform values pushed into the slot value as if the slot was being created the first time (currently this doesn't happen) (Ian)
Bugs: - anything else reported against 0.5.0/0.6.0
-0.6.2 - New operating modes +0.6.3 - Query & indexing expansion - simple object query language (Ian - orthogonal, on main branch) - - integrate support for your in-memory database (on a separate branch) - - repository browser (Ian - orthogonal, on main branch) + - Add dependency information into secondary index callback functions so that + we can more easily compute which indices need to be updated to avoid the + global remove/add in order to maintain consistency (Ian) + - Add needed support (if any) for persistent graph structures & queries (Ian on a branch) + +0.6.4 - Compliance & Documentation + - Update to support BDB 4.4 + - Tutorial example rethink: update the blog tutorial using indexed + objects to create different views as well as integrating something + like logging for admin or version control purposes. + - Finish serious update and review of users manual (building on 0.6.0 update) + - A guide to dealing with transactions + - A guide to dealing with multiple open stores + - A guide to performance + - An overview of licensing issues... + - Repository browser (Ian - orthogonal, on main branch) (a simple REPL tool to see what classes are in a repository and what state they're in...useful for long-lived repositories)
-0.6.3 - Query expansion - - Add needed support (if any) for persistent graph structures & -queries (Ian on a branch) +0.6.4 - Additional datastructures? + - Support for cheap persistent sets (ala ACache)
+Some placeholders & dreams features below... :)
+0.7+: Major features + - A backend controller for AllegroCache (Ian) + - Prevalence-like in-memory database system (Robert?) + - Richer controller modes: + - Single-user mode (cache values in instance slots for fast reads, write-through) + - Prevalence mode (read/write to normal slots except on object creation or synch) + (in-memory slot indexing, on disk class) + (works for any backend) + - Concurrent mode (for backends that allow multiple processes to connect, current default) + - Controller 'switches' + - NoSynch - allow transactions to be lost on failure but maintains consistency instead of performance
+0.8 - Lisp Backend?