Кромешный ад
Nov. 4th, 2011 10:00 pm![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Рунтайм хаскеля под винду все-таки укуренный какой-то. На каждый вызов hs_init/hs_exit создается поток и больше не убивается, даже после того, как либа с хаскелем выгружается.
Даже если в хаскеле вообще ничего не вызывать - только инициализировать и деинициализировать.
В общем, перспективы интеграции либ на хаскеле в другие приложения весьма смутные, разве что один раз рунтайм создать и закрывать только при выходе. И то - есть ненулевая вероятность, что это все помрет в зависимости от фазы луны. Сейчас вот еще под AppVerifier гляну, как оно себя ведет.
Даже если в хаскеле вообще ничего не вызывать - только инициализировать и деинициализировать.
В общем, перспективы интеграции либ на хаскеле в другие приложения весьма смутные, разве что один раз рунтайм создать и закрывать только при выходе. И то - есть ненулевая вероятность, что это все помрет в зависимости от фазы луны. Сейчас вот еще под AppVerifier гляну, как оно себя ведет.
no subject
Date: 2011-11-04 08:29 pm (UTC)Заэмбедить в приложение Питон, а в питон хаскель.
Потом прибивать питон и смотреть на развалины.
no subject
Date: 2011-11-04 08:33 pm (UTC)Вообще есть ощущение, что хаскель - больше не для реальных задач, а для обучения программированию. Правда, каков процент тех, кто для кода на хаскеле оценит время и требуемый объём памяти - я не знаю.
no subject
Date: 2011-11-04 08:34 pm (UTC)no subject
Date: 2011-11-04 08:53 pm (UTC)no subject
Date: 2011-11-05 02:34 pm (UTC)дальше только героин
no subject
Date: 2011-11-05 04:54 pm (UTC)no subject
Date: 2011-11-04 10:15 pm (UTC)no subject
Date: 2011-11-04 10:22 pm (UTC)no subject
Date: 2011-11-05 10:08 am (UTC)Чудес там никаких нет и в зависимости от фазы луны там ничего не помирает. У меня, по кр. мере, все работало всегда и, насколько можно судить по косвенным признакам, у Аугустссона в Креди-Свиссе тоже все работало, причем это (DLL, сделанные с помощью GHC) у них была едва ли не единственная модель деплоймента приложений на Хаскелле.
Возможно, грабли какие-то были, но если и так, то совершенно типичные и обычные, решил и забыл. Я, например, не помню.
no subject
Date: 2011-11-05 10:33 am (UTC)Но сам факт, что это невозможно сделать, не выгружая модуль с рунтаймом, а так же утечка хендлов при этом - это признак того, что там не все хорошо.
У меня нет желания наткнутся на "программа выдает странную ошибку с цифрами" где-нибудь у клиентов, поэтому я заранее прогоняю все мыслимые и немыслимые вариации использования.
Я сейчас уже откопал место, где оно валится с ошибкой, сижу в gdb отлаживаю. По стилю более всего похоже, что при hs_exit забывают обнулить какой-то из глобальных указателей.
no subject
Date: 2011-11-05 10:55 am (UTC)Непонятно, о чем "утечка хендлов при этом" и "оно валится с ошибкой"? Где это? когда? После hs_exit и нового hs_init? Тогда просто рекомендую забить - время потеряете много, а умнее станете ненамного, если вообще. Лучше всего сделать багрепорт или фичереквест - кто-нибудь и откликнется, возможно, просто прокомментирует. Для чела в теме (Marlow?) это 3 секунды делов, а вам - неделю ковыряться. Просто считайте, что никакого hs_exit нет в природе да и все.
no subject
Date: 2011-11-05 11:07 am (UTC)Чтобы создать багрепорт, его нужно сформулировать.
Впрочем, нужное место я уже нашел, они там глобальную/tls переменную myTask не очищают при freeTask
no subject
Date: 2011-11-05 08:11 pm (UTC)С другой стороны, я сам перфекционист и зачастую убиваю массу времени на какую-нибудь херню, которую в конкретной ситуации можно обойти, но она нарушает некую мировую гармонию. Поэтому я довольно хорошо Вас понимаю.
Однако, нащет багрепортов. Это - наш долг перед комьюнити. Я, например, минимум десяток в разное время зафайлил и все (кроме http://hackage.haskell.org/trac/ghc/ticket/4931, для которого мне так и приходится таскать локальный патч) были пофикшены с благодарностями.