Skip to content
SPECIFICTION
Get listed

Buck2 vs Shake

Buck2

buck2.build

Shake

shakebuild.com

Side by side

FigureBuck2Shake
Price fromFreeFree
Free planYesYes
Free trial——
Open source——
WindowsYesYes
macOSYesYes
LinuxYesYes
Self-hostedYes—
Plans published11
Spec score · Build Automation Software8.1 (#12)7.8 (#18)
AudienceBuck2 is designed for large-scale, multi-language repositories and supports composing targets across languages in one build.Shake is aimed at developers running and writing build systems, especially for large projects that need expressive rules, robust builds, and profiling.
IntegrationsThe project says BuildBarn, BuildBuddy, EngFlow, and NativeLink work with its distributed compilation support through the Bazel Remote Execution API.Shake can execute Ninja files, allowing integration with CMake and Meson.
LanguagesThe language support table lists C/C++, Erlang, Go, Haskell, Java, Kotlin, OCaml, Python, and Rust with available prelude rules; support usability varies by language.Shake build systems are Haskell programs, though the manual is designed for readers without prior Haskell knowledge.
PurposeBuck2 is a large-scale, fast, hermetic, multi-language build system and the successor to Buck.Shake is a Haskell library for writing build systems as an alternative to tools such as make, Ant, and Scons.
SupportThe project directs users to report issues through GitHub and provides a community Discord server.Users can ask questions through the mailing list or Stack Overflow, and report bugs through GitHub issues.

Plans

Buck2

  • Open sourceFree

Buck2 pricing →

Shake

  • ShakeFree

Shake pricing →

In their own words

Buck2

Buck2 is a free build system from Meta for large-scale repositories that combine multiple programming languages. It uses Starlark rules, a dynamic dependency graph, and incremental actions to support extensible builds. Its language table lists prelude rules for C/C++, Erlang, Go, Haskell, Java, Kotlin, OCaml, Python, and Rust, though usability varies by language. Build actions can run remotely through services exposing Bazel's remote execution API; the project lists BuildBarn, BuildBuddy, EngFlow, and NativeLink as compatible with its distributed compilation support. Buck2 supports filesystem watching and can integrate with Meta's optional Eden virtual filesystem. Rules are hermetic by default and missing dependencies are errors, but local-only build steps are not sandboxed. The project describes Buck2 as early-stage and says it has no stable release tag; its latest binary tag changes with repository pushes. It warns that outside users may encounter rough edges, missing features, and missing toolchains. Source and binaries are available under MIT and Apache-2.0 licenses. The project directs users to GitHub for issue reports and offers a community Discord server.

Visit buck2.build

Shake

Shake is an open-source Haskell library for writing build systems, positioned as an alternative to make, Ant, and SCons. Build rules can discover dependencies after earlier rules run, including dependencies revealed by generated files. Supported dependency inputs include files, file existence, environment variables, directory contents, and user-defined values. Shake provides parallel and multicore builds, resource constraints, build caching, and avoids rebuilding outputs when dependency changes do not alter results. Profiling reports can include plots, tables, graphs, and explanations of what built and why. It reports estimated completion time and percentage complete, with progress information usable in continuous-integration systems such as Team City. Shake can execute Ninja files for integration with CMake and Meson, and can build projects using mixed languages, including C/C++, Docker, JavaScript, HTML, and CSS. Build definitions are Haskell programs, although the manual targets readers without prior Haskell knowledge. Shake runs on Linux, macOS, and Windows and is licensed under BSD. Installation uses Haskell Stack followed by `stack install shake`.

Visit shakebuild.com