Facebook nyebarkeun sistem ngawangun Buck2

Facebook ngawanohkeun sistem ngawangun anyar, Buck2, aimed dina pangatur ngawangun proyék ti repositories kacida gedéna, kaasup kode dina basa programming béda. Beda konci antara palaksanaan anyar jeung sistem Buck saméméhna dipaké di Facebook nyaéta pamakéan basa Rust tinimbang Java sarta kanaékan signifikan dina efisiensi sarta produktivitas prosés assembly (dina tés internal dina infrastruktur sarua, Buck2 ngalakukeun assembly. tugas dua kali gancang ti Buck). Kodeu disebarkeun dina lisénsi Apache 2.0.

Sistemna henteu dihijikeun kana rakitan kode dina basa khusus sareng di luar kotak ngadukung rakitan proyék anu ditulis dina basa C ++, Python, Rust, Kotlin, Erlang, Swift, Objective-C, Haskell sareng OCaml. , dipaké ku Facebook. Basa Starlark, dumasar kana Python (sakumaha dina Bazel), dipaké pikeun ngarancang tambihan, ngawangun naskah sareng aturan. Starlark ngamungkinkeun anjeun pikeun ngalegaan kamampuan sistem rakitan sareng abstrak tina basa khusus anu dianggo dina proyék anu dirakit.

Kinerja luhur kahontal ngaliwatan cache hasil, parallelization karya jeung rojongan pikeun palaksanaan jauh tugas (Jauh Bangun Palaksanaan). Dina lingkungan rakitan, konsép "hermeticity" dianggo - kode anu dirakit dipotong ti dunya luar, teu aya anu dimuat ti luar nalika prosés perakitan, sareng palaksanaan anu diulang-ulang dina sistem anu béda ngakibatkeun hasil anu sami ( majelis diulang, contona, hasil assembling hiji proyék dina mesin pamekar bakal sagemblengna idéntik jeung ngawangun dina server integrasi kontinyu). Kaayaan kurangna kagumantungan dianggap salaku kasalahan dina Buck2.

Fitur konci Buck2:

  • Aturan pikeun ngadukung basa pamrograman sareng inti sistem rakitan lengkep misah. Aturan ngagunakeun basa Starlark, sareng toolkit sareng palaksanaan Starlark ditulis dina Rust.
  • Sistim assembly ngagunakeun grafik kagumantungan Incremental tunggal (tanpa division kana tahapan), anu ngamungkinkeun pikeun ngaronjatkeun jero parallelization gawé dibandingkeun Buck na Bazel sarta ngahindarkeun loba jenis kasalahan.
  • Kodeu Buck2 diterbitkeun dina GitHub sareng aturan pikeun ngadukung basa pamrograman ampir sami sareng versi internal anu dianggo dina infrastruktur Facebook (hiji-hijina bédana aya hubunganana sareng édisi kompiler sareng server assembly anu dianggo dina Facebook).
  • Sistim assembly dirancang kalayan hiji panon ka integrasi jeung sistem palaksanaan tugas jauh nu ngidinan Anjeun pikeun ngajalankeun gawé dina server jauh. API palaksanaan jauh cocog sareng Bazel sareng diuji pikeun kasaluyuan sareng Buildbarn sareng EngFlow.
  • Integrasi sareng sistem file virtual disayogikeun, dimana eusi sadaya gudang dibere, tapi dina kanyataanana, padamelan dilaksanakeun nganggo potongan lokal ayeuna bagian tina gudang (pamekar ningali sadaya gudang, tapi ngan ukur file anu diperyogikeun. nu diakses diekstrak tina gudang). VFS dumasar kana EdenFS sareng Git LFS, anu dianggo dina Sapling, dirojong.

sumber: opennet.ru

Tambahkeun komentar