[rucksack-devel] Rucksack philosophy

Nikodemus Siivola nikodemus at random-state.net
Thu May 18 12:23:32 UTC 2006


Taking the high-level view here (describing the ideal state
of things).

Semantic constraints

* A persistent object always belongs to exactly one rucksack,
  which must be open for the instance to be valid.

* The rucksack the object belongs to is the sole arbitrer of
  its identity: EQ is meaningless when talking about persistent
  objects.

* References to non-root persistent objects outside transactions are
  forbidden. Root-objects are (1) objects in RUCKSACK-ROOTS, (2)
  indexed objects [maybe (3) lexical roots declared with WITH-ROOTS].

* Reading and writing a persistent slot outside a transaction is
  forbidden.

* Transaction provide basic ACID properties, though the level of
  isolation may be in variance with the usual definition.

Implementation 

* Enforcement of semantic constraints is preferable when possible
  without extreme costs.

* Correctness is paramount.

* Flexibility is more important then extreme speed.

* Portable Common Lisp. (Accepted extras limited to threading & MOP.)

Am I on the right page?

Open questions

* Nested transactions: do we want them? (My gut feeling would be
  to prohibit them initially: they can always be added later.)

* Is the serialization API part of Rucksacks public interface?

Cheers,

  -- Nikodemus              Schemer: "Buddha is small, clean, and serious."
                   Lispnik: "Buddha is big, has hairy armpits, and laughs."



More information about the rucksack-devel mailing list