我不知道Wiki上的“Stackless速度快10%”是从哪里来的,但是我再也没有试过测量这些性能数字。我无法想象Stackless如何做出重大改变。
Stackless是一个惊人的工具,带有几个组织/政治问题。
第一个来自历史。 Christian Tismer开始谈论10年前最终变成Stackless的事情。他了解他想要什么,但很难解释他在做什么,为什么人们应该使用它。这部分是因为他的背景没有关于协同程序这样的想法的CS培训,并且因为他的演示和讨论都是以实现为导向的,所以对于那些还没有深入了解的人来说,很难理解如何使用它作为解决方案他们的问题。
因此,最初的文档很差。有关于如何使用它的一些描述,以及来自第三方贡献者的最佳描述。根据PyCon的调查数据,在PyCon 2007上,我发表了一篇关于“Using Stackless”的演讲,该演讲非常好。 Richard Tew在收集这些内容方面做得非常好,更新了stackless.com,并在新的Python发行版出现时保持分发。他是EVE Online的开发者CCP Games的雇员,该开发者使用Stackless作为其游戏系统的重要组成部分。
CCP游戏也是人们谈论Stackless时最大的现实世界范例。 Stackless的主要教程是Grant Olson的“Introduction to Concurrent Programming with Stackless Python”,它也是面向游戏的。我认为这给人们一个倾斜的想法,即Stackless是面向游戏的,当时更多的是游戏更容易延续。
另一个困难是源代码。在原来的形式中,它需要对Python的许多部分进行更改,这让Python的领导者Guido van Rossum非常警惕。我认为其中一部分原因是对call/cc的支持,后来被删除为“当有更好的更高级别的表单时,就像支持goto一样”。我对这段历史并不确定,所以请阅读本段文字为“Stackless曾经需要太多改变。”
后来的版本不需要更改,Tismer继续推动将它包含在Python中。虽然有一些考虑,但官方立场(据我所知)是CPython不仅是一个Python实现,而且它是一个参考实现,它不包含Stackless功能,因为它不能由Jython实现或铁蟒。
绝对没有“对代码库有重要修改的计划”。这个来自Arafangion的报价和参考超链接(见评论)大约在2000/2001年。结构变化早已完成,这就是我上面提到的。现在堆积如山是稳定和成熟的,在过去的几年里只对代码库做了一些小小的调整。
Stackless的最后一个限制 - 没有强大的Stackless支持者。 Tismer现在深深地参与了PyPy,这是Python的Python实现。他已经在PyPy中实现了Stackless功能,并认为它比Stackless本身优越得多,并且认为PyPy是未来的方式。 Tew保持Stackless,但他对宣传不感兴趣。我考虑过扮演这个角色,但看不到我能从中获得收入。
虽然如果你想在Stackless培训,请随时contact me! :)
PEP 219是9岁和严重过时。 “从C代码调用Python代码”的困难仅在PEP中讨论的实现中,并且不在Stackless中。 PEP(“Stackless Python”)的名称有点用词不当,它从Stackless中吸取了灵感,就是这样。 – 2009-02-26 13:00:02