Facebook nerbitake sistem mbangun Buck2

Facebook ngenalaken sistem mbangun anyar, Buck2, ngarahke kanggo ngatur mbangun proyek saka repositori gedhe banget, kalebu kode ing basa program beda. Bentenane utama antarane implementasi anyar lan sistem Buck sing sadurunge digunakake ing Facebook yaiku nggunakake basa Rust tinimbang Jawa lan nambah efisiensi lan produktivitas proses perakitan (ing tes internal ing infrastruktur sing padha, Buck2 nindakake perakitan. tugas kaping pindho luwih cepet Buck). Kode kasebut disebarake miturut lisensi Apache 2.0.

Sistem kasebut ora ana gandhengane karo pangumpulan kode ing basa tartamtu lan metu saka kothak ndhukung perakitan proyek sing ditulis ing basa C ++, Python, Rust, Kotlin, Erlang, Swift, Objective-C, Haskell lan OCaml , digunakake dening Facebook. Basa Starlark, adhedhasar Python (kaya ing Bazel), digunakake kanggo ngrancang tambahan, mbangun skrip lan aturan. Starlark ngidini sampeyan nggedhekake kemampuan sistem perakitan lan abstrak saka basa tartamtu sing digunakake ing proyek sing dirakit.

Kinerja dhuwur digayuh liwat caching asil, paralelisasi karya lan dhukungan kanggo eksekusi remot tugas (Remote Build Execution). Ing lingkungan perakitan, konsep "hermetisitas" digunakake - kode sing dirakit dipotong saka jagad njaba, ora ana sing dimuat saka njaba sajrone proses perakitan, lan eksekusi sing bola-bali ing sistem sing beda nyebabake asil sing padha ( majelis bola-bali, contone, asil ngrakit proyek ing mesin pangembang bakal rampung podho rupo kanggo mbangun ing server integrasi terus). Kahanan kekurangan katergantungan dianggep minangka kesalahan ing Buck2.

Fitur utama Buck2:

  • Aturan kanggo ndhukung basa pamrograman lan inti sistem perakitan pancen kapisah. Aturan nggunakake basa Starlark, lan toolkit lan implementasine Starlark ditulis ing Rust.
  • Sistem perakitan nggunakake grafik katergantungan tambahan siji (tanpa divisi dadi tahapan), sing ngidini nambah ambane paralelisasi karya dibandhingake Buck lan Bazel lan ngindhari akeh jinis kesalahan.
  • Kode Buck2 sing diterbitake ing GitHub lan aturan kanggo ndhukung basa pamrograman meh padha karo versi internal sing digunakake ing infrastruktur Facebook (mung bedane ana hubungane karo edisi kompiler lan server perakitan sing digunakake ing Facebook).
  • Sistem perakitan dirancang kanthi mripat kanggo integrasi karo sistem eksekusi tugas remot sing ngidini sampeyan mbukak karya ing server remot. API eksekusi remot kompatibel karo Bazel lan diuji kompatibilitas karo Buildbarn lan EngFlow.
  • Integrasi karo sistem file virtual diwenehake, ing ngendi isi kabeh repositori ditampilake, nanging nyatane, karya ditindakake kanthi potongan lokal saiki saka bagean repositori (pangembang ndeleng kabeh repositori, nanging mung file sing dibutuhake. sing diakses diekstrak saka repositori). VFS adhedhasar EdenFS lan Git LFS, sing digunakake ing Sapling, didhukung.

Source: opennet.ru

Add a comment