>>>>> "GMcM" == Gordon McMillan <gmcm@hypernet.com> writes: >> Is this the semantic difference between Stackless and CPython >> that people are getting all in a lather about? GMcM> What semantic difference? You can't transfer control to a GMcM> coroutine / urthread in a magic method in CPython, either GMcM> <wink>. If I have a library or class that uses threads under the covers, I can create the threads in whatever code block I want, regardless of what is on the call stack above the block. The reason that coroutines / uthreads are different is that the semantics of control transfers are tied to what the call stack looks like a) when the thread is created and b) when a control transfer is attempted. This restriction seems quite at odds with modularity. (Could I import a module that creates a thread within an __init__ method?) The correctness of a library or class depends on the entire call chain involved in its use. It's not at all modular, because a programmer could make a local decision about organizing a particular module and cause errors in a module that don't even use directly. This would occur if module A uses uthreads, module B is a client of module A, and the user writes a program that uses module B. He unsuspectingly adds a call to module A in an __init__ method and *boom*. Jeremy "Python is a language in which the use of uthreads in a module you didn't know existed can render your own program unusable." <wink>
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