モノレポビルドシステム Buck2¶
概要¶
Buck2という Meta が発表したモノレポビルドシステムについて調べてみた。C++, Rust, Python など多言語のビルドをサポートしている。Buck2 は Bazel や Pants のようなビルドシステムである。他の特徴としては次のようなものがある。
- Rust で書かれている
- リモート実行のサポート
- Starlark という言語でビルドルールを記述
- Buck1 より高速
- Python は Pants と同じく pex を生成する
Python サポート¶
Buck2 では Pants と同じく pex を生成する。外部のパッケージをインストールする場合は remote_file として whl や egg を指定し、prebuilt_python_library
ルールを使う必要がある。公式ドキュメント
感想¶
Pants や JavaScript、Typescript のモノレポビルドシステムで Rust を使って書かれたものを良く見かけるようになった。 普段は Pants を使っているが、Pants より多くの言語をサポートしてる印象を受けた。 Python に限っては Pants も Buck2 も pex の実行ファイルを生成するのが個人的に面白く感じた。 Pants や Bazel に比べて Python の外部パッケージを使うのが大変そうに感じた。Buck2 はまだドキュメントが少なく、使用例なども普及してないのでこれからの動きを楽しみにしたい。