Przez długi czas byłem programistą Java, ale ostatnio dołączyłem do zespołu Haskell. W świecie Java, jeśli masz duży projekt, w którym pracuje kilka zespołów, powszechnym podejściem jest użycie serwera artefaktów, takiego jak Maven, w celu ułatwienia i przyspieszenia rozwoju. Liczne narzędzia do budowania, takie jak Ant, Maven, Gradle, mogą zbudować projekt i przesłać plik jar na serwer artefaktów, z którego reszta zespołu może korzystać bez bólu. Dlatego, dzieląc projekt na mniejsze podprojekty, czas kompilacji jest również znacznie skrócony.
Po stronie Haskell używamy cabal
do budowy projektu. Budowa naszego projektu zajmuje około 10-15 minut bez optymalizacji. Włączenie optymalizacji kompilatora zajmuje kilka godzin, co jest bolesne.
Zastanawiam się, jak możemy zrobić to samo, co tutaj w Javie. Czy istnieje prosty sposób na kompilację i przesłanie pliku binarnego pakietów (bibliotek) na serwer artefaktów i korzystanie z gotowych plików binarnych w czasie kompilacji? Wiem, że ponieważ Haskell generuje kod maszynowy (zamiast kodu bajtowego w Javie), mogą występować problemy ze zgodnością, ale prawdopodobnie możemy mieć różne pliki binarne dla różnych architektur / systemów operacyjnych przechowywane na serwerze artefaktów.
cabal
, GHC
, Test.Framework
lub łącznik.