[rucksack-devel] Re: Rucksack, ECLM
Nikodemus Siivola
nikodemus at random-state.net
Thu May 18 08:56:11 UTC 2006
"Arthur Lemmens" <alemmens at xs4all.nl> writes:
> Hmm. This sounds like a "don't do that then" scenario to me. I suppose
> we *could* automatically create a new object ID for X in the second
> transaction and commit it to disk, but I don't think that's a good idea.
> Changing object IDs behind the scenes sounds like asking for big trouble.
I was about to say something about Lisp and Rucksack identities of objects,
but I just realized what the _real_ trouble with this is: slot values.
If X was initialized as (make-instance 'my-p-thing :slot
(make-instance 'my-p-thing-2)), then by the time we tried to add the
root neither Lisp nor Rucksack would have the P-THING-2 around...
> Probably the best approach would be to have the GC automatically mark
> the in-memory copy of X as dead. Then we could signal an error (how
> about NECROPHILIA-NOT-ALLOWED-HERE?) for code that tries to do something
> with a dead object.
I assume you mean "committing the transaction", not GC? If legality of
the add-root bit depends on the amount of garbage collected in between.
But given the trouble with slot-values, yes, I think you are right.
I wonder if there should be a way to keep transient roots, though (eg.
P-LET, which informs Rucksack about the variables it binds).
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