Bob Ippolito wrote: > I'm believe that map and filter are non-recursive Can you point me to the code that demonstrates this? Looking at Stackless' src/Python/bltinmodule.c:builtin_map, I see for (i = 0; ; ++i) { ... value = PyEval_CallObject(func, alist); ... PyList_SetItem(result, i, value) ... } which looks recursive to me. > I am not sure about > unicode encode/decode. I don't think it's very common to do a tasklet > switch in the middle of a unicode encode or decode, though :) I thought Stackless was not only about tasklet switching, but also about running without stack... Wouldn't it perform the "hard" switching if the stack is running too deep? >> Py-func1() -> C-func1() -> Py-func2() -> switch to new tasklet >> Py-func3() -> C-func2() -> throw exception() > > > I don't see how it could cause problems unless this is valid: > Py_Func1 -> CPlusPlus_ExceptionCatcher -> Py_Func2 -> > CPlusPlus_ExceptionThrower -> throws exception() It crashes in the process of throwing the exception - not because it finds no exception handler. It crashes because the internal data structures have been corrupted. I should have better made this example: Py-func1() -> C-func1() -> Py-func2() -> switch to new tasklet Py-func3() -> Exception-Catcher -> C-func2() -> throw exception() > If that *is* valid, how the heck does Py_Func2 get cleaned up? I have > to admit that I'm not very familiar with C++'s implementation of > exceptions. Throwing exceptions through Python functions is not supported, indeed. However, I was trying to point out that the entire exception handling mechanism gets corrupted, even if there are valid handlers on the stack. Regards, Martin
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4