проект на стеке и ghc 8.10.4 (именно 4, потому сборка с 7 ломается на каких-то там версиях glibc на последней убунте и это неудобно).
1) Недавно я пытался переехать на 9.2 и все даже было отлично, кроме того, что сборка статических бинарников с musl сломана. Статические бинарники очень хочется делать, чтобы не одним только докером дистрибьютить. Говорят, этот баг пофиксили в 9.6.
2) У меня есть ощущение, что со стека надо слезать, потому что а) снепшоты очень сильно запаздывают и это немношк бесит б) кабал уже умеет делать все примерно то же самое.
Кто-нибудь уже реально что-то делал с 9.6 и кабалом? Насколько это реалистично для проекта в 15KLOC с 250 зависимостей? Или подождать, все слишком свежее пока? Или я неправ насчет стека?
Смешались кони, люди... Снэпшоты это стакадж, их можно использовать и с кабалом, а можно вообще не использовать (всё пинить вручную, если время разработчика бесплатное).
Я знаю, что можно пинить и использовать с кабалом. Вопрос про опыт/реалистичность миграции с типичного использования стека со стекеджем на типичное использование кабала с последним гхц
Поднимал один толстенький старенький проект с 8.6.5 на 9.4, чтобы попрофайлить с -fprof-late, было это спустя небольшое время как он выходил, в основные пакеты только завезли поддержку, не без приключений обошлось Пришлось часть зависимостей перенести на коммиты с гитхаба, которые уже поддерживали 9.4, но до хакаджа еще не добрались, одну зависимость пришлось форкнуть и самому довести поддержку нового кабала из-за используемого в этой зависимости препроцессора кабала. Несколько строк кода после разбирательства какие там изменения в API кабала были и все собралось и завелось C кабалом очень легко было постепенно поднимать версии пакетов и постепенно поднимать версии ghc. До этого пользовался стэком и он запомнился мне просто ужасными ошибками, которые непонятно как интерпретировать и которые возникали от того, что ты хочешь одну версию какого-нибудь пакета поднять относительно снэпшота. Ручками управлять зависимостями и проще и приятнее показалось, чем использовать снэпшоты, которые еще ко всему мигрируют на новые версии невероятно долго, даже когда нет никаких физических ограничений собрать свой проект, чтобы поскорее попробовать какую-нибудь новую фичу компилятора
как я понимаю, типичное использование кабала — фиксировать ghc в документации и CI, фиксировать пакеты через cabal-freeze или index-state
Обсуждают сегодня