Buck2, il nuovo sistema di compilazione di Facebook

Buck2-Eroe

Buck2, il nuovo sistema di compilazione open source di Facebook

Facebook introdotto ha recentemente rilasciato un nuovo sistema di compilazione chiamato "Buck2", che rileva che lo è focalizzato sulla costruzione di progetti da repository molto quelli grandi che includono codice in diverse lingue programmazione.

Le differenze tra la nuova implementazione e il sistema dollaro precedentemente utilizzato Da facebook usano il linguaggio Rust invece di Java e un aumento significativo dell'efficienza e delle prestazioni del processo di assemblaggio (nei test interni sulla stessa infrastruttura, Buck2 esegue le attività di assemblaggio due volte più velocemente di Buck).

I sistemi di compilazione si frappongono tra uno sviluppatore e il suo codice in esecuzione, quindi tutto ciò che possiamo fare per rendere l'esperienza più veloce o più produttiva influisce direttamente sull'efficacia di uno sviluppatore. L'obiettivo di Buck2 era mantenere ciò che amavamo di Buck1 (le basi e i flussi di lavoro), trarre ispirazione dalle innovazioni post-Buck1 (tra cui Bazel, Adapton e Shake) e concentrarsi sulla velocità e consentire nuove esperienze.

A proposito di Buck2

Si evidenzia che il sistema non è vincolato alla creazione di codice in linguaggi specifici e pronto all'uso, supporta progetti builder scritti in C++, Python, Rust, Kotlin, Erlang, Swift, Objective-C, Haskell e OCaml utilizzati da Facebook.

Il linguaggio Starlark, basato su Python (come in Bazel), viene utilizzato per progettare plugin, creare script e regole. Starlark consente di estendere le capacità del sistema di compilazione e di astrarre dai linguaggi specifici utilizzati nei progetti in costruzione.

Si è detto che prestazioni elevate si ottengono memorizzando nella cache i risultati, parallelizzazione del lavoro e supporto per l'esecuzione remota delle attività (Remote Build Execution).

L'ambiente di costruzione utilizza il concetto di "ermeticità": il codice compilato viene staccato dal mondo esterno, nulla viene caricato dall'esterno durante il processo di compilazione e l'esecuzione ripetuta del lavoro su sistemi diversi porta allo stesso risultato (build ripetute, ad esempio, il risultato della compilazione di un progetto sul macchina dallo sviluppatore sarà esattamente la stessa della build sul server di integrazione continua). La situazione di mancanza di dipendenza è percepita in Buck2 come un bug.

Da parte di Caratteristiche principali di Buck2, si distinguono i seguenti:

  • Le regole per supportare i linguaggi di programmazione e il core build system sono completamente separate. Le regole sono scritte nel linguaggio Starlark e il toolkit e l'implementazione di Starlark sono scritti in Rust.
  • Il sistema di compilazione utilizza un singolo grafico di dipendenza incrementale (senza staging), che consente di aumentare la profondità di parallelizzazione del lavoro rispetto a Buck e Bazel ed evitare molti tipi di bug.
  • Il codice di Buck2 pubblicato su GitHub e le regole di supporto del linguaggio di programmazione sono quasi identiche alla versione interna utilizzata nell'infrastruttura di Facebook (le uniche differenze sono nel collegamento alle edizioni del compilatore e ai server di compilazione utilizzati da Facebook).
  • Il sistema di compilazione è progettato per integrarsi con i sistemi di esecuzione dei processi remoti che consentono di eseguire processi su server remoti. L'API di esecuzione remota è compatibile con Bazel ed è stata testata per la compatibilità con Buildbarn ed EngFlow.
  • Viene fornita l'integrazione con file system virtuali, in cui vengono presentati i contenuti dell'intero repository, ma in realtà il lavoro viene svolto con la porzione locale reale di una parte del repository (lo sviluppatore vede l'intero repository, ma solo quello è richiesto) i file a cui si accede vengono recuperati dal repository). Sono supportati VFS basati su EdenFS e Git LFS, utilizzati da Sapling.

Infine, per chi fosse interessato a saperne di più, sappia che il codice è distribuito sotto licenza Apache 2.0 e può consultare i dettagli nel seguente link


Lascia un tuo commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati con *

*

*

  1. Responsabile dei dati: Miguel Ángel Gatón
  2. Scopo dei dati: controllo SPAM, gestione commenti.
  3. Legittimazione: il tuo consenso
  4. Comunicazione dei dati: I dati non saranno oggetto di comunicazione a terzi se non per obbligo di legge.
  5. Archiviazione dati: database ospitato da Occentus Networks (UE)
  6. Diritti: in qualsiasi momento puoi limitare, recuperare ed eliminare le tue informazioni.