Buck (software)

Buck is a multi-language build system developed and used by Facebook. It was designed for building small, reusable modules consisting of code and resources within a monorepo,[4] and supports C++ (Objective-C, Swift), Shell, Java (Kotlin, Groovy), Python, Lua, OCaml, Rust, Go and others source codes as inputs for binary target on respective target platforms such as IOS, Android, .NET and Java VM runtimes. Buck is licensed under the Apache License 2.0.[3]

Buck
Developer(s)Facebook
Initial releaseApril 17, 2013 (2013-04-17)[1]
Stable release
2019.10.17.01 / October 17, 2019 (2019-10-17)[2]
Repository
Written inJava
Operating systemCross-platform
LicenseApache License 2.0[3]
Websitebuck.build/ 

Buck requires explicit declaration of dependencies and enforces that by use of a symbolic link tree. Since all dependencies are explicit and Buck has a directed acyclic graph of all source files and build targets, Buck can perform incremental recompilation only building targets downstream of files that have changed. Buck computes a key for each target that is a hash of the contents all the files it depends on. It stores a mapping from that key to the built target in a build cache. Assuming that all targets are deterministic functions of the contents of their dependencies you can share this build cache between developers and continuous integration (CI) as Buck supports a HTTP Cache API.

See also

References

  1. Bolin, Michael (May 14, 2013). "Buck: How we build Android apps at Facebook". Notes. Facebook. Facebook Engineering. Retrieved 2019-07-16.
  2. "Releases · facebook/buck". GitHub.
  3. "buck/license". April 29, 2013. Retrieved 2017-10-20.
  4. "Overview". Buck: a build tool. Retrieved 2018-07-16. Buck is designed to build multiple deliverables from a single repository—that is, a monorepo—rather than from multiple repositories


This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.