[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