Pier is a command-line tool for building Haskell projects. Pier is similar in purpose to Stack; it uses *.cabal files to configure individual packages, and uses Stackage to get consistent sets of package dependencies. However, Pier attempts to address some of Stack’s limitations by exploring a different approach:
Pier invokes tools such as ghc directly, implementing the fine-grained Haskell build logic from (nearly) scratch. In contrast, Stack relies on a separate framework to implement most of its build steps (i.e., Cabal-the-library’s Distribution.Simple), giving it a more coarse control over the build.
Pier layers its Haskell-specific logic on top of a general-purpose library for hermetic, parallel builds and dependency tracking. That library is motivated by tools such as Nix and Bazel, and implemented using Shake. In contrast, Stack’s build and dependency logic is more specific to Haskell projects.
Though still experimental, Pier is already able to build most of the packages in Stackage (specifically, 90% of the more than 2600 packages in lts-10.3) as well as itself (i.e.,
pier build pier).
This talk will demo Pier and discuss some of its design choices and implementation details.
|Pier: Yet Another Haskell Build Tool [slides] (Pier - Yet Another Haskell Build Tool.pdf)||235KiB|
Sun 23 Sep
|15:30 - 15:55|
|15:55 - 16:20|
Christiaan BaaijQBayLogic B.V.File Attached
|16:20 - 16:28|
|16:28 - 16:45|
Simon Peyton JonesMicrosoft, UK