▲ | lstodd 2 days ago | |||||||
It was memmove() on each task switch. So you could forget about d-cache. And that killed performance on anything but benchmarks. | ||||||||
▲ | ack_complete 2 days ago | parent [-] | |||||||
Also caused subtle bugs. I once had to debug a crash in C++ code that turned out to be due to Stackless Python corrupting stack state on Windows. OutputDebugString() would intermittently crash because Stackless had temporarily copied out part of the stack and corrupted the thread's structured exception handling chain. This wasn't obvious because this occurred in a very deep call stack with Stackless much higher up, and it only made sense if you knew that OutputDebugString() is implemented internally by throwing a continuable exception. The more significant problem was that Stackless was a separate distribution. Every time CPython updated, there would be a delay until Stackless updated, and tooling like Python IDEs varied in whether they supported Stackless. | ||||||||
|