Llançament del sistema de compilació Bazel 1.0

Presentat llançament d'eines de muntatge obertes Bazel 1.0, desenvolupat per enginyers de Google i utilitzat per muntar la majoria dels projectes interns de l'empresa. La versió 1.0 va marcar la transició a la versió semàntica i també va destacar per introduir un gran nombre de canvis que van trencar la compatibilitat cap enrere. Codi del projecte Distribuït per amb llicència d'Apache 2.0.

Bazel crea el projecte executant els compiladors i proves necessaris. El sistema de compilació està dissenyat des de principis per crear projectes de Google de manera òptima, inclosos projectes molt grans i projectes que contenen codi en diversos llenguatges de programació, requereixen proves exhaustives i estan creats per a diverses plataformes. Admet la creació i prova de codi en Java, C++, Objective-C, Python, Rust, Go i molts altres idiomes, així com la creació d'aplicacions mòbils per a Android i iOS. S'admet l'ús de fitxers de muntatge únics per a diferents plataformes i arquitectures; per exemple, es pot utilitzar un fitxer de muntatge sense canvis tant per a un sistema de servidor com per a un dispositiu mòbil.

Entre les característiques distintives de Bazel es troben l'alta velocitat, la fiabilitat i la repetibilitat del procés de muntatge. Per aconseguir una alta velocitat de creació, Bazel utilitza activament tècniques de memòria cau i paral·lelització per al procés de creació. Els fitxers BUILD han de definir completament totes les dependències, a partir de les quals es prenen decisions per reconstruir els components després de fer els canvis (només es reconstrueixen els fitxers modificats) i paral·lelitzar el procés de muntatge. Les eines també garanteixen un muntatge repetible, és a dir. el resultat de la creació d'un projecte a la màquina del desenvolupador serà completament idèntic a la construcció en sistemes de tercers, com ara servidors d'integració contínua.

A diferència de Make i Ninja, Bazel utilitza un enfocament de nivell superior per crear regles de muntatge, en el qual, en lloc de definir la vinculació d'ordres als fitxers que s'estan construint, s'utilitzen blocs ja fets més abstractes, com ara "crear un fitxer executable en C++", "construir una biblioteca en C++" o "executar una prova per a C++", així com identificar plataformes de destinació i compilació. Al fitxer de text BUILD, els components del projecte es descriuen com un munt de biblioteques, fitxers executables i proves, sense detallar a nivell de fitxers individuals i ordres de trucada del compilador. S'implementa una funcionalitat addicional mitjançant el mecanisme per connectar extensions.

Font: opennet.ru

Afegeix comentari