Design: 适当的尾调用支持

创建于 2015-06-18  ·  3评论  ·  资料来源: WebAssembly/design

webassembly 是否支持正确的尾调用? 目前https://github.com/WebAssembly/design/blob/master/AstSemantics.md#control -flow-structures 中有一个链接提到了“签名限制的正确尾调用功能”,表明已经考虑过这种支持,但链接指的是后 MVP 功能页面上缺少的锚点: https :

如果答案是“也许”,那么为帮助此类支持做出贡献的最佳方式是什么?

最有用的评论

是的,将支持适当的尾调用,但在 MVP 中可能不支持。 这对于依赖有保证的尾调用优化的函数式语言特别有用。 参见 #33 和 #44 中的讨论。 它的支持方式仍然悬而未决,因为它需要实验和性能测量。

所有3条评论

是的,将支持适当的尾调用,但在 MVP 中可能不支持。 这对于依赖有保证的尾调用优化的函数式语言特别有用。 参见 #33 和 #44 中的讨论。 它的支持方式仍然悬而未决,因为它需要实验和性能测量。

我看过#33 和#44,#45 似乎也相关。 但是我怀疑通过任何基于控制流分析的机制(无论是否支持不可约流控制)都可以实现适当的尾调用。

正如您所说,函数式语言依赖于有保证的尾调用优化,尽管此类术语令人不悦,因为它与 C/C++/etc 编译器执行的 TCO 类型混淆,其中可能对哪些调用有资格施加各种限制。 因此,改为使用术语“适当的尾调用”。 在具有适当尾调用的语言中,任何位于尾位置的调用都需要放弃调用激活帧所占用的存储空间。 这包括间接调用,因此难以进行本地控制流分析。 所以函数式语言编译器/运行时通常有明确的尾调用操作和调用约定来支持它们。

很高兴您对适当的尾调用支持持开放态度,我可以理解这个问题超出了 MVP 的范围。 但是,与其只是关闭它,还可以让它保持打开状态,但给它一个后 MVP / post-whatever / icebox 的标签,以便很明显事情还没有解决?

糟糕,抱歉,我不是有意在修复文档之前关闭。 我打开 #190 来解决这个问题(并关闭这个问题)。 我们一直在将问题移至设计文本,因为它使新读者更容易理解事物的状态,而不是阅读提交问题的整个状态。

此页面是否有帮助?
0 / 5 - 0 等级

相关问题

void4 picture void4  ·  5评论

mfateev picture mfateev  ·  5评论

arunetm picture arunetm  ·  7评论

Thaina picture Thaina  ·  8评论

bobOnGitHub picture bobOnGitHub  ·  6评论