A medida que Bazel sigue evolucionando en respuesta a tus necesidades, queremos compartir nuestra actualización de la hoja de ruta de 2025.
Planeamos ofrecer la compatibilidad a largo plazo (LTS) de Bazel 9.0 a fines de 2025.
Transición completa a Bzlmod
Bzlmod es el sistema de dependencias externo estándar en Bazel desde Bazel 7, que reemplaza el sistema WORKSPACE heredado. A partir de marzo de 2025, el Registro central de Bazel alberga 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 de 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é de repositorio compartido mejorada (consulta #12227) con el recolector de elementos no utilizados y, tal vez, llevarla a Bazel 8. El Registro central de Bazel también admitirá la verificación de las certificaciones 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 de la base de código 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 explícitamente las reglas requeridas en los archivos BUILD.
Volveremos a escribir 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. Esta es la última compatibilidad con lenguajes principales que aún forma parte de Bazel.
También estamos migrando las pruebas de unidades de las reglas de C++, Java y Proto a Starlark, y las trasladamos a repositorios junto con la implementación para aumentar la velocidad de los autores de reglas.
Mejoras de Starlark
Bazel podrá evaluar 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 dónde. Por lo tanto, $ bazel test //foo
establece automáticamente las marcas correctas según la política del proyecto de foo
. Es probable que esta función siga siendo experimental en la versión 9.0, pero recibimos con gusto los comentarios que nos ayuden a guiarla.
El alcance de marcas te permite quitar las marcas de Starlark cuando salen de los límites del proyecto, de modo que no rompan 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. Este es un ejemplo. Estamos extendiendo la idea para controlar qué marcas se propagan a las configuraciones de ejecución y estamos considerando una compatibilidad aún más flexible, como Starlark personalizado, para determinar qué aristas de dependencia deben propagar marcas.
Estamos priorizando el esfuerzo para trasladar las marcas de lenguaje integradas de Bazel a Starlark, donde pueden coexistir con definiciones de reglas relacionadas.
Mejoras en la ejecución remota
Planeamos agregar compatibilidad con la ejecución asíncrona, lo que acelerará la ejecución remota a través del aumento del 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.
El objetivo de esta hoja de ruta es ayudar a 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.