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