Кромешный ад
Рунтайм хаскеля под винду все-таки укуренный какой-то. На каждый вызов hs_init/hs_exit создается поток и больше не убивается, даже после того, как либа с хаскелем выгружается.
Даже если в хаскеле вообще ничего не вызывать - только инициализировать и деинициализировать.
В общем, перспективы интеграции либ на хаскеле в другие приложения весьма смутные, разве что один раз рунтайм создать и закрывать только при выходе. И то - есть ненулевая вероятность, что это все помрет в зависимости от фазы луны. Сейчас вот еще под AppVerifier гляну, как оно себя ведет.
Даже если в хаскеле вообще ничего не вызывать - только инициализировать и деинициализировать.
В общем, перспективы интеграции либ на хаскеле в другие приложения весьма смутные, разве что один раз рунтайм создать и закрывать только при выходе. И то - есть ненулевая вероятность, что это все помрет в зависимости от фазы луны. Сейчас вот еще под AppVerifier гляну, как оно себя ведет.
no subject
Заэмбедить в приложение Питон, а в питон хаскель.
Потом прибивать питон и смотреть на развалины.
no subject
Вообще есть ощущение, что хаскель - больше не для реальных задач, а для обучения программированию. Правда, каков процент тех, кто для кода на хаскеле оценит время и требуемый объём памяти - я не знаю.
no subject
no subject
no subject
дальше только героин
no subject
no subject
no subject
no subject
Чудес там никаких нет и в зависимости от фазы луны там ничего не помирает. У меня, по кр. мере, все работало всегда и, насколько можно судить по косвенным признакам, у Аугустссона в Креди-Свиссе тоже все работало, причем это (DLL, сделанные с помощью GHC) у них была едва ли не единственная модель деплоймента приложений на Хаскелле.
Возможно, грабли какие-то были, но если и так, то совершенно типичные и обычные, решил и забыл. Я, например, не помню.
no subject
Но сам факт, что это невозможно сделать, не выгружая модуль с рунтаймом, а так же утечка хендлов при этом - это признак того, что там не все хорошо.
У меня нет желания наткнутся на "программа выдает странную ошибку с цифрами" где-нибудь у клиентов, поэтому я заранее прогоняю все мыслимые и немыслимые вариации использования.
Я сейчас уже откопал место, где оно валится с ошибкой, сижу в gdb отлаживаю. По стилю более всего похоже, что при hs_exit забывают обнулить какой-то из глобальных указателей.
no subject
Непонятно, о чем "утечка хендлов при этом" и "оно валится с ошибкой"? Где это? когда? После hs_exit и нового hs_init? Тогда просто рекомендую забить - время потеряете много, а умнее станете ненамного, если вообще. Лучше всего сделать багрепорт или фичереквест - кто-нибудь и откликнется, возможно, просто прокомментирует. Для чела в теме (Marlow?) это 3 секунды делов, а вам - неделю ковыряться. Просто считайте, что никакого hs_exit нет в природе да и все.
no subject
Чтобы создать багрепорт, его нужно сформулировать.
Впрочем, нужное место я уже нашел, они там глобальную/tls переменную myTask не очищают при freeTask
no subject
С другой стороны, я сам перфекционист и зачастую убиваю массу времени на какую-нибудь херню, которую в конкретной ситуации можно обойти, но она нарушает некую мировую гармонию. Поэтому я довольно хорошо Вас понимаю.
Однако, нащет багрепортов. Это - наш долг перед комьюнити. Я, например, минимум десяток в разное время зафайлил и все (кроме http://hackage.haskell.org/trac/ghc/ticket/4931, для которого мне так и приходится таскать локальный патч) были пофикшены с благодарностями.