Buck2 is a fast, hermetic, multi-language build system written in Rust and designed as the successor to Meta's original Buck build system. The project emphasizes three core design principles: speed through critical path calculation and minimal overhead, hermeticity through enforced input declaration when using Remote Execution, and multi-language support with consistent user experience across different programming languages and their complex inter-dependencies. According to the README, Buck2 achieves up to 2x faster performance than Buck1 in practice, though the project notes that comprehensive comparisons with systems like Bazel remain to be performed.
The system is designed to handle ultra-large repositories through filesystem virtualization and change detection, with a language-agnostic core executable that keeps the API small. Language support, including C and C++, is implemented as libraries rather than built into the core. Buck2 supports distributed compilation using the Remote Execution API compatible with existing solutions like BuildBarn, BuildBuddy, EngFlow, and NativeLink. The project includes Buck Extension Language (BXL) for self-introspection of the build system, enabling automation tools to inspect and run actions in the build graph, which supports features like language servers and compilation database generation.
The repository shows active development with significant community engagement. GitGenius tracking data reveals a median issue and pull request response latency of 21.6 hours across 360 items, with mean latency of 1351.3 hours reflecting occasional complex discussions. The most active issue labels are prelude with 59 occurrences, bug with 57, and enhancement with 49, indicating ongoing refinement and feature development. Top contributors tracked by GitGenius include alexlian with 310 events, lf- with 209 events, and ndmitchell with 103 events. The project shares contributors with golang/go, rust-lang/rust, and angular/angular, suggesting cross-pollination with major language and framework ecosystems.
Buck2 currently lacks a stable release tag, with the project explicitly warning that it does not have stable binaries at this time. However, the codebase is battle-tested through extensive internal use at Meta on vast codebases daily, with the buck2-prelude directory containing the same code used internally for all Meta builds. The project recommends tracking the latest HEAD version for bug reporting and regression detection. Users can obtain Buck2 through bi-monthly release binaries, the latest tag updated on every push, or by compiling from source. The project is dual-licensed under MIT and Apache-2.0 licenses.
The repository acknowledges that outside consumers will encounter rough edges, with several features still in progress and some toolchains from Buck1 missing. Despite this pre-release status, the project actively solicits feedback through GitHub issues and questions, positioning itself as a modern build system informed by contemporary theory of incremental computation and designed to address limitations in existing build tools when handling polyglot codebases and large-scale development scenarios.