Functional programming 基于每种语言的JVM中的Opt-in-tail调用支持?

Functional programming 基于每种语言的JVM中的Opt-in-tail调用支持?,functional-programming,jvm,programming-languages,vm-implementation,tail-call-optimization,Functional Programming,Jvm,Programming Languages,Vm Implementation,Tail Call Optimization,虽然尾部调用优化看起来不会作为一种常见的优化技术被添加,特别是在Sun被购买之后,但从技术上讲,让运行在VM上的语言自行决定编译器是否以字节码形式发出tailcall指令,难道不可能吗 例如。Java、Groovy可以决定不使用该指令,而Scala或Clojure等更多功能性语言可以发出该指令,HotSpot VM只会优化标记有tailcall?是的,这在技术上是可能的——事实上,Arnold Schwaighofer的一个实验补丁就是这样做的,尽管应用补丁和构建并不容易,因为它目前还没有跟上时

虽然尾部调用优化看起来不会作为一种常见的优化技术被添加,特别是在Sun被购买之后,但从技术上讲,让运行在VM上的语言自行决定编译器是否以字节码形式发出
tailcall
指令,难道不可能吗


例如。Java、Groovy可以决定不使用该指令,而Scala或Clojure等更多功能性语言可以发出该指令,HotSpot VM只会优化标记有
tailcall

是的,这在技术上是可能的——事实上,Arnold Schwaighofer的一个实验补丁就是这样做的,尽管应用补丁和构建并不容易,因为它目前还没有跟上时代的发展

显式尾部调用指令比JVM在尾部位置对函数调用进行透明优化更具优势,因为JVM可以验证您指定的尾部调用是否真的是尾部调用。请参阅下文,了解一些可以完成的验证的解释


我认为JVM的未来不是Java,我希望有时间和天赋的人能够推动JVM的发展。

John Rose的文章的新链接: