Solía ser desarrollador de Java durante mucho tiempo, pero recientemente me uní al equipo de Haskell. En el mundo de Java, si tiene un proyecto grande, con varios equipos trabajando en él, un enfoque común es utilizar un servidor de artefactos como Maven para facilitar y acelerar el desarrollo. Numerosas herramientas de compilación, como Ant, Maven, Gradle, pueden compilar el proyecto y subir un archivo jar al servidor de artefactos que el resto del equipo puede usar sin problemas. Por lo tanto, al dividir el proyecto en subproyectos más pequeños, el tiempo de construcción también se reduce drásticamente.
En el lado de Haskell, estamos utilizando cabal
para construir el proyecto. Nuestro proyecto tarda entre 10 y 15 minutos en construirse sin optimización. Tarda unas horas si la optimización del compilador está activada, lo cual es doloroso.
Me pregunto cómo podemos hacer lo mismo que hacemos en Java aquí. ¿Hay una manera fácil de compilar y cargar el binario de los paquetes (bibliotecas) a un servidor de artefactos y usar los binarios precompilados en el momento de la compilación? Sé que dado que Haskell genera código de máquina (en lugar de código de byte en Java) puede haber problemas de compatibilidad, pero probablemente podamos tener diferentes binarios para diferentes arquitecturas / sistemas operativos almacenados en el servidor de artefactos.
cabal
, GHC
, Test.Framework
o el enlazador.