Я не знаю, откуда такое «Stackless на 10% быстрее» на Wiki, но опять же я никогда не пытался измерить эти показатели производительности. Я не могу придумать, что делает Stackless, чтобы иметь большое значение.
Stackless - это удивительный инструмент с несколькими организационно-политическими проблемами.
Первый - из истории. Кристиан Тисмер начал говорить о том, что в конечном итоге стало неутешительным около 10 лет назад. У него было представление о том, чего он хотел, но ему было трудно объяснить, что он делает и почему люди должны его использовать. Частично это объясняется тем, что на его фоне не было обучения CS в отношении таких идей, как сопрограммы, и потому, что его презентации и обсуждения ориентированы на реализацию, что трудно для тех, кто еще не проработал в продолжении, чтобы понять, как использовать его в качестве решения для их проблемы.
По этой причине исходная документация была плохой. Были некоторые описания того, как их использовать, с лучшими от сторонних участников. В PyCon 2007 я рассказал о «Using Stackless», который прошел довольно хорошо, согласно данным опроса PyCon. Ричард Тью отлично справился с этим, обновив stackless.com и поддерживая распространение при появлении новых выпусков Python. Он является сотрудником CCP Games, разработчиками EVE Online, который использует Stackless как неотъемлемую часть своей игровой системы.
Игры CCP также являются самым большим примером реального мира, который люди используют, когда говорят о Stackless. Основным учебником для Stackless является «Introduction to Concurrent Programming with Stackless Python» Гранта Олсона, который также ориентирован на игры. Я думаю, что это дает людям перекошенную идею о том, что Stackless ориентирован на игры, тогда как игры более легко ориентируются на продолжение.
Другой трудностью был исходный код.В его первоначальном виде потребовались изменения во многих частях Python, которые заставили Guido van Rossum, руководство Python, настороженно. Частично, я думаю, была поддержка call/cc, которая позже была удалена как «слишком похожая на поддержку goto, когда есть более качественные формы более высокого уровня». Я не уверен в этой истории, поэтому просто прочитайте этот параграф, как «Stackless использовал слишком много изменений».
Более поздние выпуски не требовали изменений, и Tismer продолжал настаивать на его включении в Python. Хотя было некоторое соображение, официальная позиция (насколько мне известно) заключается в том, что CPython является не только реализацией Python, но и подразумевается как эталонная реализация, и она не будет включать функции Stackless, поскольку она не может быть реализована Jython или Iron Python.
планов не существует. "важные изменения, связанные с кодом". Эта цитата и справочная гиперссылка от Arafangion's (см. Комментарий) составляют примерно 2000/2001. Структурные изменения уже давно сделаны, и это то, о чем я говорил выше. Без стаки, поскольку сейчас он стабильный и зрелый, с небольшими изменениями в кодовой базе за последние несколько лет.
Окончательное ограничение с помощью Stackless - нет сильного защитника для Stackless. Tismer теперь глубоко связан с PyPy, который представляет собой реализацию Python для Python. Он реализовал функциональность Stackless в PyPy и считает, что она намного превосходит самого Stackless и считает, что PyPy - это путь в будущее. Tew поддерживает Stackless, но он не заинтересован в адвокации. Я считал себя в этой роли, но не мог понять, как я могу получить от этого доход.
Хотя, если вы хотите тренироваться в Stackless, не стесняйтесь contact me! :)
PEP 219 9 лет и серьезно устарели. Трудности «вызова кода Python из кода C» только в реализации, обсуждаемой в PEP, и не в Stackless. Имя PEP («Stackless Python») является немного неправильным; он черпал вдохновение из Stackless и все. –