После прочтения некоторых сообщений о неадекватности сборщика мусора Mono 2.6 я решил дать Mono 2.10. Я обнаружил, что во время выполнения 2.10 с помощью следующей простой программы F #:
let rec f x acc =
if x = 0 then acc
else f (x - 1) (acc + 1)
f 10 0
Эквивалентный цикл С# код работает очень хорошо, как и программа F # hello world. Код F # также работает нормально с Mono 2.6 и .Net. Может ли кто-нибудь еще воспроизвести это? Это ошибка или это просто моя установка?
Вот несколько тестов, которые я пробовал, и результаты, которые я получил.
-
Моно 2.10.2 (скомпилировано из источников на Squeeze Debian)
-- "Stack overflow: IP: 0x4153bb84, fault addr: (nil)"
-
Моно 2.8 (скомпилировано из источников на Squeeze Debian)
-- "Native stacktrace: ..."
-
Моно 2.10.2 (двоичный файл Windows)
-- "mono.exe has stopped working" dialog.
-
Моно 2.10.2 (изображение VMware)
-- Segmentation fault
-
Моно 2.6.7 (в комплекте с Debian Squeeze)
-- Works fine
Используемый компилятор F # состоял из CTP в ноябре 2010 года.