Descripción general
Feliz año nuevo a nuestra comunidad de Bazel. Con el nuevo año, planeamos brindar detalles de nuestra hoja de ruta de 2023. El año pasado, publicamos nuestra hoja de ruta de 2022 con nuestros planes para Bazel 6.0. Esperamos que la hoja de ruta proporcionada haya informado tus necesidades de herramientas de compilación. A medida que el proyecto de Bazel continúa evolucionando en respuesta a tus necesidades, queremos compartir nuestra actualización de 2023.
Con estos cambios, buscamos mantener informada e incluida a nuestra comunidad de código abierto. En esta hoja de ruta, se describen las iniciativas actuales y las predicciones para el futuro del desarrollo de Bazel, lo que te brinda visibilidad sobre las prioridades actuales y los proyectos en curso.
Lanzamiento de Bazel 7.0
Planeamos ofrecerte la asistencia a largo plazo (LTS) de Bazel 7.0 a largo plazo (LTS) a fines de 2023. Con Bazel 7.0, nuestro objetivo es entregar muchos de los elementos en curso y seguir trabajando en las mejoras de funciones que nuestros usuarios han solicitado.
Mejor uso compartido de caché multiplataforma
Permite que los artefactos almacenados en caché se compartan en diferentes plataformas de compilación locales (Mac) y remotas (Linux), principalmente para el desarrollo de Java/Kotlin y Android, lo que genera un mejor rendimiento y un uso eficiente de la caché.
Compilación de apps para Android con Bazel
Actualizaciones de Manifest & Resource Merger a la versión 30.1.3 para que los desarrolladores de apps para Android puedan usar funciones de combinación de manifiestos más recientes, como tools:node="merge".
Mejoras en la ejecución remota
Bazel 7.0 proporciona compatibilidad con la ejecución asíncrona, lo que acelera la ejecución remota a través de un mayor paralelismo con la marca --jobs.
Bzlmod: sistema de administración de dependencias externas
Bzlmod resuelve automáticamente las dependencias transitivas, lo que permite que los proyectos se escalen sin dejar de ser rápidos y eficientes en cuanto a los recursos. Bazel 7.0 contiene varias mejoras en la funcionalidad de administración de dependencias externas de Bazel, incluidas las siguientes:
- Bzlmod está activado de forma predeterminada para la administración de dependencias externas en Bazel.
- Compatibilidad con archivos de bloqueo: permite la compilación hermética con Bzlmod.
- Compatibilidad con el modo sin conexión o del proveedor: permite a los usuarios ejecutar compilaciones con dependencias descargadas previamente.
- Compatibilidad completa con la caché del repositorio (almacenamiento en caché no solo de artefactos de descargas, sino también del contenido final del repositorio)
- Bazel Central Registry incluye la contribución regular de la comunidad y la adopción de reglas y proyectos clave de Bazel.
Métricas de análisis de compilación
Bazel 7.0 proporciona métricas de tiempo de la fase de análisis, lo que permite a los desarrolladores optimizar su propio rendimiento de compilación.
Compilación sin Bytes activada de forma predeterminada
La compilación sin Bytes optimiza el rendimiento, ya que evita la descarga de artefactos intermedios y evita que las compilaciones se conviertan en un cuello de botella en el ancho de banda de la red. Entre las funciones agregadas, se incluyen las siguientes:
Compatibilidad con el desalojo de caché remota con un servicio de arrendamiento, de modo que los usuarios no tengan errores cuando los artefactos se desalojen de forma prematura
Aborda las brechas de funciones en la compatibilidad con vínculos simbólicos.
Proporciona opciones para recuperar resultados intermedios de acciones remotas.
Productividad de compilación con Skymeld
Bazel 7.0 presenta Skymeld, un modo de evaluación que reduce el tiempo de pared de tus compilaciones de varios destinos. Skymeld elimina la barrera entre las fases de análisis y ejecución para mejorar las velocidades de compilación, en especial para las compilaciones con varios destinos de nivel superior. Sin embargo, para las compilaciones de un solo destino, no se espera una diferencia significativa.
Ecosistema y herramientas de Bazel
Compilación de apps para Android con Bazel
- Migra las reglas nativas de Android a Starlark: Para Bazel 7.0, las reglas de Android migran a Starlark para desacoplar el desarrollo de Bazel y permitir mejor las contribuciones de la comunidad. Además, hicimos que estas reglas sean independientes del objeto binario principal de Bazel, lo que nos permite lanzar versiones con mayor frecuencia.
- Migración de reglas de Android a Starlark
- Compatibilidad con R8: Permite que los desarrolladores de apps para Android usen optimizaciones actualizadas de R8.
- Instalación para dispositivos móviles: Permite que los desarrolladores de apps para Android desarrollen, prueben e implementen rápidamente cualquier cambio en la app para Android a través de una versión actualizada de la instalación para dispositivos móviles.
Generación de datos de la lista de materiales de software (SBOM) y herramientas de cumplimiento de licencias de OSS
Con Bazel, los desarrolladores pueden generar datos para ayudar a producir SBOM. Estos datos se generan en formato de texto o JSON, y se pueden formatear fácilmente para cumplir con las especificaciones de SPDX o CycloneDX. Además, el proceso proporciona reglas para declarar las licencias en las que están disponibles los módulos de Bazel y herramientas para crear procesos en torno a esas declaraciones. Consulta la implementación en curso de rules_license en GitHub.
Compilaciones firmadas
Bazel proporciona objetos binarios de confianza para Windows y Mac firmados con claves de Google. Esta función permite que los desarrolladores multiplataforma o de DevOps identifiquen la fuente de los objetos binarios de Bazel y protejan sus sistemas de objetos binarios potencialmente maliciosos y no verificados.
Migración de reglas de Java, C++ y Python a Starlark
Migración completa de los conjuntos de reglas de Java, C++ y Python a Starlark. Este esfuerzo permite a los usuarios de Bazel bifurcar solo los conjuntos de reglas y no la base de código binario de Bazel, lo que permite a los usuarios hacer lo siguiente:
- Actualizar y personalizar las reglas según sea necesario
- Actualizar las reglas de forma independiente de Bazel
Compatibilidad con IntelliJ IDEA de Bazel-JetBrains*
Actualizaciones incrementales del complemento de IntelliJ para admitir la versión más reciente del complemento de JetBrains.
Esta hoja de ruta muestra los objetivos y no debe considerarse como una garantía. Las prioridades están sujetas a cambios en respuesta a los comentarios de los desarrolladores y clientes, o a nuevas oportunidades de mercado.
Para recibir notificaciones sobre las funciones nuevas, incluidas las actualizaciones de esta hoja de ruta, únete a la comunidad de Grupos de Google.
*Copyright © 2022 JetBrains s.r.o. JetBrains e IntelliJ son marcas registradas de JetBrains s.r.o