{"id":13494191,"url":"https://github.com/facebook/buck2","last_synced_at":"2026-01-11T23:57:12.802Z","repository":{"id":64083002,"uuid":"450625045","full_name":"facebook/buck2","owner":"facebook","description":"Build system, successor to Buck","archived":false,"fork":false,"pushed_at":"2025-05-07T03:24:47.000Z","size":139423,"stargazers_count":3833,"open_issues_count":239,"forks_count":261,"subscribers_count":62,"default_branch":"main","last_synced_at":"2025-05-07T07:11:58.547Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://buck2.build/","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/facebook.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE-APACHE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2022-01-21T20:04:00.000Z","updated_at":"2025-05-07T05:07:37.000Z","dependencies_parsed_at":"2024-01-22T20:33:33.946Z","dependency_job_id":"c9981da9-6538-495b-98ee-b197d1db9cdb","html_url":"https://github.com/facebook/buck2","commit_stats":{"total_commits":17109,"total_committers":551,"mean_commits":31.0508166969147,"dds":0.7448711204629143,"last_synced_commit":"4172129e708f1f9885fe68a27f3ec2ece894dd81"},"previous_names":["facebookincubator/buck2"],"tags_count":48,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facebook%2Fbuck2","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facebook%2Fbuck2/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facebook%2Fbuck2/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/facebook%2Fbuck2/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/facebook","download_url":"https://codeload.github.com/facebook/buck2/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254101579,"owners_count":22014904,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-07-31T19:01:22.746Z","updated_at":"2025-05-14T08:02:09.248Z","avatar_url":"https://github.com/facebook.png","language":"Rust","readme":"\u003cdiv class=\"title-block\" style=\"text-align: center;\" align=\"center\"\u003e\n\n# Buck2: fast multi-language build system\n\n![Version] ![License] [![Build Status]][CI]\n\n[Version]:\n  https://img.shields.io/badge/release-unstable,%20\"Developer%20Edition\"-orange.svg\n[License]:\n  https://img.shields.io/badge/license-MIT%20OR%20Apache--2.0-blueviolet.svg\n[Build Status]:\n  https://github.com/facebook/buck2/actions/workflows/build-and-test.yml/badge.svg\n[CI]: https://github.com/facebook/buck2/actions/workflows/build-and-test.yml\n\n\u003cstrong\u003e\n  \u003ca href=\"https://buck2.build\"\u003eHomepage\u003c/a\u003e\u0026nbsp;\u0026nbsp;\u0026bull;\u0026nbsp;\u0026nbsp;\u003ca href=\"https://buck2.build/docs/about/getting_started/\"\u003eGetting Started\u003c/a\u003e\u0026nbsp;\u0026nbsp;\u0026bull;\u0026nbsp;\u0026nbsp;\u003ca href=\"./CONTRIBUTING.md\"\u003eContributing\u003c/a\u003e\n\u003c/strong\u003e\n\n---\n\n\u003c/div\u003e\n\nBuck2 is a fast, hermetic, multi-language build system, and a direct successor\nto the original [Buck build system](https://buck.build) (\"Buck1\") \u0026mdash; both\ndesigned by Meta.\n\nBut what do those words really mean for a build system \u0026mdash; and why might\nthey interest you? \"But why Buck2?\" you might ask, when so many build systems\nalready exist?\n\n- **Fast**. It doesn't matter whether a single build command takes 60 seconds to\n  complete, or 0.1 seconds: when you have to build things, Buck2 doesn't waste\n  time \u0026mdash; it calculates the critical path and gets out of the way, with\n  minimal overhead. It's not just the core design, but also careful attention to\n  detail that makes Buck2 so snappy. Buck2 is up to 2x faster than Buck1 _in\n  practice_[^perf-note]. So you spend more time iterating, and less time\n  waiting.\n- **Hermetic**. When using Remote Execution[^hermetic-re-only], Buck2 becomes\n  _hermetic_: it is required for a build rule to correctly declare all of its\n  inputs; if they aren't specified correctly (e.g. a `.c` file needs a `.h` file\n  that isn't correctly specified), the build will fail. This enforced\n  correctness helps avoids entire classes of errors that most build systems\n  allow, and helps ensure builds work everywhere for all users. And Buck2\n  correctly tracks dependencies with far better accuracy than Buck1, in more\n  languages, across more scenarios. That means \"it compiles on my machine\" can\n  become a thing of the past.\n- **Multi-language**. Many teams have to deal with multiple programming\n  languages that have complex inter-dependencies, and struggle to express that.\n  Most people settle with `make` and tie together `dune` to `pip` and `cargo`.\n  But then how do you run test suites, code coverage, or query code databases?\n  Buck2 is designed to support multiple languages from the start, with\n  abstractions for interoperation. And because it's completely scriptable, and\n  _users_ can implement language support \u0026mdash; it's incredibly flexible. Now\n  your Python library can depend on an OCaml library, and your OCaml library can\n  depend on a Rust crate \u0026mdash; and with a single build tool, you have a\n  consistent UX to build and test and integrate all of these components.\n\n[^perf-note]:\n    This number comes from internal usage of Buck1 versus Buck2 at Meta. Please\n    note that _appropriate_ comparisons with systems like Bazel have yet to be\n    performed; Buck1 is the baseline because it's simply what existed and what\n    had to be replaced. Please benchmark Buck2 against your favorite tools and\n    let us know how it goes!\n\n[^hermetic-re-only]:\n    Buck2 currently does not sandbox _local-only_ build steps; in contrast,\n    Buck2 using Remote Execution is _always_ hermetic by design. The vast\n    majority of build rules are remote compatible, as well. Despite that, we\n    hope to lift this restriction in the (hopefully short-term) future so that\n    local-only builds are hermetic as well.\n\nIf you're familiar with systems like Buck1, [Bazel](https://bazel.build/), or\n[Pants](https://www.pantsbuild.org/) \u0026mdash; then Buck2 will feel warm and cozy,\nand these ideas will be familiar. But then why create Buck2 if those already\nexist? Because that isn't all \u0026mdash; the page\n_[\"Why Buck2?\"](https://buck2.build/docs/about/why/)_ on our website goes into\nmore detail on several other important design critera that separate Buck2 from\nthe rest of the pack, including:\n\n- Support for ultra-large repositories, through filesystem virtualization and\n  watching for changes to the filesystem.\n- Totally language-agnostic core executable, with a small API \u0026mdash; even C/C++\n  support is written as a library. You can write everything from scratch, if you\n  wanted.\n- \"Buck Extension Language\" (BXL) can be used for self-introspection of the\n  build system, allowing automation tools to inspect and run actions in the\n  build graph. This allows you to more cleanly support features that need graph\n  introspection, like LSPs or compilation databases.\n- Support for distributed compilation, using the same Remote Execution API that\n  is supported by Bazel. Existing solutions like BuildBarn, BuildBuddy, EngFlow,\n  and NativeLink all work today.\n- An efficient, robust, and sound design \u0026mdash; inspired by modern theory of\n  build systems and incremental computation.\n- And more!\n\nIf these headline features make you interested \u0026mdash; check out the\n[Getting Started](https://buck2.build/docs/getting_started/) guide!\n\n## 🚧🚧🚧 **Warning** 🚧🚧🚧 \u0026mdash; rough terrain lies ahead\n\nBuck2 currently **does not have a stable release tag at this time**. Pre-release\ntags/binaries, and stable tags/binaries, will come at later dates. Despite that,\nit is used extensively inside of Meta on vast amounts of code every day, and\n[buck2-prelude](/prelude/) is the same code used internally for all these\nbuilds, as well.\n\nMeta just uses the latest committed `HEAD` version of Buck2 at all times. Your\nmileage may vary \u0026mdash; but at the moment, tracking `HEAD` is ideal for\nsubmitting bug reports and catching regressions.\n\nThe short of this is that you should consider this project and its code to be\nbattle-tested and working, but outside consumers will encounter quite a lot of\nrough edges right now \u0026mdash; several features are missing or in progress, some\ntoolchains from Buck1 are missing, and you'll probably have to fiddle with\nthings more than necessary to get it nice and polished.\n\nPlease provide feedback by submitting\n[issues and questions!](https://github.com/facebook/buck2/issues)\n\n## Installing Buck2\n\nYou can get started by downloading a\n[bi-monthly version](https://github.com/facebook/buck2/tags) or the\n[latest](https://github.com/facebook/buck2/releases/tag/latest) built binary for\nyour platform. The `latest` tag always refers to a recent commit; it is updated\non every single push to the GitHub repository, so it will always be a recent\nversion.\n\nAlternately, you can use [dotslash](https://dotslash-cli.com/) with the\nbi-monthly releases where it's easy to deploy into a repo with a single text\nfile and auto pull the correct platform as needed.\n\nYou can also compile Buck2 from source, if a binary isn't immediately available\nfor your use; check out the [HACKING.md](./HACKING.md) file for information.\n\n## Terminology conventions\n\nFrequently used terms and their definitions can be found on the\n[glossary page](https://buck2.build/docs/concepts/glossary/).\n\n## License\n\nBuck2 is licensed under both the MIT license and Apache-2.0 license; the exact\nterms can be found in the [LICENSE-MIT](LICENSE-MIT) and\n[LICENSE-APACHE](LICENSE-APACHE) files, respectively.\n","funding_links":[],"categories":["Rust","Development tools","Dependency management","others","Projects"],"sub_categories":["Build system","Build systems","Build"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffacebook%2Fbuck2","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffacebook%2Fbuck2","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffacebook%2Fbuck2/lists"}