Parent Directory | Revision Log
|Links to HEAD:||(view) (annotate)|
Version 0.1.17: add some list functions and replace persistent lists by persistent btrees for non-unique slot indexes.
Version 0.1.16: improved performance by decreasing persistent consing for btrees and using a lazy-cache. Fixed some small bugs. Added a few handy functions and macros. In detail: Added P-PUSH and P-POP. Improved btree efficiency by switching to a different data structure for the bindings. Instead of using a persistent cons for each key/ value pair, we now put the keys and values directly into the bnode vector. This speeds up most btree operations because it reduces persistent consing when adding new values and it reduces indirections when searching for keys. Renamed BTREE-NODE to BNODE, BTREE-NODE-INDEX to BNODE-BINDINGS, BTREE-NODE-INDEX-COUNT to BNODE-NR-BINDINGS, FIND-BINDING-IN-NODE to FIND-KEY-IN-NODE. Fix a missing argument bug in REMOVE-CLASS-INDEX. Added a LAZY-CACHE which just clears the entire hash table whenever the cache gets full. This improves memory usage, because the normal cache queue kept track of a lot of objects that for some reason couldn't be cleaned up by the implementation's garbage collector. Added the convenience macros RUCKSACK-DO-CLASS and RUCKSACK-DO-SLOT. Made RUCKSACK-DELETE-OBJECT an exported symbol of the RUCKSACK package. Fix a bug in TEST-NON-UNIQUE-BTREE: it should call CHECK-NON-UNIQUE-CONTENTS instead of CHECK-CONTENTS.
- Fix bug caused by LEAF-DELETE-KEY. Reported and fixed by Brad Beveridge. - Fix some typos (:VALUE should be :VALUE=) in index.lisp. - Version 0.1.11.
When deleting a key from a btree, use the BTREE-KEY= function (not P-EQL) to determine the position of the key. Reported and fixed by Leonid Novikov.
Fix btree bug during btree-delete: if we're deleting the biggest key from a leaf, we should update the parents so they'll use the key that has now become the biggest. (Henrik Hjelte.) Try to signal an error when an incompatible value is given to indexed slots, e.g. trying to put a string into a slot with a :symbol-index. (Henrik Hjelte) Signal an error during when putting duplicate values into a slot for which duplicate values are not allowed. (Henrik Hjelte) Use BTREE-VALUE-TYPE, not BTREE-KEY-TYPE, when type checking a value during BTREE-INSERT. (Henrik Hjelte) Wrap COMPILE-FILE calls in a WITH-COMPILATION-UNIT to prevent superfluous warnings about undefined functions.
Fix a bug in LEAF-DELETE-KEY (thanks to Henrik Hjelte). Add RUCKSACK-DELETE-OBJECT, RUCKSACK-DELETE-OBJECTS and RUCKSACK-ROOT-P (suggested by Henrik Hjelte). I haven't tested these functions yet.
Version 0.1.5: removed ^M line terminators from all source files (thanks to Attila Lendvai).
rucksack 0.1.3 * use binary search instead of linear search in find-subnode and find-binding-in-node
rucksack 0.1.2 * btree-max-node-size now defaults to 32 instead of 100
Make sure that indexing works correctly with subclasses. Fix some more indexing bugs.
Do a FINISH-OUTPUT at the end of a transaction commit (suggested by Marco Baringer). Add :KEY-KEY and :VALUE-KEY initargs to btrees. Add some standard slot indexes. Add :UNIQUE initarg for persistent slots (not finished yet).
Fix bugs in BTREE-DELETE and SPLIT-BTREE-NODE. Rename BTREE-DELETE to BTREE-DELETE-KEY and implement BTREE-DELETE for btrees with non-unique keys. Add stress test for btrees. Implement the :MIN, :MAX, :INCLUDE-MIN, :INCLUDE-MAX and :ORDER arguments for BTREE-MAP. Add some more CL mirror functions like P-MAPCAR, P-MAPC, P-DELETE-IF, etcetera.
Clean up btree code. Add BTREE-DELETE. (From Edi Weitz.)
Improve error reporting for btree errors (from Edi Weitz).
Provide restarts for BTREE-SEARCH (from Edi Weitz).
Move tests from obsolete test files to test.lisp and adapt them to the current Rucksack version. Start testing btrees: the basics work, but with large btrees (20,000 nodes or more?) I get GC errors again. It seems that blocks are deallocated that shouldn be, so my guess is that these are due to a mismatch between the liveness of objects that are on disk and their corresponding in-memory versions.
Merged patches for OpenMCL from Marco Baringer.
Some trivial CVS header changes.
Created Rucksack CVS repository on common-lisp.net.
This form allows you to request diffs between any two revisions of this file. For each of the two "sides" of the diff, select a symbolic revision name using the selection box, or choose 'Use Text Field' and enter a numeric revision.
|Powered by ViewVC 1.1.5|