Não sei de onde veio esse "Stackless é 10% mais rápido" no Wiki, mas, novamente, nunca tentei medir esses números de desempenho. Não consigo pensar no que a Stackless faz para fazer uma diferença tão grande.
Stackless é uma ferramenta incrível com vários problemas organizacionais / políticos.
O primeiro vem da história. Christian Tismer começou a falar sobre o que acabou se tornando Stackless cerca de 10 anos atrás. Ele tinha uma idéia do que queria, mas teve dificuldade em explicar o que estava fazendo e por que as pessoas deveriam usá-lo. Isso se deve em parte ao fato de sua formação não ter o treinamento em CS sobre idéias como corotinas e porque suas apresentações e discussões são muito orientadas para a implementação, o que é difícil para qualquer um que ainda não esteja em uma continuação até a cintura para entender como usá-lo como uma solução para o problema. seus problemas.
Por esse motivo, a documentação inicial era ruim. Havia algumas descrições de como usá-lo, com o melhor de colaboradores de terceiros. Na PyCon 2007, dei uma palestra sobre " Using Stackless ", que foi muito bem, de acordo com os números da pesquisa da PyCon. Richard Tew fez um ótimo trabalho coletando-os, atualizando o stackless.com e mantendo a distribuição quando novos lançamentos do Python surgirem. Ele é funcionário da CCP Games , desenvolvedora do EVE Online, que usa o Stackless como parte essencial do sistema de jogo.
Os jogos do PCC também são o maior exemplo do mundo real que as pessoas usam quando falam sobre Stackless. O principal tutorial para Stackless é " Introdução à programação simultânea com Stackless Python ", de Grant Olson , que também é orientado para o jogo. Acho que isso dá às pessoas uma ideia distorcida de que o Stackless é orientado a jogos, quando é mais que os jogos são mais facilmente orientados à continuação.
Outra dificuldade tem sido o código fonte. Em sua forma original, foram necessárias alterações em muitas partes do Python, o que deixou Guido van Rossum, líder do Python, cauteloso. Parte do motivo, penso eu, foi o suporte à chamada / cc, que mais tarde foi removido como sendo "muito parecido com o suporte a um goto quando existem melhores formulários de nível superior". Não tenho certeza sobre esse histórico, apenas leia este parágrafo como "O Stackless costumava exigir muitas alterações".
Versões posteriores não exigiam as alterações, e o Tismer continuou pressionando pela inclusão no Python. Embora tenha havido alguma consideração, a posição oficial (até onde eu sei) é que o CPython não é apenas uma implementação Python, mas serve como uma implementação de referência, e não inclui a funcionalidade Stackless, porque não pode ser implementada pelo Jython. ou Iron Python.
Não há absolutamente nenhum plano para " alterações significativas na base de código ". Esse link e citação e referência de Arafangion (veja o comentário) são de aproximadamente 2000/2001. As mudanças estruturais foram feitas há muito tempo, e é o que eu mencionei acima. O Stackless como está agora é estável e maduro, com apenas pequenos ajustes na base de código nos últimos anos.
Uma limitação final com o Stackless - não há um forte defensor do Stackless. O Tismer agora está profundamente envolvido com o PyPy , que é uma implementação do Python para Python. Ele implementou a funcionalidade Stackless no PyPy e a considera muito superior à própria Stackless, e considera que o PyPy é o caminho do futuro. Tew mantém Stackless, mas ele não está interessado em advocacy. Eu considerei estar nessa função, mas não conseguia ver como poderia obter uma receita com isso.
Embora se você quiser treinar no Stackless, não hesite em entrar em contato comigo ! :)
Também estou interessado nas respostas aqui. Joguei um pouco com o Stackless e parece que seria uma boa adição sólida ao Python padrão.
O PEP 219 menciona dificuldades em potencial ao chamar o código Python do código C, se o Python quiser mudar para uma pilha diferente. Seria necessário haver maneiras de detectar e impedir isso (para evitar destruir a pilha C). Eu acho que isso é tratável, então também estou me perguntando por que o Stackless deve permanecer por conta própria.
fonte