Shake
Shake is a free, open-source Haskell library for writing build systems as an alternative to make, Ant and Scons.
What Shake is
Shake is a free, open-source Haskell library for writing build systems as an alternative to make, Ant and Scons. Build rules can discover dependencies after earlier rules run, including dependencies revealed by generated files. It supports files, file existence, environment variables, directory contents and user-defined inputs. Builds can run in parallel with multicore support and resource constraints, while unchanged results are not rebuilt when dependencies change without changing outputs. Profiling reports can show plots, tables, graphs and reasons for build activity. Shake estimates completion time and percentage complete using recorded rule times and machine-load predictions, with progress information usable in Team City. It can execute Ninja files for CMake and Meson integration and build mixed-language projects. Build systems are Haskell programs, although the manual targets readers without prior Haskell knowledge. Shake runs on Linux, macOS and Windows, is installed through Haskell Stack, and provides no default build rules.
Good
- Dynamic dependency discovery
- Parallel builds with resource constraints
- Profiling reports and build explanations
- Completion estimates and CI progress integration
- BSD-licensed, multi-platform project
Watch out
- Build systems must be written in Haskell
- No default build rules are provided
- Haskell Stack installation is required
- Shake may not be installed by default
Who it suits
Shake is aimed at developers who write or run build systems, especially on large projects needing expressive rules, parallelism and profiling. It can support mixed-language projects and Ninja-based workflows.
Verdict
Shake offers programmable dependency handling, parallel execution, diagnostics and progress reporting for developers who want build systems as code. Its Haskell-based rules and lack of default rules require more setup than a preconfigured build tool.
Plans and prices
From Shake's own pricing page, checked 9 Oct 2001.
| Plan | Price | What it gives you |
|---|---|---|
| Shake | Free | Open source under the BSD license · install with Haskell Stack |
The facts
Each one read from Shake's own pages, with the date it was checked.
What it does
- Audience
- Shake is aimed at developers running and writing build systems, especially for large projects that need expressive rules, robust builds, and profiling.checked 9 Oct 2001
- Build performance
- Shake supports parallel builds and is designed for fast execution when nothing has changed.checked 9 Oct 2001
- Completion estimates
- Shake can report estimated completion time and percentage complete, and its progress information can be integrated with continuous integration systems such as Team City.checked 9 Oct 2001
- Dependency types
- Shake supports dependencies on files, file existence, environment variables, directory contents, and user-defined inputs.checked 9 Oct 2001
- Diagnostics
- Shake can generate profiling reports with plots, tables, graphs, and information about what built and why.checked 9 Oct 2001
- Dynamic dependencies
- Build rules can discover additional dependencies after earlier rules run, such as by examining generated files.checked 9 Oct 2001
- Installation
- The site’s getting-started instructions say to install Haskell Stack and then run `stack install shake`.checked 9 Oct 2001
- Integrations
- Shake can execute Ninja files, allowing integration with CMake and Meson.checked 9 Oct 2001
- Languages
- Shake build systems are Haskell programs, though the manual is designed for readers without prior Haskell knowledge.checked 9 Oct 2001
- Language support
- Shake can build projects in any combination of languages and is often used for C/C++, Docker, and JavaScript, HTML, and CSS projects.checked 9 Oct 2001
- License
- Shake is an open source project under the BSD license.checked 9 Oct 2001
- Limitations
- Shake build systems are written in Haskell, Shake may not be installed by default, and it provides no default build rules.checked 9 Oct 2001
- Notable limitation
- Shake does not provide default build rules, so users must express their build rules themselves.checked 9 Oct 2001
- Performance
- Shake supports multicore parallelism, resource constraints, and avoids rebuilding results when dependencies rebuild without changing.checked 9 Oct 2001
- Progress estimates
- Shake reports estimated completion time and percentage complete using recorded rule execution times and machine-load predictions.checked 9 Oct 2001
- Purpose
- Shake is a Haskell library for writing build systems as an alternative to tools such as make, Ant, and Scons.checked 9 Oct 2001
- Support
- Users can ask questions through the mailing list or Stack Overflow, and report bugs through GitHub issues.checked 9 Oct 2001
- What it is
- Shake is a Haskell library for writing build systems, designed as a replacement for make.checked 9 Oct 2001
- Who it serves
- Shake primarily benefits developers who run build systems and developers who write them.checked 9 Oct 2001
Where it runs
- Platform details
- Shake can display progress information in the title bar on Windows, Linux, and Mac; Windows 7 and 8 can also show it in the taskbar.checked 9 Oct 2001
Alternatives to Shake
- 1

AWS CodeBuild
Free planWebAPILinuxmacOS7.9From $0.01 a month - 2

fastlane
Free planAndroidiOSLinuxmacOS7.4Free plan - 3

Nx
Free planWebLinuxmacOSSelf-hosted7.2From $29 a month - 4

Bazel
Free planLinuxmacOSWindows6.7Free plan - 5

FASTBuild
Free planLinuxmacOSWindows6.6Free plan - 6
Open Build Service
Free planWebAPILinuxSelf-hosted6.6Free plan
