[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