Bazel 7 lanzado con un nuevo sistema de gestión de dependencias y más

Recientemente anunciado en BazelCon 23Bazel 7 materializa varias características nuevas que han estado en desarrollo durante varios años, incluido el nuevo sistema modular de gestión de dependencias externas Bzlmod, un nuevo modo de optimización “Construir sin bytes”, rendimiento de compilación multiobjetivo mejorado gracias al Proyecto Skymeld y más. .

Bzlmod es un nuevo sistema modular de gestión de dependencia externa que reemplaza al antiguo WORKSPACE mecanismo. Un módulo de Bazel es un proyecto que puede tener múltiples versiones, y cada versión depende de un conjunto de dependencias, como se muestra en el siguiente fragmento:

module(name = "my-module", version = "1.0")

bazel_dep(name = "rules_cc", version = "0.0.1")
bazel_dep(name = "protobuf", version = "3.19.0")

Bzlmod, el nuevo subsistema de dependencia externa, no funciona directamente con definiciones de repositorios. En cambio, crea un gráfico de dependencia a partir de módulos, ejecuta extensiones sobre el gráfico y define los repositorios en consecuencia.

Bzlmod ahora está habilitado de forma predeterminada, lo que significa que si un proyecto no tiene un MODULE.bazel archivo, Bazel creará uno vacío. Bazel 7 seguirá funcionando con el sistema anterior por motivos de compatibilidad, pero los desarrolladores deberían emigrar a Bzlmod antes del lanzamiento de Bazel 8.

Construir sin los bytes (BwoB) reduce la cantidad de datos que Bazel transfiere para compilaciones remotas descargando solo un subconjunto de archivos intermedios.

En el pasado, el comportamiento predeterminado de Bazel era descargar todos los archivos de salida de una acción después de haber ejecutado la acción de forma remota o acceder a un caché remoto. Sin embargo, la suma de todos los archivos de salida en una compilación grande suele ser de decenas o incluso cientos de gigabytes. Los beneficios de la ejecución remota y el almacenamiento en caché pueden verse superados por los costos de esta descarga, especialmente si la conexión de red es deficiente.

Si bien ha estado disponible durante mucho tiempo, BwoB ahora es estable y se ha vuelto confiable para casos extremos, por lo que puede usarse como el nuevo valor predeterminado.

leer más  Magewell amplía su gama de codificadores avanzados de medios en vivo

Skymeld es otra característica destinada a aumentar la productividad, específicamente para compilaciones con múltiples objetivos de nivel superior. Ofrece un modo de evaluación que elimina la barrera entre las fases de análisis y ejecución y permite que los objetivos se ejecuten de forma independiente tan pronto como finalice su análisis para mejorar la velocidad de construcción.

Como nota final, Bazel 7 ahora permite de forma predeterminada la resolución de la cadena de herramientas basada en plataforma por sus reglas de Android y C++. Este cambio tiene como objetivo optimizar la API de resolución de la cadena de herramientas en todos los conjuntos de reglas, obviando así la necesidad de indicadores específicos del idioma, como --android_cpu y --crosstool_top.

Los proyectos de Android deberán dejar de pasar la bandera heredada --fat_apk_cpuy en su lugar utilizar --android_platforms utilizando plataformas definidas con el @platforms//os:android restricción.

Hay mucho más en Bazel 7 de lo que se puede cubrir aquí, así que no te pierdas el notas de lanzamiento oficiales para conocer todos los detalles.

2023-12-30 09:00:50
1703927190
#Bazel #lanzado #con #nuevo #sistema #gestión #dependencias #más

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.