是否有任何Stackless Python像其他语言的项目(Java,Lisp,Haskell,Go等)

spi*_*igo 2 lisp python compiler-construction interpreter haskell

那就是问题所在.有没有其他语言的项目试图模仿无栈python正在为python做什么?

Bas*_*tch 5

Andrew Appel很久以前写过一本书Compilation with Continuations,实现了一些旧版本(110?)的SML/NJ(没有堆栈,但是垃圾收集了"延续帧"),写了一篇论文垃圾收集可以比堆栈更快分配(上个世纪所有这一切).

有几篇论文提到了继续编译,例如弗拉纳根

Scheme具有与延续相关的原语调用/ cc.

此外,Queinnec的Lisp In Small Pieces,甚至是J.Pitrat的书" 人造生物"(有意识机器的良心)中的一章.

常规等等.

最近的GCC提供了非常相似的-fsplit-stack(尤其适用于GCC 的Go语言前端的实现),并且可以在GCC(包括C&C++)编译的许多语言中使用(小心).

鸡方案是打怪技巧与栈(特别是对于尾调用call/cc).

因此,我不认为Stackless Python是第一个考虑这一点(并实现这些想法).

另请参阅调用堆栈 wikipage.

PS.当然还有Haskell,Erlang,Oz ......


ert*_*tes 5

如果你的意思是使用轻量级并发的无堆栈编译,Haskell从一开始就这样做了.IIRC Haskell的第一个编译方案叫做G-machine.后来被STG机取代了.这对于有效的懒惰来说实际上是必要的,但是简单的并发性和并行性是额外的奖励.

这个领域另一个值得注意的语言是Erlang及其糟糕的笑话模仿语言Go,以及像Scheme这样的基于延续的语言.与Haskell不同,它们不使用STG编译方案.