Я долгое время был разработчиком Java, но недавно я присоединился к команде Haskell. В мире Java, если у вас большой проект, над которым работают несколько команд, общий подход заключается в использовании сервера артефактов, такого как Maven, для упрощения и ускорения разработки. Многочисленные инструменты сборки, такие как Ant, Maven, Gradle, могут собрать проект и загрузить файл JAR на сервер артефактов, который может использоваться остальной частью команды безболезненно. Поэтому, разбивая проект на более мелкие подпроекты, время сборки также резко сокращается.
На стороне Haskell, мы используем cabal
для создания проекта. Наш проект занимает около 10-15 минут для сборки без оптимизации. Если оптимизация компилятора включена, это занимает несколько часов, что является болезненным.
Интересно, как мы можем сделать то же самое, что мы делаем в Java здесь? Существует ли простой способ компилировать и загружать двоичные файлы пакетов (библиотек) на сервер артефактов и использовать предварительно собранные двоичные файлы во время сборки? Я знаю, что, поскольку Haskell генерирует машинный код (а не байт-код в Java), могут быть проблемы с совместимостью, но у нас могут быть разные двоичные файлы для разных архитектур / ОС, хранящиеся на сервере артефактов.
cabal
, GHC
, Test.Framework
или линкер.