[Cython] PEP 380 approved: syntax for generator delegation

Stefan Behnel stefan_ml at behnel.de
Mon Mar 5 15:26:05 CET 2012


Vitja Makarov, 27.06.2011 22:31:
> 2011/6/27 Stefan Behnel:
>> PEP 380 ("yield from") recently went through the approval gate.
>>
>> http://www.python.org/dev/peps/pep-0380/
>>
>> The implementation in CPython isn't rounded up yet and lots of tests are
>> missing from the test suite. But it's agreed that it'll make it into 3.3,
>> and we should try to support it as well. It's a really nice feature.
> 
> Wow! Interesting thing.
> I think that could be implemented but I think we should try to
> optimize cython generators first.

Coming back to this, the way it's now implemented in CPython is using a new
field "f_yieldfrom" in the frame that the coroutine implementation
automatically delegates to. Cython's coroutine implementation could do the
same thing, and even copy much of the original implementation, by adding a
new field to the coroutine class and updating the send(), throw() and
close() methods accordingly. The interesting changes are those in
Objects/genobject.c and Python/ceval.c in this patch:

http://bugs.python.org/file24214/f8349cbc1b26.diff

That makes it look like most of the work is done for us already.

Stefan


More information about the cython-devel mailing list