Buck (ソフトウェア)
monorepo(英語版)内に格納されたコードとリソースからなる、小さく再利用可能なモジュールをビルドするために設計された。ソースコードの入力として、C++(Objective-C、Swift)、Shell、Java(Kotlin、Groovy)、Python、Lua、OCaml、Rust、Goやその他の言語に対応している。 iOS、Android、.NET、Java VMランタイムを含むさまざまなターゲットプラットフォーム向けのバイナリ出力が生成できる。
BuckはApache License 2.0でライセンスされている。
Buckは依存関係の明示的な宣言を必要とし、シンボリックリンクツリーを使用することを強制する。すべての依存関係は明示的であり、Buckはすべてのソースファイルとビルドターゲットの有向非巡回グラフを持っているため、Buckはターゲットのダウンストリームの変更されたファイルだけを再ビルドするインクリメンタルな再コンパイルを実行できる。Buckは各ターゲットに対して、依存しているファイルのコンテンツハッシュをキーとして計算し、ビルドキャッシュ内にキーからビルド対象へのマッピングを保存する。ターゲットがコンテンツの決定的な関数である場合、BuckはHTTP Cache APIをサポートするため、このビルドキャッシュは開発者と継続的インテグレーション(CI)で共有される。