19
我有一个.NET 4.0应用程序,大量使用尾递归(在F#中编程)。它在.NET VM上运行良好,但在Mono-3.0.1上运行不足。单声道消除尾声
我试过用mono --optimize=tailc
运行,但这似乎没有改变任何东西。
有没有办法强制单声道消除尾巴呼叫? 有没有办法增加单声道的最大堆栈大小?
我有一个.NET 4.0应用程序,大量使用尾递归(在F#中编程)。它在.NET VM上运行良好,但在Mono-3.0.1上运行不足。单声道消除尾声
我试过用mono --optimize=tailc
运行,但这似乎没有改变任何东西。
有没有办法强制单声道消除尾巴呼叫? 有没有办法增加单声道的最大堆栈大小?
有一些有用的答案非常相似的更近的问题:Stack size under Mono
正如罗伯特·哈维在评论中已经指出,为F#单打破了/不完整的尾调用支持(bug 476785: Tail call support in F#)。解决这个问题是on Mono's runtime ongoing projects list。
堆栈大小可以使用System.Threading.Thread
构造函数或在PE头中增加。但是,System.Threading.Thread
的方式does not work in Mono。为了改变PE,你可能需要need MS Visual Studio,因为editbin.exe /stack
可能无法替代。
https://bugzilla.novell.com/show_bug.cgi?id=476785 - [This page](http://www.mono-project.com/Runtime_Projects)表示正在处理,但没有投影完成日期。 –
[This page](http://www.mono-project.com/Mono_Project_Roadmap)表示F#中的尾部呼叫在版本2.12中修复了 –
2.12被重命名为3.0;无论如何它说“优化”,而不是“所有优化”,所以我猜Nikhil正在打的那个还没有修复。 – knocte