Buck2, sistem binaan Facebook baharu

Buck2-Wira

Buck2, sistem binaan sumber terbuka baharu Facebook

Facebook diperkenalkan baru-baru ini mengeluarkan sistem binaan baharu yang dipanggil "Buck2", yang menyatakan bahawa ia adalah menumpukan pada membina projek dari repositori sangat yang besar yang merangkumi kod dalam bahasa yang berbeza pengaturcaraan.

Perbezaannya antara pelaksanaan baharu dan sistem wang yang digunakan sebelum ini Melalui facebook menggunakan bahasa Rust dan bukannya Java dan peningkatan ketara dalam kecekapan dan prestasi proses pemasangan (dalam ujian dalaman pada infrastruktur yang sama, Buck2 melaksanakan tugas pemasangan dua kali lebih cepat daripada Buck).

Bina sistem berdiri di antara pembangun dan kod mereka berjalan, jadi apa sahaja yang boleh kita lakukan untuk menjadikan pengalaman lebih pantas atau lebih produktif secara langsung mempengaruhi keberkesanan pembangun. Matlamat untuk Buck2 adalah untuk mengekalkan perkara yang kami gemari tentang Buck1 (asas dan aliran kerja), mengambil inspirasi daripada inovasi pasca-Buck1 (termasuk Bazel, Adapton dan Shake), dan fokus pada kelajuan dan membolehkan pengalaman baharu.

Mengenai Buck2

Ia diketengahkan bahawa sistem tidak terikat dengan penciptaan kod dalam bahasa tertentu dan di luar kotak, ia menyokong projek pembina yang ditulis dalam C++, Python, Rust, Kotlin, Erlang, Swift, Objective-C, Haskell, dan OCaml yang digunakan oleh Facebook.

Bahasa Starlark, berdasarkan Python (seperti dalam Bazel), digunakan untuk mereka bentuk pemalam, mencipta skrip dan peraturan. Starlark membolehkan anda memperluaskan keupayaan sistem binaan dan abstrak daripada bahasa khusus yang digunakan dalam projek yang sedang dibina.

Disebutkan bahawa prestasi tinggi dicapai dengan menyimpan hasil carian, penyelarasan kerja dan sokongan untuk pelaksanaan tugas dari jauh (Pelaksanaan Binaan Jauh).

Persekitaran binaan menggunakan konsep "hermeticity": kod yang disusun dipisahkan dari dunia luar, tiada apa yang dimuatkan dari luar semasa proses binaan, dan pelaksanaan tugas yang berulang pada sistem yang berbeza membawa kepada hasil yang sama (binaan berulang, contohnya, hasil penyusunan projek pada mesin daripada pembangun akan betul-betul sama dengan binaan pada pelayan penyepaduan berterusan). Kekurangan situasi pergantungan dianggap dalam Buck2 sebagai pepijat.

Di bahagian Ciri Utama Buck2, yang berikut menonjol:

  • Peraturan untuk menyokong bahasa pengaturcaraan dan sistem binaan teras adalah berasingan sepenuhnya. Peraturan ditulis dalam bahasa Starlark, dan kit alat dan pelaksanaan Starlark ditulis dalam Rust.
  • Sistem binaan menggunakan graf pergantungan tambahan tunggal (tiada pementasan), yang membolehkan anda meningkatkan kedalaman selari kerja berbanding Buck dan Bazel dan mengelakkan pelbagai jenis pepijat.
  • Kod Buck2 yang disiarkan pada GitHub dan peraturan sokongan bahasa pengaturcaraan adalah hampir sama dengan versi dalaman yang digunakan dalam infrastruktur Facebook (satu-satunya perbezaan adalah dalam pautan ke edisi pengkompil dan membina pelayan yang digunakan oleh Facebook). ).
  • Sistem binaan direka bentuk untuk menyepadukan dengan sistem pelaksanaan kerja jauh yang membolehkan anda menjalankan kerja pada pelayan jauh. API pelaksanaan jauh serasi dengan Bazel dan telah diuji untuk keserasian dengan Buildbarn dan EngFlow.
  • Penyepaduan dengan sistem fail maya disediakan, di mana kandungan keseluruhan repositori dibentangkan, tetapi sebenarnya, kerja itu dijalankan dengan bahagian tempatan sebenar sebahagian daripada repositori (pemaju melihat keseluruhan repositori, tetapi hanya apa diperlukan) fail yang diakses diambil dari repositori). VFS dan Git LFS berasaskan EdenFS disokong, yang digunakan oleh Sapling.

Akhir sekali, bagi mereka yang berminat untuk mengetahui lebih lanjut mengenainya, mereka harus tahu bahawa kod itu diedarkan di bawah lesen Apache 2.0 dan mereka boleh merujuk butiran Dalam pautan berikut.


Tinggalkan komen anda

Alamat email anda tidak akan disiarkan. Ruangan yang diperlukan ditanda dengan *

*

*

  1. Bertanggungjawab atas data: Miguel Ángel Gatón
  2. Tujuan data: Mengendalikan SPAM, pengurusan komen.
  3. Perundangan: Persetujuan anda
  4. Komunikasi data: Data tidak akan disampaikan kepada pihak ketiga kecuali dengan kewajiban hukum.
  5. Penyimpanan data: Pangkalan data yang dihoskan oleh Occentus Networks (EU)
  6. Hak: Pada bila-bila masa anda boleh menghadkan, memulihkan dan menghapus maklumat anda.