Facebook hà publicatu u sistema di creazione Buck2

Facebook hà introduttu un novu sistema di custruzzione, Buck2, focu annantu à i prughjetti di custruzzione da repositori assai grandi chì includenu codice in diverse lingue di prugrammazione. E sfarenze chjave trà a nova implementazione è u sistema Buck utilizatu prima da Facebook sò l'usu di a lingua Rust invece di Java è un incrementu significativu in l'efficienza è a prestazione di u prucessu di assemblea (in testi interni in a listessa infrastruttura, Buck2 realiza l'assemblea). compiti duie volte più veloce di Buck). U codice hè distribuitu sottu a licenza Apache 2.0.

U sistema ùn hè micca ligatu à u codice di custruzzione in lingue specifiche è fora di a scatula supporta i prughjetti di costruzione scritti in C++, Python, Rust, Kotlin, Erlang, Swift, Objective-C, Haskell è OCaml utilizati da Facebook. A lingua Starlark basatu in Python (cum'è in Bazel) hè utilizatu per cuncepisce add-ons, custruisce scripts è regule. Starlark permette di allargà e capacità di u sistema di custruzzione è astrattu da e lingue specifiche aduprate in i prughjetti chì sò custruiti.

L'alta prestazione hè ottenuta attraversu a cache di i risultati, a parallelizazione di u travagliu è u supportu per l'esekzione remota di i travaglii (Remote Build Execution). In l'ambiente di custruzzione, u cuncettu di "tightness" hè utilizatu - u codice compilatu hè tagliatu da u mondu esternu, nunda ùn hè caricatu da l'esternu durante u prucessu di custruzzione, è l'esekzione ripetuta di u travagliu in diversi sistemi porta à u stessu risultatu ( e custruzzioni ripetuti, per esempiu, u risultatu di custruisce un prughjettu nantu à a macchina di u sviluppatore serà esattamente u listessu cum'è a custruzzione nantu à u servitore d'integrazione cuntinuu). A situazione di mancanza di dependenza hè percepita in Buck2 cum'è un sbagliu.

Caratteristiche principali di Buck2:

  • E regule per sustene e lingue di prugrammazione è u core di u sistema di custruzzione sò completamente separati. E regule sò scritte in a lingua Starlark, è u toolkit Starlark è l'implementazione sò scritti in Rust.
  • U sistema di custruzzione usa un unicu graficu di dependenza incrementale (senza divisione in tappe), chì vi permette di aumentà a prufundità di parallelizazione di u travagliu cumparatu cù Buck è Bazel è evite parechji tipi d'errori.
  • U codice Buck2 publicatu in GitHub è e regule di supportu di lingua di prugrammazione sò quasi identica à a versione interna utilizata in l'infrastruttura di Facebook (l'unicu differenzi sò in ubligatoriu à l'edizioni di compilatore è di custruisce servitori utilizati da Facebook).
  • U sistema di custruzzione hè cuncepitu cù un ochju à l'integrazione cù i sistemi di esecuzione di travagliu remoti chì permettenu di eseguisce travaglii in servitori remoti. L'API di esecuzione remota hè cumpatibile cù Bazel è hè stata pruvata per a cumpatibilità cù Buildbarn è EngFlow.
  • L'integrazione cù i sistemi di schedarii virtuale hè furnita, in quale u cuntenutu di u repositoriu sanu hè presentatu, ma in fattu, u travagliu hè realizatu cù a fetta lucale attuale di una parte di u repository (u sviluppatore vede tuttu u repository, ma solu u necessariu. i schedari chì sò accessu sò recuperati da u repository). I supportati sò VFS basati in EdenFS è Git LFS, chì sò utilizati da Sapling.

Source: opennet.ru

Add a comment