2 years agoDon't assume that non-simple strings always have fill-pointers when serializing... master
alemmens [Mon, 20 Jun 2011 17:22:08 +0000] 
Don't assume that non-simple strings always have fill-pointers when  serializing. Thanks to

4 years ago* 2009-05-27 - version 0.1.20
alemmens [Wed, 27 May 2009 14:26:25 +0000] 
* 2009-05-27 - version 0.1.20

Fix a bug in the creation of transaction-ids (bug reported by Klaus Harbo).

6 years agoVersion 0.1.19:
alemmens [Mon, 31 Mar 2008 18:51:49 +0000] 
Version 0.1.19:

Don't use wildcards but delete only the four rucksack files when
opening an existing Rucksack in :SUPERSEDE mode (bug reported
by Volkan YAZICI).

6 years agoNotes for version 0.1.18.
alemmens [Sun, 2 Mar 2008 22:30:07 +0000] 
Notes for version 0.1.18.

6 years agoFix a bug in RUCKSACK-DO-SLOT: it didn't work correctly when the
alemmens [Sun, 2 Mar 2008 22:29:05 +0000] 
Fix a bug in RUCKSACK-DO-SLOT: it didn't work correctly when the
EQUAL argument wasn't supplied.

6 years agoVersion 0.1.17: add some list functions and replace persistent lists
alemmens [Tue, 19 Feb 2008 22:44:05 +0000] 
Version 0.1.17: add some list functions and replace persistent lists
by persistent btrees for non-unique slot indexes.

6 years agoMention the tutorial.
alemmens [Mon, 11 Feb 2008 14:21:57 +0000] 
Mention the tutorial.

6 years agoMoved documentation files to doc directory.
alemmens [Mon, 11 Feb 2008 13:00:10 +0000] 
Moved documentation files to doc directory.

6 years agoDon't forget to mention Brad's tutorial.
alemmens [Mon, 11 Feb 2008 12:55:32 +0000] 
Don't forget to mention Brad's tutorial.

6 years agoVersion 0.1.16: improved performance by decreasing persistent consing for btrees
alemmens [Mon, 11 Feb 2008 12:47:52 +0000] 
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

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.


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

Fix a bug in TEST-NON-UNIQUE-BTREE: it should call

6 years agoCreate new doc directory and add tutorial by Brad Beveridge.
alemmens [Mon, 11 Feb 2008 11:45:57 +0000] 
Create new doc directory and add tutorial by Brad Beveridge.

6 years agoVersion 0.1.15.
alemmens [Sun, 3 Feb 2008 12:32:15 +0000] 
Version 0.1.15.

Fixed a garbage collector bug reported by Sean Ross. When the garbage
collector deletes object ids from the object table (because the
objects are dead and we may want to reuse their ids later for other
objects), it should also remove that object from the cache.  If it
doesn't, there's a possibility that the object id will be reused later
for a new object and the cache wil still refer to the old in-memory

6 years agoVersion 0.1.14.
alemmens [Thu, 31 Jan 2008 20:26:08 +0000] 
Version 0.1.14.

Class and slot indexes now map directly to objects instead of
object-ids.  This fixes a bug where the garbage collector forgot
to add all indexed objects to the root set. (Suggested by Sean

Increased default cache size to 100,000 objects.

alemmens [Thu, 31 Jan 2008 13:03:39 +0000] 
to fix a compiler warning reported by Brad Beveridge.

6 years agoAdd a test to verify that throwing an error inside a with-transaction form
alemmens [Thu, 24 Jan 2008 12:39:45 +0000] 
Add a test to verify that throwing an error inside a with-transaction form
causes a transaction rollback.

6 years agoSimplify 'getting started' instructions (suggested by Edi Weitz).
alemmens [Thu, 24 Jan 2008 12:38:52 +0000] 
Simplify 'getting started' instructions (suggested by Edi Weitz).

6 years agoMove all test files to the new tests directory.
alemmens [Wed, 23 Jan 2008 15:49:07 +0000] 
Move all test files to the new tests directory.

6 years agoActually commit the files in the new test directory.
alemmens [Wed, 23 Jan 2008 15:46:31 +0000] 
Actually commit the files in the new test directory.

6 years agoGet started with import-export and with a manual.
alemmens [Wed, 23 Jan 2008 15:45:03 +0000] 
Get started with import-export and with a manual.

6 years agoVersion 0.1.13:
alemmens [Wed, 23 Jan 2008 15:43:42 +0000] 
Version 0.1.13:

Add Brad Beveridge's basic unit test suite (modified to work
with lisp-unit instead of 5am).

Add Chris Riesbeck's lisp-unit library to help with creating unit test suites.

6 years agoVersion 0.1.12.
alemmens [Tue, 22 Jan 2008 17:02:07 +0000] 
Version 0.1.12.

Use (ARRAY-DIMENSION buffer 0) instead of LENGTH in
LOAD-BUFFER, because we want to ignore the fill pointer
here.  Thanks to Sean Ross.

6 years ago- Fix bug caused by LEAF-DELETE-KEY. Reported and fixed by Brad Beveridge.
alemmens [Tue, 22 Jan 2008 15:59:24 +0000] 
- 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.

6 years agoWhen deleting a key from a btree, use the BTREE-KEY= function (not P-EQL) to determine
alemmens [Wed, 16 Jan 2008 15:08:20 +0000] 
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.

6 years agoFix credits: some of yesterday's patches were submitted by Takehiko
alemmens [Mon, 13 Aug 2007 15:14:28 +0000] 
Fix credits: some of yesterday's patches were submitted by Takehiko
Abe, not by Henrik Hjelte.

6 years agoFix btree bug during btree-delete: if we're deleting the biggest key
alemmens [Sun, 12 Aug 2007 13:01:13 +0000] 
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)

superfluous warnings about undefined functions.

7 years agoFix a bug in LEAF-DELETE-KEY (thanks to Henrik Hjelte).
alemmens [Tue, 13 Mar 2007 13:13:00 +0000] 
Fix a bug in LEAF-DELETE-KEY (thanks to Henrik Hjelte).

RUCKSACK-ROOT-P (suggested by Henrik Hjelte).  I haven't
tested these functions yet.

7 years agoVersion 0.1.7 - Get rid of two SBCL compiler warnings. (Reported by Cyrus Harmon.)
alemmens [Mon, 22 Jan 2007 10:55:45 +0000] 
Version 0.1.7 - Get rid of two SBCL compiler warnings. (Reported by Cyrus Harmon.)

7 years agoVersion 0.1.6 - Added serializing/deserializing of structures. Only
alemmens [Mon, 22 Jan 2007 10:23:14 +0000] 
Version 0.1.6 - Added serializing/deserializing of structures.  Only
works on SBCL.  (Thanks to Levente Mészáros.)

7 years agoVersion 0.1.5: removed ^M line terminators from all source files
alemmens [Sat, 20 Jan 2007 18:17:55 +0000] 
Version 0.1.5: removed ^M line terminators from all source files
(thanks to Attila Lendvai).

7 years agorucksack 0.1.4
charmon [Tue, 16 Jan 2007 08:57:43 +0000] 
rucksack 0.1.4
 * add new parameter *collect-garbage-on-commit*
 * add (:inhibit-gc nil) keyword arg to with-transaction
 * add without-rucksack-gcing macro
 * only collect garbage on transaction-commit when
   *collect-garbage-on-commit* is not nil

7 years agorucksack 0.1.3
charmon [Tue, 16 Jan 2007 08:47:36 +0000] 
rucksack 0.1.3
 * use binary search instead of linear search in find-subnode and

7 years agorucksack 0.1.2
charmon [Tue, 16 Jan 2007 08:42:24 +0000] 
rucksack 0.1.2
 * btree-max-node-size now defaults to 32 instead of 100

7 years agorucksack 0.1.1
charmon [Tue, 16 Jan 2007 08:31:49 +0000] 
rucksack 0.1.1
 * propogate unique fropm the direct slot-definition(s) to the
   effective slot definition

7 years agoFLET MAP-INDEX should be LABELS MAP-INDEXES (thanks Cyrus Harmon).
alemmens [Thu, 30 Nov 2006 10:45:34 +0000] 
FLET MAP-INDEX should be LABELS MAP-INDEXES (thanks Cyrus Harmon).

The :EQUAL parameter for MAP-INDEX-DATA wasn't handled correctly
for indexes with non-unique keys (reported by Cyrus Harmon).

7 years agoTake care of some differences between the MOP implementations of Lispworks
alemmens [Mon, 4 Sep 2006 12:34:34 +0000] 
Take care of some differences between the MOP implementations of Lispworks
and SBCL.  Lispworks doesn call (SETF SLOT-VALUE-USING-CLASS) in
after a class is redefined and a new instance is created, but SBCL doesn't.
All tests now work for Lispworks (5.0) and SBCL (0.9.16).

Some work on a copying GC.

7 years agoHandle updates of in-memory persistent objects by writing a method for
alemmens [Sun, 3 Sep 2006 14:40:50 +0000] 
Handle updates of in-memory persistent objects by writing a method for
Lispś UPDATE-INSTANCE-FOR-REDEFINED-CLASS that marks the object as dirty

7 years agoGet rid of the Lispworks specific PROCESS-A-SLOT-OPTION stuff and handle
alemmens [Fri, 1 Sep 2006 13:57:06 +0000] 
Get rid of the Lispworks specific PROCESS-A-SLOT-OPTION stuff and handle
the slot options in a way that's compatible with AMOP.

because it turns out to be unnecessary (see details in notes.txt)

Add explanation to test-index-1a.lisp about the use of
  (eval-when (:compile-toplevel :load-toplevel :execute) ...)

Replace *RUCKSACK* by RS in the test-*.lisp files.

7 years agoGet rid of the Lispworks specific PROCESS-A-CLASS-OPTION stuff and handle
alemmens [Thu, 31 Aug 2006 20:09:17 +0000] 
Get rid of the Lispworks specific PROCESS-A-CLASS-OPTION stuff and handle
the :INDEX class option in a way that's compatible with the AMOP.

7 years agoAdd list of things to do, list of things done, and some random notes.
alemmens [Thu, 31 Aug 2006 15:53:57 +0000] 
Add list of things to do, list of things done, and some random notes.

7 years agoWrite test case for slots with redefined indexes. This also tests
alemmens [Thu, 31 Aug 2006 15:50:27 +0000] 
Write test case for slots with redefined indexes.  This also tests

7 years agoAdd test cases for schema updates and user defined methods of
alemmens [Thu, 31 Aug 2006 15:47:58 +0000] 
Add test cases for schema updates and user defined methods of

Indexing: compare the specified slot/class indexes to the indexes that
exist in the rucksack, *not* to the indexes specified in the previous
version of the class definition.  Otherwise we get inconsistencies when
we recompile class definitions from scratch with a rucksack that already

7 years ago- FINALIZE-INHERITANCE: compute slot diffs for obsolete schemas.
alemmens [Wed, 30 Aug 2006 14:05:40 +0000] 
- FINALIZE-INHERITANCE: compute slot diffs for obsolete schemas.


alemmens [Tue, 29 Aug 2006 13:50:18 +0000] 
and friends.

7 years agoSome work on schema updates.
alemmens [Tue, 29 Aug 2006 11:41:40 +0000] 
Some work on schema updates.

Example 1: indexing should still work after recompiling.

RUCKSACK-UPDATE-SLOT-INDEXES: remove indexes for old slots that don exist

Compute persistent slots at the right moment.

7 years agoMake sure that indexing works correctly with subclasses.
alemmens [Sat, 26 Aug 2006 12:55:34 +0000] 
Make sure that indexing works correctly with subclasses.
Fix some more indexing bugs.

7 years agoPut TEST back.
alemmens [Thu, 24 Aug 2006 15:45:02 +0000] 
Put TEST back.

7 years agoThe class and slot indexes were normal hash tables, but they should be
alemmens [Thu, 24 Aug 2006 15:21:25 +0000] 
The class and slot indexes were normal hash tables, but they should be
persistent objects like everything else: I replaced them by btrees.

Get PROCESS-LOCK and PROCESS-UNLOCK working on SBCL (thanks to Geoff Cant).

7 years agoAdd indexing example (doesn't work yet).
alemmens [Fri, 11 Aug 2006 12:52:53 +0000] 
Add indexing example (doesn't work yet).

7 years agoSave and load the index tables when closing/opening a rucksack.
alemmens [Fri, 11 Aug 2006 12:44:21 +0000] 
Save and load the index tables when closing/opening a rucksack.
Add/remove indexes to/from the roots when necessary.
Implement the :UNIQUE slot option.
Improve predefined index specs.

7 years agoDo a FINISH-OUTPUT at the end of a transaction commit (suggested by Marco Baringer).
alemmens [Thu, 10 Aug 2006 12:36:16 +0000] 
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).

7 years agoAdd a SERIAL-TRANSACTION-RUCKSACK-CLASS that allows for only one transaction
alemmens [Wed, 9 Aug 2006 13:23:18 +0000] 
Add a SERIAL-TRANSACTION-RUCKSACK-CLASS that allows for only one transaction
at a time (by using a transaction lock).

Don't do any GC at all while a transaction is writing objects to disk.
Instead we keep track of the amount of disk space allocated by the committing
transaction.  Then we do a (partial) GC immediately after committing the

7 years agoAdd a flag to MARK-AND-SWEEP-HEAP to prevent recursive GC calls.
alemmens [Tue, 8 Aug 2006 15:48:24 +0000] 
Add a flag to MARK-AND-SWEEP-HEAP to prevent recursive GC calls.

7 years agoFix bugs in BTREE-DELETE and SPLIT-BTREE-NODE.
alemmens [Tue, 8 Aug 2006 13:35:18 +0000] 

btrees with non-unique keys.

Add stress test for btrees.

Implement the :MIN, :MAX, :INCLUDE-MIN, :INCLUDE-MAX and :ORDER arguments

Add some more CL mirror functions like P-MAPCAR, P-MAPC, P-DELETE-IF, etcetera.

7 years agoClean up btree code. Add BTREE-DELETE. (From Edi Weitz.)
alemmens [Fri, 4 Aug 2006 22:04:43 +0000] 
Clean up btree code.  Add BTREE-DELETE.  (From Edi Weitz.)

7 years agoImprove error reporting for btree errors (from Edi Weitz).
alemmens [Fri, 4 Aug 2006 11:06:04 +0000] 
Improve error reporting for btree errors (from Edi Weitz).

7 years agoProvide restarts for BTREE-SEARCH (from Edi Weitz).
alemmens [Fri, 4 Aug 2006 10:59:10 +0000] 
Provide restarts for BTREE-SEARCH (from Edi Weitz).

7 years agoUse Erik Naggum's SANS function instead of REMF. (From Edi Weitz.)
alemmens [Fri, 4 Aug 2006 10:37:59 +0000] 
Use Erik Naggum's SANS function instead of REMF.  (From Edi Weitz.)

7 years agoAdd missing SCAN-CONTENTS methods for efficiency (from Edi Weitz).
alemmens [Fri, 4 Aug 2006 10:26:23 +0000] 
Add missing SCAN-CONTENTS methods for efficiency (from Edi Weitz).

7 years agoEnsure unique transaction IDs (from Edi Weitz).
alemmens [Thu, 3 Aug 2006 18:37:50 +0000] 
Ensure unique transaction IDs (from Edi Weitz).

7 years agoWITH-TRANSACTION now returns the result of the body as first value. (From Edi Weitz.)
alemmens [Thu, 3 Aug 2006 11:52:46 +0000] 
WITH-TRANSACTION now returns the result of the body as first value.  (From Edi Weitz.)

7 years agoLet SETF functions give correct return values. (From Edi Weitz.)
alemmens [Thu, 3 Aug 2006 11:39:39 +0000] 
Let SETF functions give correct return values.  (From Edi Weitz.)

7 years agoLet heap grow more slowly after a garbage collection (from Edi Weitz).
alemmens [Thu, 3 Aug 2006 11:31:17 +0000] 
Let heap grow more slowly after a garbage collection (from Edi Weitz).

7 years agoMake sure that MAX-HEAP-END is always an integer (from Edi Weitz).
alemmens [Thu, 3 Aug 2006 11:05:45 +0000] 
Make sure that MAX-HEAP-END is always an integer (from Edi Weitz).

7 years agoReplace free-list-full by free-list-empty. Fix bug in find-block. (From Edi Weitz)
alemmens [Thu, 3 Aug 2006 10:59:52 +0000] 
Replace free-list-full by free-list-empty. Fix bug in find-block. (From Edi Weitz)

7 years agoMore subtle merging of persistent slot options (from Nikodemus Siivola).
alemmens [Sun, 28 May 2006 12:07:55 +0000] 
More subtle merging of persistent slot options (from Nikodemus Siivola).

7 years agoFix a few obsolete occurrences of CLASS instead of RUCKSACK-CLASS (from
alemmens [Sun, 28 May 2006 11:22:54 +0000] 
Fix a few obsolete occurrences of CLASS instead of RUCKSACK-CLASS (from
Aycan iRiCAN).

7 years agoKeep ASDF file in sync with make file.
alemmens [Sun, 28 May 2006 11:18:47 +0000] 
Keep ASDF file in sync with make file.

7 years agoRemoved obsolete test files.
alemmens [Thu, 25 May 2006 13:03:29 +0000] 
Removed obsolete test files.

7 years agoMove tests from obsolete test files to test.lisp and adapt them to the
alemmens [Thu, 25 May 2006 13:01:38 +0000] 
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.

7 years agoFixed enough garbage collector bugs to get the TEST-CREATE, TEST-LOAD
alemmens [Wed, 24 May 2006 20:45:09 +0000] 
Fixed enough garbage collector bugs to get the TEST-CREATE, TEST-LOAD
and TEST-UPDATE functions running.

7 years agoSome more garbage collector fixes.
alemmens [Sun, 21 May 2006 21:00:03 +0000] 
Some more garbage collector fixes.

7 years agoRemove wrong comment.
alemmens [Sat, 20 May 2006 21:19:56 +0000] 
Remove wrong comment.

7 years agoSome more work towards getting a working GC. Also removed some dead code.
alemmens [Sat, 20 May 2006 21:16:58 +0000] 
Some more work towards getting a working GC.  Also removed some dead code.

7 years agoFinish CACHE-TOUCH-OBJECT patch (hopefully for real this time).
alemmens [Sat, 20 May 2006 20:25:32 +0000] 
Finish CACHE-TOUCH-OBJECT patch (hopefully for real this time).

7 years agoStart of "Rucksack internals" document.
alemmens [Sat, 20 May 2006 15:36:18 +0000] 
Start of "Rucksack internals" document.

7 years agoFix an obsolete comment.
alemmens [Sat, 20 May 2006 15:35:37 +0000] 
Fix an obsolete comment.

7 years agoLet CACHE-TOUCH-OBJECT have an object instead of an object-id as parameter.
alemmens [Sat, 20 May 2006 15:07:28 +0000] 
Let CACHE-TOUCH-OBJECT have an object instead of an object-id as parameter.
(From Nikodemus Siivola.)

7 years agoMore robust version of WITH-TRANSACTION (from Nikodemus Siivola).
alemmens [Sat, 20 May 2006 10:41:47 +0000] 
More robust version of WITH-TRANSACTION (from Nikodemus Siivola).

alemmens [Sat, 20 May 2006 10:33:49 +0000] 
Changed BLOCK-ALIVE-P: it's now too conservative instead of not
conservative enough.  This still needs fixing.

7 years agoAdapt SWEEP-SOME-HEAP-BLOCKS to new object layout (fix from Edi Weitz).
alemmens [Thu, 18 May 2006 22:21:51 +0000] 
Adapt SWEEP-SOME-HEAP-BLOCKS to new object layout (fix from Edi Weitz).

7 years agoFix bug in QUEUE-PEEK (fix from Edi Weitz).
alemmens [Thu, 18 May 2006 22:09:40 +0000] 
Fix bug in QUEUE-PEEK (fix from Edi Weitz).

7 years agoFix bug in garbage collector where max-heap-size sometimes isn't initialized
alemmens [Thu, 18 May 2006 15:38:31 +0000] 
Fix bug in garbage collector where max-heap-size sometimes isn't initialized
(from Edi Weitz).

7 years agoMerged patches for OpenMCL from Marco Baringer.
alemmens [Thu, 18 May 2006 12:46:57 +0000] 
Merged patches for OpenMCL from Marco Baringer.

7 years agoAdded ASDF system file (from Edi Weitz).
alemmens [Thu, 18 May 2006 09:08:13 +0000] 
Added ASDF system file (from Edi Weitz).

7 years agoSome trivial CVS header changes.
alemmens [Tue, 16 May 2006 22:01:27 +0000] 
Some trivial CVS header changes.

7 years agoCreated Rucksack CVS repository on
alemmens [Tue, 16 May 2006 21:16:34 +0000] 
Created Rucksack CVS repository on