[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