C callbacks ? Re: Is Stackless Python DEAD?
Gordon McMillan
gmcm at hypernet.com
Tue Nov 6 14:02:11 EST 2001
Frederic Giacometti wrote:
>
> "Gordon McMillan" <gmcm at hypernet.com> wrote in message
[snip]
>> But making Python *truly* stackless means getting rid of all recursions,
>> and that is an enormous task. If you don't do that, you've got a
>> language feature that doesn't work in some apparently random set of
>> circumstances.
>
> But how do you process callbacks to Python from C code (extensions or
> embeded python)?
>
> One has to return to C after executing the Python code, and than C has to
> return to Python after executing the remainer of its code...
All depends on what you mean by "return" <wink>. Try thinking of "callbacks"
and the "return" from callbacks as events.
In Stackless, the Python stack and the C stack are completely separate.
In the case where C code needs to call Python and then do something with
the result (that is, where tail recursion doesn't apply), Christian used
the trick of manufacturing a Python-style frame object that represents the C
code. As far as (Stackless) Python is concerned, it gets dispatched like
any other frame (Stackless' Python "stack" is really a tree).
> I see maintaining hybrid behavior (iterative / recursive calls to the
> interpreter, and 'recursion tolerance') as a requirement...
True. And Stackless (as a 3rd party product) can get away with saying
"Oops, I can't do that". The bar is higher for a core language feature,
though. Which is a shame, because this turns out to be more of a
theoretical problem than a real one.
- Gordon
More information about the Python-list
mailing list