其他语言(Java、Lisp、Haskell、Go等)是否有类似于Stackless Python的项目

其他语言(Java、Lisp、Haskell、Go等)是否有类似于Stackless Python的项目,python,haskell,compiler-construction,lisp,interpreter,Python,Haskell,Compiler Construction,Lisp,Interpreter,这就是问题所在。是否有其他语言的项目试图模仿stackless python为python所做的工作?安德鲁·阿佩尔很久以前写了一本书,实现了SML/NJ的一些旧版本(110?)(没有堆栈,但带有垃圾收集的“延续帧”),并写了一篇论文(所有这些都是在上个世纪) 有几篇论文提到了编译,例如,等等 Scheme有一个与延续相关的原语 还有奎因内克的,甚至还有J.皮特拉特书中的一章 等等 最近的GCC给出了一个非常类似(并且对于GCC前端的实现非常有用),并且在GCC编译的许多语言(包括C&C++)中

这就是问题所在。是否有其他语言的项目试图模仿stackless python为python所做的工作?

安德鲁·阿佩尔很久以前写了一本书,实现了SML/NJ的一些旧版本(110?)(没有堆栈,但带有垃圾收集的“延续帧”),并写了一篇论文(所有这些都是在上个世纪)

有几篇论文提到了编译,例如,等等

Scheme有一个与延续相关的原语

还有奎因内克的,甚至还有J.皮特拉特书中的一章

等等

最近的GCC给出了一个非常类似(并且对于GCC前端的实现非常有用),并且在GCC编译的许多语言(包括C&C++)中可用(小心)

正在用堆栈玩奇怪的把戏(尤其是for和
call/cc

所以我不认为Stackless Python是第一个想到这一点(并实现这些想法)的人

另请参见wikipage


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

Haskell和Erlang都包含(在标准实现中)具有多核支持的微线程/绿色线程、抢占式调度程序和一些模拟通道。我能想到的Stackless唯一一个非常独特的特性是线程的序列化,尽管有时可以通过提供序列化函数状态的方法来伪造它。

如果你指的是轻量级并发的Stackless编译,Haskell从一开始就做到了这一点。Haskell的第一个编译方案被称为G机器。后来被STG机器取代。这对于高效的惰性实际上是必要的,但是简单的并发性和并行性是一个额外的好处


该领域另一个值得注意的语言是Erlang及其拙劣的模仿语言Go,以及Scheme等基于延续的语言。与Haskell不同,它们不使用STG编译方案。

无堆栈python的核心优势在于它提供了一种绕过GIL的方法。除此之外,这并不令人印象深刻。由于其他语言没有GIL,所以执行“stackless python为python做了什么”并不是很有意义。您能否更具体地说明stackless python为python提供了什么语言或运行时功能?因为许多语言支持抢占式绿色线程等,而不需要模仿。