Buck2, novi sistem izgradnje Facebooka

Buck2-Hero

Buck2, Facebookov novi sistem gradnje otvorenog koda

Facebook predstavljen nedavno je objavio novi sistem gradnje pod nazivom "Buck2", koji napominje da jeste fokusiran na izgradnju projekata iz repozitorija vrlo velike koje uključuju kod na različitim jezicima programiranje.

Razlike između nove implementacije i sistema prethodno korišteni dolar Facebookom koriste Rust jezik umjesto Jave i značajno povećanje efikasnosti i performansi procesa sklapanja (u internim testovima na istoj infrastrukturi, Buck2 obavlja zadatke montaže dvostruko brže od Buck-a).

Sistemi izgradnje stoje između programera i njegovog koda koji se izvodi, tako da sve što možemo učiniti da iskustvo bude brže ili produktivnije direktno utiče na to koliko programer može biti efikasan. Cilj Buck2 je bio da zadrži ono što nam se sviđa kod Buck1 (osnove i tokovi rada), da se inspiriše inovacijama nakon Buck1 (uključujući Bazel, Adapton i Shake) i fokusira se na brzinu i omogućavanje novih iskustava.

O Buck2

Istaknuto je da sistem nije vezan za kreiranje koda na određenim jezicima i van kutije, podržava builder projekte napisane na C++, Python, Rust, Kotlin, Erlang, Swift, Objective-C, Haskell i OCaml koje koristi Facebook.

Starlark jezik, zasnovan na Pythonu (kao u Bazelu), koristi se za dizajniranje dodataka, kreiranje skripti i pravila. Starlark vam omogućava da proširite mogućnosti sistema izgradnje i apstrahujete od specifičnih jezika koji se koriste u projektima koji se grade.

To se spominje visoke performanse se postižu keširanjem rezultata, paralelizacija rada i podrška za daljinsko izvršavanje zadataka (Remote Build Execution).

Okruženje za izgradnju koristi koncept "hermetičnosti": kompajlirani kod je odvojen od vanjskog svijeta, ništa se ne učitava izvana tokom procesa izgradnje, a ponovljeno izvršavanje posla na različitim sistemima dovodi do istog rezultata (ponovljene gradnje, na primjer, rezultat kompajliranja projekta na mašina od programera će biti potpuno ista kao i verzija na serveru za kontinuiranu integraciju). Nedostatak situacije zavisnosti se u Buck2 percipira kao greška.

Sa strane Buck2 ključne karakteristike, izdvajaju se:

  • Pravila za podršku programskim jezicima i osnovni sistem izgradnje potpuno su odvojena. Pravila su napisana na Starlark jeziku, a Starlark alat i implementacija su napisani u Rust-u.
  • Sistem gradnje koristi jedan inkrementalni graf zavisnosti (bez stadijuma), koji vam omogućava da povećate dubinu paralelizacije rada u poređenju sa Buckom i Bazelom i izbegnete mnoge vrste grešaka.
  • Buck2-ov kod objavljen na GitHub-u i pravila podrške programskom jeziku su gotovo identični internoj verziji koja se koristi u infrastrukturi Facebooka (jedine razlike su u linku do izdanja kompajlera i servera za izgradnju koje koristi Facebook). ).
  • Sistem izgradnje je dizajniran za integraciju sa sistemima za udaljeno izvršavanje poslova koji vam omogućavaju pokretanje poslova na udaljenim poslužiteljima. API za daljinsko izvršavanje je kompatibilan sa Bazel-om i testiran je na kompatibilnost sa Buildbarn i EngFlow.
  • Obezbeđena je integracija sa virtuelnim sistemima datoteka, u kojima je predstavljen sadržaj čitavog spremišta, a zapravo se rad obavlja sa stvarnim lokalnim delom dela spremišta (programer vidi celo spremište, ali samo ono što je potrebno) datoteke kojima se pristupa preuzimaju se iz spremišta). Podržani su VFS zasnovani na EdenFS i Git LFS, koje koristi Sapling.

Konačno, za one koji su zainteresirani da mogu saznati više o tome, trebali bi znati da se kod distribuira pod licencom Apache 2.0 i mogu pogledati detalje Na sledećem linku.


Ostavite komentar

Vaša e-mail adresa neće biti objavljena. Obavezna polja su označena sa *

*

*

  1. Za podatke odgovoran: Miguel Ángel Gatón
  2. Svrha podataka: Kontrola neželjene pošte, upravljanje komentarima.
  3. Legitimacija: Vaš pristanak
  4. Komunikacija podataka: Podaci se neće dostavljati trećim stranama, osim po zakonskoj obavezi.
  5. Pohrana podataka: Baza podataka koju hostuje Occentus Networks (EU)
  6. Prava: U bilo kojem trenutku možete ograničiti, oporaviti i izbrisati svoje podatke.