The new forward declarations are a bit kludgy (example), and I don't think it'll be very maintainable in the long term. I think changing a class's inheritance should require editing one file, not two (the .pxd) or more (every .pxd that uses it).
It works for now, until we can wipe out the entire
include/directory, and to be fair it's only so cumbersome due to PySoy's size and how the classes are interconnected.
The nogil allowance for cdef methods is a massive step toward stomping out the multicore race conditions. One of the developers testing just the fixes to
soy.bodiesnoticed the examples often running longer than before, though there's a lot more cleanup to be done before this is package-wide.
One of the roadblocks I hit is the nogil fix can't be used with our
Childrenclass, which stores pointers to Python objects of the same type and uses those pointers (through a typecast) to access their cdef methods in a
While our usage is GIL-safe, the current version of Pyrex still wants to throw in an
INCREFjust to be extra-cautious, which makes it not. I've let Greg know about this, we'll see if it can't be fixed soon.
In the meantime, I've called for an IRC sprint this weekend for the pending cleanup, refactoring, documentation, and testing that needs doing before beta-3. Join
irc.freenode.netif you want to pitch-in!