Buck2, el nou sistema de compilació de Facebook

Buck2-Hero

Buck2, el nou sistema de compilació de codi obert de Facebook

Facebook va presentar recentment un nou sistema de compilació anomenat Buck2, el qual destaca que està enfocat a construir projectes a partir de repositoris molt grans que inclouen codi en diferents llenguatges de programació.

les diferències clau entre la nova implementació i el sistema Buck utilitzat anteriorment per Facebook són lús del llenguatge Rust en lloc de Java i un augment significatiu en l'eficiència i el rendiment del procés d'assemblatge (en proves internes a la mateixa infraestructura, Buck2 realitza assemblatge tasques el doble de ràpid que Buck).

Els sistemes de compilació s'interposen entre un programador i l'execució del vostre codi, de manera que qualsevol cosa que puguem fer perquè l'experiència sigui més ràpida o més productiva afecta directament l'eficàcia que pot tenir un desenvolupador. L'objectiu de Buck2 era mantenir el que ens agradava de Buck1 (els conceptes bàsics i els fluxos de treball), inspirar-nos en les innovacions posteriors a Buck1 (inclosos Bazel, Adapton i Shake) i centrar-nos en la velocitat i permetre noves experiències.

Sobre Buck2

Es destaca que el sistema no està vinculat a la creació de codi en llenguatges específics i, de manera immediata, admet projectes de creació escrits a C++, Python, Rust, Kotlin, Erlang, Swift, Objective-C, Haskell i OCaml utilitzats per Facebook.

El llenguatge Starlark, basat en Python (com Bazel), s'usa per dissenyar complements, crear scripts i regles. Starlark us permet ampliar les capacitats del sistema de construcció i abstreure's dels llenguatges específics utilitzats en els projectes que s'estan construint.

S'esmenta que l'alt rendiment s'aconsegueix mitjançant l'emmagatzematge a la memòria cau dels resultats, la paral·lelització del treball i el suport per a l'execució remota de tasques (Remote Build Execution).

L'entorn de compilació utilitza el concepte de «hermeticitat»: el codi compilat se separa del món exterior, no es carrega res des de l'exterior durant el procés de compilació i l'execució repetida del treball en diferents sistemes condueix al mateix resultat (construccions repetides, per exemple, el resultat de compilar un projecte a la màquina del desenvolupador serà exactament el mateix que la compilació al servidor d'integració contínua). La situació de manca de dependència es percep a Buck2 com un error.

Per la part de les característiques clau de Buck2, Es destaquen les següents:

  • Les regles per admetre llenguatges de programació i el nucli del sistema de compilació estan completament separats. Les regles estan escrites en el llenguatge Starlark, i el kit d'eines i la implementació de Starlark estan escrits a Rust.
  • El sistema de compilació utilitza un únic gràfic de dependència incremental (sense divisió en etapes), cosa que us permet augmentar la profunditat de la paral·lelització del treball en comparació amb Buck i Bazel i evitar molts tipus d'errors.
  • El codi de Buck2 publicat a GitHub i les regles de suport del llenguatge de programació són gairebé idèntiques a la versió interna utilitzada a la infraestructura de Facebook (les úniques diferències són a l'enllaç a les edicions del compilador i els servidors de compilació utilitzats per Facebook ).
  • El sistema de compilació està dissenyat amb vista a la integració amb sistemes d'execució de treballs remots que us permeten executar treballs en servidors remots. L'API d'execució remota és compatible amb Bazel i se n'ha provat la compatibilitat amb Buildbarn i EngFlow.
  • Es proporciona integració amb sistemes d'arxius virtuals, on es presenten els continguts de tot el repositori, però de fet, el treball es duu a terme amb la porció local real d'una part del repositori (el desenvolupador veu tot el repositori, però només el requerit) els arxius a què s'accedeix es recuperen del repositori). S'admeten VFS basats en EdenFS i Git LFS, que són utilitzats per Sapling.

Finalment, per als interessats en poder conèixer-ne més, han de saber que el codi es distribueix sota la llicència Apache 2.0 i poden consultar-ne els detalls en el següent enllaç.


Deixa el teu comentari

La seva adreça de correu electrònic no es publicarà. Els camps obligatoris estan marcats amb *

*

*

  1. Responsable de les dades: Miguel Ángel Gatón
  2. Finalitat de les dades: Controlar l'SPAM, gestió de comentaris.
  3. Legitimació: El teu consentiment
  4. Comunicació de les dades: No es comunicaran les dades a tercers excepte per obligació legal.
  5. Emmagatzematge de les dades: Base de dades allotjada en Occentus Networks (UE)
  6. Drets: En qualsevol moment pots limitar, recuperar i esborrar la teva informació.