Hoja de ruta de Bazel

Informar un problema Ver fuente Nightly · 8.3 · 8.2 · 8.1 · 8.0 · 7.6

A medida que Bazel sigue evolucionando en respuesta a tus necesidades, queremos compartir la actualización de nuestra planificación para el 2025.

Tenemos previsto ofrecerte la compatibilidad a largo plazo (LTS) de Bazel 9.0 a fines de 2025.

Transición completa a Bzlmod

Bzlmod es el sistema estándar de dependencias externas en Bazel desde la versión 7, y reemplazó al sistema heredado WORKSPACE. En marzo de 2025, el Registro central de Bazel aloja más de 650 módulos.

Con Bazel 9, quitaremos por completo la funcionalidad de WORKSPACE, y Bzlmod será la única forma de introducir dependencias externas en Bazel. Para minimizar el costo de migración para la comunidad, nos enfocaremos en mejorar aún más nuestra guía y herramienta de migración.

Además, nuestro objetivo es implementar una caché mejorada del repositorio compartido (consulta #12227) con recolección de elementos no utilizados, y es posible que la portemos a Bazel 8. El registro central de Bazel también admitirá la verificación de las constancias de SLSA.

Migración de reglas de Android, C++, Java, Python y Proto

Con Bazel 8, migramos la compatibilidad con las reglas de Android, Java, Python y Proto del código base de Bazel a las reglas de Starlark en sus repositorios correspondientes. Para facilitar la migración, implementamos las funciones de carga automática en Bazel, que se pueden controlar con las marcas --incompatible_autoload_externally y --incompatible_disable_autoloads_in_main_repo.

Con Bazel 9, nuestro objetivo es inhabilitar las cargas automáticas de forma predeterminada y exigir que cada proyecto cargue de forma explícita las reglas requeridas en los archivos BUILD.

Reescribiremos la mayor parte de la compatibilidad con el lenguaje C++ en Starlark, la separaremos del binario de Bazel y la trasladaremos al repositorio /rules_cc. Este es el último lenguaje principal que aún se admite en Bazel.

También estamos portando pruebas de unidades para reglas de C++, Java y Proto a Starlark, y las trasladaremos a repositorios junto a la implementación para aumentar la velocidad de los autores de reglas.

Mejoras en Starlark

Bazel podrá evaluar las macros simbólicas de forma diferida. Esto significa que una macro simbólica no se ejecutará si no se solicitan los destinos que declara, lo que mejora el rendimiento de los paquetes muy grandes.

Starlark tendrá un sistema de tipos experimental, similar a las anotaciones de tipos de Python. Esperamos que el sistema de tipos se estabilice después del lanzamiento de Bazel 9.

Capacidad de configuración

Nuestro objetivo principal es reducir el costo y la confusión de las marcas de compilación.

Estamos experimentando con un nuevo modelo de configuración de proyectos que no requiere que los usuarios sepan qué marcas de compilación y prueba establecer en cada lugar. Por lo tanto, $ bazel test //foo establece automáticamente las marcas correctas según la política del proyecto de foo. Es probable que siga siendo experimental en la versión 9.0, pero se agradecen los comentarios orientativos.

El alcance de las marcas te permite quitar las marcas de Starlark cuando salen de los límites del proyecto, de modo que no interrumpan el almacenamiento en caché en las dependencias transitivas que no las necesitan. Esto hace que las compilaciones que usan transiciones sean más económicas y rápidas. Aquí tienes un ejemplo. Estamos extendiendo la idea para controlar qué marcas se propagan a las configuraciones de ejecución y estamos considerando un soporte aún más flexible, como Starlark personalizado, para determinar qué bordes de dependencia deben propagar marcas.

Estamos priorizando el esfuerzo para trasladar las marcas de idioma integradas de Bazel a Starlark, donde pueden coexistir con las definiciones de reglas relacionadas.

Mejoras en la ejecución remota

Tenemos previsto agregar compatibilidad con la ejecución asíncrona, lo que acelerará la ejecución remota al aumentar el paralelismo.


Para seguir las actualizaciones de la hoja de ruta y analizar las funciones planificadas, únete al servidor de Slack de la comunidad en slack.bazel.build.

Esta hoja de ruta tiene como objetivo informar a la comunidad sobre las intenciones del equipo para Bazel 9.0. Las prioridades están sujetas a cambios en respuesta a los comentarios de los desarrolladores y los clientes, o a nuevas oportunidades de mercado.