metaclass: (Default)
metaclass ([personal profile] metaclass) wrote2011-11-04 10:00 pm

Кромешный ад

Рунтайм хаскеля под винду все-таки укуренный какой-то. На каждый вызов hs_init/hs_exit создается поток и больше не убивается, даже после того, как либа с хаскелем выгружается.
Даже если в хаскеле вообще ничего не вызывать - только инициализировать и деинициализировать.
В общем, перспективы интеграции либ на хаскеле в другие приложения весьма смутные, разве что один раз рунтайм создать и закрывать только при выходе. И то - есть ненулевая вероятность, что это все помрет в зависимости от фазы луны. Сейчас вот еще под AppVerifier гляну, как оно себя ведет.

[identity profile] kkirsanov.livejournal.com 2011-11-04 08:29 pm (UTC)(link)
Можно матрешку!
Заэмбедить в приложение Питон, а в питон хаскель.
Потом прибивать питон и смотреть на развалины.

[identity profile] aamonster.livejournal.com 2011-11-04 08:33 pm (UTC)(link)
Ну, может, лет через 10 допилят. Или загнётся.
Вообще есть ощущение, что хаскель - больше не для реальных задач, а для обучения программированию. Правда, каков процент тех, кто для кода на хаскеле оценит время и требуемый объём памяти - я не знаю.

[identity profile] aamonster.livejournal.com 2011-11-04 08:34 pm (UTC)(link)
Суровое решение - запускать хаскельную либу в отдельном процессе. Для полноты картины общаться с ней через npapi (как плагины в браузерах).

[identity profile] max630.livejournal.com 2011-11-04 10:15 pm (UTC)(link)
А это вообще предусмотренная авторами хаскеля задача - использовать хаскель как либу? Может, проще целиком программу на хаскеле сделать?

[identity profile] awson.livejournal.com 2011-11-05 10:08 am (UTC)(link)
А нахера hs_init/hs-exit вызывать больше одного раза? Нет, правда интересно, что это за юзкейс такой, где оно необходимо?

Чудес там никаких нет и в зависимости от фазы луны там ничего не помирает. У меня, по кр. мере, все работало всегда и, насколько можно судить по косвенным признакам, у Аугустссона в Креди-Свиссе тоже все работало, причем это (DLL, сделанные с помощью GHC) у них была едва ли не единственная модель деплоймента приложений на Хаскелле.

Возможно, грабли какие-то были, но если и так, то совершенно типичные и обычные, решил и забыл. Я, например, не помню.