Buck2, noul sistem de construcție Facebook

Buck2-Eroul

Buck2, noul sistem de construcție open source al Facebook

Facebook a prezentat a lansat recent un nou sistem de construcție numit „Buck2”, care notează că este concentrat pe construirea de proiecte din depozite muy cele mari care includ cod în diferite limbi programare.

Diferentele între noua implementare și sistem dolar folosit anterior De facebook folosesc limbajul Rust în loc de Java și o creștere semnificativă a eficienței și performanței procesului de asamblare (în testele interne pe aceeași infrastructură, Buck2 realizează sarcinile de asamblare de două ori mai repede decât Buck).

Sistemele de construcție stau între un dezvoltator și codul care rulează, așa că orice putem face pentru a face experiența mai rapidă sau mai productivă afectează direct cât de eficient poate fi un dezvoltator. Scopul lui Buck2 a fost să păstrăm ceea ce ne-a plăcut la Buck1 (elementele de bază și fluxurile de lucru), să ne inspirăm din inovațiile post-Buck1 (inclusiv Bazel, Adapton și Shake) și să ne concentrăm asupra vitezei și a posibilității de noi experiențe.

Despre Buck2

Se evidențiază faptul că sistemul nu este legat de crearea de cod în anumite limbi și de la cutie, acceptă proiecte builder scrise în C++, Python, Rust, Kotlin, Erlang, Swift, Objective-C, Haskell și OCaml utilizate de Facebook.

Limbajul Starlark, bazat pe Python (ca și în Bazel), este folosit pentru a proiecta pluginuri, a crea scripturi și reguli. Starlark vă permite să extindeți capacitățile sistemului de construcție și să faceți abstracție de la limbajele specifice utilizate în proiectele în curs de construire.

Se menționează că performanța ridicată este obținută prin memorarea în cache a rezultatelor, paralelizarea lucrărilor și suport pentru executarea de la distanță a sarcinilor (Remote Build Execution).

Mediul de construcție folosește conceptul de „ermeticitate”: codul compilat este detașat din lumea exterioară, nimic nu este încărcat din exterior în timpul procesului de construire și execuția repetată a jobului pe sisteme diferite duce la același rezultat (construcții repetate, de exemplu, rezultatul compilării unui proiect pe mașina de la dezvoltator va fi exact aceeași cu versiunea de pe serverul de integrare continuă). Situația de lipsă de dependență este percepută în Buck2 ca un bug.

Din partea Caracteristici cheie Buck2, se remarcă următoarele:

  • Regulile pentru susținerea limbajelor de programare și sistemul de construcție de bază sunt complet separate. Regulile sunt scrise în limbajul Starlark, iar setul de instrumente și implementarea Starlark sunt scrise în Rust.
  • Sistemul de construcție folosește un singur grafic de dependență incremental (fără staging), care vă permite să creșteți profunzimea paralelizării lucrării în comparație cu Buck și Bazel și să evitați multe tipuri de erori.
  • Codul lui Buck2 postat pe GitHub și regulile de suport pentru limbajul de programare sunt aproape identice cu versiunea internă folosită în infrastructura Facebook (singurele diferențe sunt în linkul către edițiile compilatorului și serverele de construcție utilizate de Facebook).
  • Sistemul de compilare este proiectat să se integreze cu sistemele de execuție a joburilor la distanță care vă permit să rulați joburi pe servere la distanță. API-ul de execuție la distanță este compatibil cu Bazel și a fost testat pentru compatibilitate cu Buildbarn și EngFlow.
  • Este furnizată integrarea cu sisteme de fișiere virtuale, în care este prezentat conținutul întregului depozit, dar, de fapt, munca se desfășoară cu porțiunea locală reală a unei părți a depozitului (dezvoltatorul vede întregul depozit, dar numai ceea ce este necesar) fișierele accesate sunt preluate din depozit). Sunt acceptate VFS și Git LFS bazate pe EdenFS, care sunt utilizate de Sapling.

În fine, pentru cei interesați să poată afla mai multe despre el, trebuie să știe că codul este distribuit sub licența Apache 2.0 și pot consulta detaliile. În următorul link.


Lasă comentariul tău

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

*

*

  1. Responsabil pentru date: Miguel Ángel Gatón
  2. Scopul datelor: Control SPAM, gestionarea comentariilor.
  3. Legitimare: consimțământul dvs.
  4. Comunicarea datelor: datele nu vor fi comunicate terților decât prin obligație legală.
  5. Stocarea datelor: bază de date găzduită de Occentus Networks (UE)
  6. Drepturi: în orice moment vă puteți limita, recupera și șterge informațiile.