On Mon, Dec 13, 2010 at 9:45 PM, Robert Bradshaw <[email protected]> wrote: > On Mon, Dec 13, 2010 at 9:41 PM, Robert Bradshaw > <[email protected]> wrote: >> It appears that something broke circular cimports in Cython, and now >> Sage won't start up (as of >> https://sage.math.washington.edu:8091/hudson/job/sage-tests/388/ ) >> Unfortunately, the tests reported 0 failures for not starting up >> (fixed now), so it looked like all was well. >> >> It looks like the offending patch is >> http://hg.cython.org/cython-devel/rev/6c79b26286ce (or somewhere close >> by). Any ideas? I'm looking into this now. > > Specifically, it's somewhere between > http://hg.cython.org/cython-devel/rev/06a35b532a49 and > http://hg.cython.org/cython-devel/rev/c48f814a8481
FYI, I've figured out what the problem was. With the new function re-declaration code, def functions are created and added to the module as it is executed, rather than initialized as part of the module creation from the method_def struct. While this is arguably the more correct behavior, it broke Sage which was depending on the fact that functions were defined before type imports, and manifested itself because the import was circular. I've added a --disable-function-redefinition option for legacy code like this (which should in the long run get cleaned up, but I don't think we should break outright break it now). Of course, if set, this disables module-level lambdas, etc., but none of those are in use for old code. I'm not sure exactly what to do about this in the long term, but I'm wondering (but not sure) if we should have import, cimport, cdef class, etc. all happen as if they were executed in sequence too, especially in the face of circular imports. - Robert _______________________________________________ Cython-dev mailing list [email protected] http://codespeak.net/mailman/listinfo/cython-dev
