I have found out the problem with Cells on abcl after a bit of debugging.

The function c-unlink-useds in link.lisp uses delete, which somehow
destructively modifies something it should not - the list of useds
gets one item shorter (not the list inside the cell but the list
"useds" in c-unlink-unused, which apparently shares structure with the
list inside the cell, but who knows). Replacing delete with remove
does the trick. I don't know if this is caused by abcl's delete being
buggy but I doubt it, since the implementation of delete in abcl is
taken from cmucl, and that should be bug-free enough ;) however, I'll
investigate this further.

(Thomas, I saw you at the ELS but in the end I didn't want to bother
you with this - I wanted to keep the fun for me ;) thanks for your
offer of help, anyway).

So now tests appear to pass. And, apart from using remove and adding a
few read conditionals, no changes to cells are required for it to work
on abcl. Abcl itself needs to be slightly modified (it needs to expose
a couple of internal MOP functions). I'll talk to the devs about
incorporating these changes on trunk and hopefully in the coming 0.15
release of abcl.

Bye,
Alessio S.

_______________________________________________
cells-devel site list
cells-devel@common-lisp.net
http://common-lisp.net/mailman/listinfo/cells-devel

Reply via email to