Buck2, novi Facebook sustav izgradnje

Buck2-Heroj

Buck2, Facebookov novi sustav za izgradnju otvorenog koda

Predstavljen Facebook nedavno je objavio novi sustav izrade pod nazivom "Buck2", koji napominje da je usmjeren na izgradnju projekata iz repozitorija vrlo velike koje uključuju kod na različitim jezicima programiranje.

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

Sustavi izgradnje stoje između programera i njegovog koda koji radi, tako da sve što možemo učiniti da iskustvo učinimo bržim ili produktivnijim izravno utječe na to koliko programer može biti učinkovit. Cilj za Buck2 bio je zadržati ono što smo voljeli kod Buck1 (osnove i tijek rada), uzeti inspiraciju iz post-Buck1 inovacija (uključujući Bazel, Adapton i Shake) i usredotočiti se na brzinu i omogućavanje novih iskustava.

O Buck2

Istaknuto je da sustav nije vezan za stvaranje koda na određenim jezicima i izvan kutije, podržava projekte graditelja napisane u C++, Python, Rust, Kotlin, Erlang, Swift, Objective-C, Haskell i OCaml koje koristi Facebook.

Jezik Starlark, temeljen na Pythonu (kao u Bazelu), koristi se za dizajniranje dodataka, stvaranje skripti i pravila. Starlark vam omogućuje da proširite mogućnosti sustava za izgradnju i apstrahirate od specifičnih jezika koji se koriste u projektima koji se izrađuju.

Spominje se da visoke performanse se postižu pohranjivanjem rezultata u predmemoriju, paralelizacija rada i podrška za daljinsko izvršavanje zadataka (Remote Build Execution).

Okolina izgradnje koristi koncept "hermetičnosti": kompajlirani kod je odvojen od vanjskog svijeta, ništa se ne učitava izvana tijekom procesa izgradnje, a opetovano izvršavanje posla na različitim sustavima dovodi do istog rezultata (ponovljeno građenje, na primjer, rezultat kompajliranja projekta na stroj od razvojnog programera bit će potpuno isti kao i verzija na poslužitelju kontinuirane integracije). Nedostatak situacije ovisnosti u Buck2 se doživljava kao greška.

Sa strane Ključne značajke Buck2, izdvajaju se:

  • Pravila za podršku programskim jezicima i osnovnom sustavu izgradnje potpuno su odvojena. Pravila su napisana na Starlark jeziku, a Starlark alati i implementacija napisani su na Rustu.
  • Sustav izgradnje koristi jedan inkrementalni graf ovisnosti (bez postavljanja), što vam omogućuje povećanje dubine paralelizacije rada u usporedbi s Buckom i Bazelom i izbjegavanje mnogih vrsta grešaka.
  • Kod Buck2 objavljen na GitHubu i pravila podrške za programski jezik gotovo su identični internoj verziji koja se koristi u Facebookovoj infrastrukturi (jedine razlike su u vezi s izdanjima prevoditelja i poslužiteljima za izgradnju koje koristi Facebook). ).
  • Sustav za izgradnju dizajniran je za integraciju sa sustavima za daljinsko izvršavanje poslova koji vam omogućuju pokretanje poslova na udaljenim poslužiteljima. API za daljinsko izvođenje kompatibilan je s Bazelom i testiran je na kompatibilnost s Buildbarn i EngFlow.
  • Predviđena je integracija s virtualnim datotečnim sustavima u kojima se prikazuje sadržaj cijelog repozitorija, ali zapravo se radi sa stvarnim lokalnim dijelom dijela repozitorija (programer vidi cijeli repozitorij, ali samo ono što je potrebno) datoteke kojima se pristupa dohvaćaju se iz repozitorija). Podržani su VFS bazirani na EdenFS-u i Git LFS, koje koristi Sapling.

Konačno, za one koji žele saznati više o tome, trebali bi znati da se kod distribuira pod licencom Apache 2.0 i da mogu provjeriti detalje U sljedećem linku.


Ostavite svoj komentar

Vaša email adresa neće biti objavljen. Obavezna polja su označena s *

*

*

  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 obvezi.
  5. Pohrana podataka: Baza podataka koju hostira Occentus Networks (EU)
  6. Prava: U bilo kojem trenutku možete ograničiti, oporaviti i izbrisati svoje podatke.