Buck2, sistem build Facebook baru

Buck2-Pahlawan

Buck2, sistem build open source baru Facebook

Facebook diperkenalkan baru-baru ini merilis sistem build baru yang disebut "Buck2", yang mencatatnya berfokus pada membangun proyek dari repositori sangat yang besar yang menyertakan kode dalam berbagai bahasa pemrograman.

Perbedaannya antara implementasi baru dan sistem uang yang digunakan sebelumnya Melalui facebook menggunakan bahasa Rust, bukan Java dan peningkatan signifikan dalam efisiensi dan performa proses perakitan (dalam pengujian internal pada infrastruktur yang sama, Buck2 melakukan tugas perakitan dua kali lebih cepat dari Buck).

Sistem build berdiri di antara pengembang dan kode mereka berjalan, jadi apa pun yang dapat kami lakukan untuk membuat pengalaman lebih cepat atau lebih produktif secara langsung memengaruhi seberapa efektif pengembang. Tujuan Buck2 adalah mempertahankan apa yang kami sukai dari Buck1 (dasar-dasar dan alur kerja), mengambil inspirasi dari inovasi pasca-Buck1 (termasuk Bazel, Adapton, dan Shake), dan fokus pada kecepatan dan memungkinkan pengalaman baru.

Tentang Buck2

Hal ini disorot bahwa sistem tidak terikat pada pembuatan kode dalam bahasa tertentu dan di luar kotak, ini mendukung proyek pembuat yang ditulis dalam C++, Python, Rust, Kotlin, Erlang, Swift, Objective-C, Haskell, dan OCaml yang digunakan oleh Facebook.

Bahasa Starlark, berdasarkan Python (seperti di Bazel), digunakan untuk mendesain plugin, membuat skrip, dan aturan. Starlark memungkinkan Anda memperluas kemampuan sistem build dan mengabstraksi dari bahasa tertentu yang digunakan dalam proyek yang sedang dibangun.

Disebutkan itu kinerja tinggi dicapai dengan menyimpan hasilnya, paralelisasi pekerjaan dan dukungan untuk eksekusi tugas jarak jauh (Remote Build Execution).

Membangun lingkungan menggunakan konsep "hermetisitas": kode yang dikompilasi terlepas dari dunia luar, tidak ada yang dimuat dari luar selama proses pembangunan, dan pelaksanaan tugas yang berulang pada sistem yang berbeda menghasilkan hasil yang sama (pembangunan berulang, misalnya, hasil kompilasi proyek di mesin dari pengembang akan sama persis dengan build di server integrasi berkelanjutan). Kurangnya situasi ketergantungan dianggap di Buck2 sebagai bug.

Pada bagian dari Fitur Utama Buck2, yang menonjol berikut ini:

  • Aturan untuk mendukung bahasa pemrograman dan sistem build inti benar-benar terpisah. Aturannya ditulis dalam bahasa Starlark, dan perangkat dan implementasi Starlark ditulis dalam Rust.
  • Sistem build menggunakan grafik dependensi inkremental tunggal (tanpa pementasan), yang memungkinkan Anda meningkatkan kedalaman paralelisasi pekerjaan dibandingkan dengan Buck dan Bazel dan menghindari banyak jenis bug.
  • Kode Buck2 diposting di GitHub dan aturan dukungan bahasa pemrograman hampir identik dengan versi internal yang digunakan dalam infrastruktur Facebook (satu-satunya perbedaan adalah tautan ke edisi kompiler dan membangun server yang digunakan oleh Facebook). ).
  • Sistem build dirancang untuk berintegrasi dengan sistem eksekusi tugas jarak jauh yang memungkinkan Anda menjalankan tugas di server jarak jauh. API eksekusi jarak jauh kompatibel dengan Bazel dan telah diuji kompatibilitasnya dengan Buildbarn dan EngFlow.
  • Integrasi dengan sistem file virtual disediakan, di mana konten seluruh repositori disajikan, tetapi pada kenyataannya, pekerjaan dilakukan dengan porsi lokal nyata dari bagian repositori (pengembang melihat seluruh repositori, tetapi hanya yang diperlukan) file yang diakses diambil dari repositori). VFS berbasis EdenFS dan Git LFS didukung, yang digunakan oleh Sapling.

Akhirnya, bagi mereka yang tertarik untuk mempelajarinya lebih lanjut, mereka harus tahu bahwa kode tersebut didistribusikan di bawah lisensi Apache 2.0 dan mereka dapat berkonsultasi dengan detailnya. Di tautan berikut.


tinggalkan Komentar Anda

Alamat email Anda tidak akan dipublikasikan. Bidang yang harus diisi ditandai dengan *

*

*

  1. Penanggung jawab data: Miguel Ángel Gatón
  2. Tujuan data: Mengontrol SPAM, manajemen komentar.
  3. Legitimasi: Persetujuan Anda
  4. Komunikasi data: Data tidak akan dikomunikasikan kepada pihak ketiga kecuali dengan kewajiban hukum.
  5. Penyimpanan data: Basis data dihosting oleh Occentus Networks (UE)
  6. Hak: Anda dapat membatasi, memulihkan, dan menghapus informasi Anda kapan saja.