[elephant-devel] Reason for
Ian Eslick
eslick at media.mit.edu
Thu Sep 29 16:51:06 UTC 2011
I recall there being problems taking base class injection out of shared-initialize - can initialize-instance manipulate the class precedence list and direct superclasses at that point in the instance initialization?
It occurs to me that, the easiest way to fix this is by policy; remove the functionality in 'shared-initialize (persistent-metaclass)' from the MOP entirely and mandate that persistent classes use the defpclass macro, or that users inherit from persistent-object manually. The macro can do the error checking and base-class injection and be done with it. The tests would have to be updated to stop using the explicit metaclass.
I can make the change and update the tests and then look into the other issues if you concur.
Thanks,
Ian
On Sep 29, 2011, at 12:57 AM, Alex Mizrahi wrote:
>> I also made a change for ccl so we don't inject the class if the dependencies argument was not provided (vs passing it along as a nil argument). I'll look at the alternate placement.
>
> AMOP spec says that users shouldn't add methods to SHARED-INITIALIZE of a metaclass. I think it can be moved to INITIALIZE-INSTANCE and REINITIALIZE-INSTANCE, as they are allowed, and that would also prevent problems with internal updates as these functions are not called on update-instance-for-*. (I.e. you can get rid of the check of whether direct-superclasses were passed or not in that case.)
>
> So that could be a conservative fix (more like bringing it up to the spec) which doesn't change the implementation much.
>
> COMPUTE-PRECEDENCE-LIST sounds like a cleaner way to do it (if we don't really care for DIRECT superclasses), but I haven't read AMOP on this yet, so it is more like a guess.
>
>> These get ccl to pass all but one test.
>> Where are you with getting sbcl to build/pass? I'm testing with 1.0.56
>
> IIRC both CCL and SBCL were passing all tests but CACHING-STYLE-REQUIRED. (Again some MOP part which doesn't work.)
>
> But then I've fixed the test suite itself and got more failures. :)
>
> Can you please check inhibit-rollback (in testconditions) after applying my patches? It crashes lisp, as I understand, through corrupting BDB state. (Problem was previously hidden because of "ignore-conditions".)
>
>
> _______________________________________________
> elephant-devel site list
> elephant-devel at common-lisp.net
> http://common-lisp.net/mailman/listinfo/elephant-devel
More information about the elephant-devel
mailing list