Исправление выходов в Mono

У меня есть приложение .NET 4.0, которое сильно использует рекурсию хвоста (запрограммировано в F #). Он отлично работает на .NET VM, но на Mono-3.0.1 заканчивается стек.

Я пробовал работать с mono --optimize=tailc, но это ничего не меняет.

Есть ли способ заставить моно удалить хвостовые звонки? Есть ли способ увеличить максимальный размер стека в моно?

Ответ 1

Существует очень похожий более свежий вопрос с полезными ответами: Размер стека в Mono

Как уже отмечал Роберт Харви в комментариях, Mono нарушает/не завершает поддержку хвостового вызова для F # (ошибка 476785: поддержка хвостовых вызовов в F #). Исправление для этой проблемы - в списке текущих проектов Mono.

Размер стека можно увеличить с помощью конструктора System.Threading.Thread или в заголовке PE. Тем не менее System.Threading.Thread way не работает в Mono. Для изменения PE вы, вероятно, нуждаетесь в MS Visual Studio, поскольку альтернативы editbin.exe /stack.