Please log in to watch this conference skillscast.
Codebases are hard to build. Someone somewhere invariably wants to write custom code preprocessors and generators. Teams each use their own mix of languages (Haskell, C/C++, Rust, Java{Script}, Python...). Changing code induces a lot of rebuilding and GHC requires so much CPU power that it would be a real shame to let any cores sit idle.
All codebases of any non-trivial size should use guaranteed correct build systems that have a global view of the dependency graph across all languages, a global read/write build cache populated by continuous integration (CI) and developers' laptops, and feature instant rebuilds when switching between branches. The ideal CI setup rebuilds all commits no matter the size in mere minutes using multiple workers in parallel, runs only those tests that were touched by a code a change, and creates build artifacts that are downloaded upon initial checkout and initial build of the code.
In this talk, Mathieu will show how to achieve that for traditionally slow-to-build Haskell, using Cabal, Stack, Nix or Bazel, and also by gainfully combining all four.
Links:
- https://haskell.build
- https://github.com/Gabriel439/haskell-nix
- https://www.microsoft.com/en-us/research/uploads/prod/2018/03/build-systems-final.pdf
YOU MAY ALSO LIKE:
What To Do When You Have Plenty of (Non-)Haskell
Mathieu Boespflug
Mathieu Boespflug is the founder of Tweag I/O, an R&D lab making deep tech happen with their clients in biotech, fintech, HPC and aviation.