Rilascio del sistema di compilazione Bazel 1.0

Introdotto rilascio di strumenti di assemblaggio aperti Bazel 1.0, sviluppato dagli ingegneri di Google e utilizzato per assemblare la maggior parte dei progetti interni dell'azienda. La versione 1.0 ha segnato la transizione al controllo delle versioni del rilascio semantico ed è stata anche degna di nota per l'introduzione di un gran numero di modifiche che hanno interrotto la compatibilità con le versioni precedenti. Codice del progetto distribuito da concesso in licenza con Apache 2.0.

Bazel costruisce il progetto eseguendo i compilatori e i test necessari. Il sistema di compilazione è progettato da zero per creare in modo ottimale progetti Google, inclusi progetti molto grandi e progetti che contengono codice in più linguaggi di programmazione, richiedono test approfonditi e sono realizzati per più piattaforme. Supporta la creazione e il test di codice in Java, C++, Objective-C, Python, Rust, Go e molti altri linguaggi, oltre alla creazione di applicazioni mobili per Android e iOS. È supportato l'uso di singoli file di assembly per piattaforme e architetture diverse; ad esempio, un file di assembly senza modifiche può essere utilizzato sia per un sistema server che per un dispositivo mobile.

Tra le caratteristiche distintive di Bazel vi sono l'elevata velocità, affidabilità e ripetibilità del processo di assemblaggio. Per ottenere un'elevata velocità di compilazione, Bazel utilizza attivamente tecniche di caching e parallelizzazione per il processo di compilazione. I file BUILD devono definire completamente tutte le dipendenze, sulla base delle quali vengono prese le decisioni per ricostruire i componenti dopo aver apportato le modifiche (vengono ricostruiti solo i file modificati) e parallelizzare il processo di assemblaggio. Gli utensili garantiscono inoltre un assemblaggio ripetibile, ad es. il risultato della creazione di un progetto sulla macchina dello sviluppatore sarà completamente identico alla creazione su sistemi di terze parti, come i server di integrazione continua.

A differenza di Make e Ninja, Bazel utilizza un approccio di livello superiore alla creazione di regole di assemblaggio, in cui, invece di definire l'associazione dei comandi ai file in fase di creazione, vengono utilizzati blocchi più astratti già pronti, come "costruire un file eseguibile in C++", "costruire una libreria in C++" o "eseguire un test per C++", nonché identificare piattaforme di destinazione e di creazione. Nel file di testo BUILD, i componenti del progetto sono descritti come un insieme di librerie, file eseguibili e test, senza dettagli a livello di singoli file e comandi di chiamata del compilatore. Funzionalità aggiuntive sono implementate attraverso il meccanismo per la connessione delle estensioni.

Fonte: opennet.ru

Aggiungi un commento