Descripción general
Feliz año nuevo a nuestra comunidad de Bazel. Con este año, planeamos agregar detalles sobre nuestra hoja de ruta para 2023. El año pasado, publicamos nuestra hoja de ruta para el año 2022 con nuestros planes Bazel 6.0. Esperamos que la hoja de ruta proporcionada haya sido de utilidad para tus necesidades de herramientas de compilación. A medida que el proyecto Bazel sigue evolucionando para responder 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 y predicciones actuales para el futuro del desarrollo de Bazel, lo que te brinda visibilidad de las prioridades actuales y los proyectos en curso.
Versión de Bazel 7.0
Planeamos ofrecerte asistencia a largo plazo (LTS) de Bazel 7.0 a finales de 2023. Con Bazel 7.0, pretendemos ofrecer muchos de los elementos en curso y continuar trabajando en las mejoras de funciones que pidieron nuestros usuarios.
Mejor uso compartido de caché multiplataforma
Permite compartir los artefactos almacenados en caché entre diferentes plataformas de compilación locales (Mac) y remotas (Linux) principalmente para el desarrollo de Java/Kotlin y Android, lo que da como resultado un mejor rendimiento y un uso eficiente de la caché.
Compilación de apps para Android con Bazel
Manifiesto y Resource Merger se actualiza a la versión 30.1.3 para que los desarrolladores de apps para Android puedan usar funciones más recientes de combinación de manifiestos, como tools:node="merge".
Mejoras para 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 los trabajos de marca.
Bzlmod: sistema de gestión de dependencias externo
Bzlmod resuelve automáticamente las dependencias transitivas, lo que permite que los proyectos escalen sin ser rápidos y con un uso eficiente de los recursos. Bazel 7.0 incluye una serie de mejoras a 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: habilita la compilación hermética con Bzlmod
- Compatibilidad con el modo sin conexión y de proveedor: Permite que los usuarios ejecuten compilaciones con dependencias descargadas previamente.
- Compatibilidad completa con la caché del repositorio (almacenar en caché no solo los artefactos de descarga, sino también el contenido final del repositorio)
- Bazel Central Registry incluye la contribución regular de la comunidad y la adopción de reglas clave de Bazel y proyectos
Compila métricas de análisis
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.
Compila sin los bytes activados de forma predeterminada
Las compilaciones sin bytes optimizan el rendimiento, ya que evitan la descarga de artefactos intermedios y evitan que las compilaciones generen cuellos de botella en el ancho de banda de la red. Entre las funciones que se agregaron, se incluyen las siguientes:
Compatibilidad con el desalojo de caché remota con un servicio de alquiler para que los usuarios no experimenten errores cuando se expulsen los artefactos de forma prematura
Aborda las brechas de funciones en la compatibilidad con symlinks
Proporciona opciones para recuperar resultados intermedios de acciones remotas
Aumenta la productividad con Skymeld
Bazel 7.0 presenta Skymeld, un modo de evaluación que reduce el tiempo necesario para 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, especialmente para compilaciones con varios objetivos de nivel superior. Sin embargo, en el caso de las compilaciones de un solo objetivo, no se espera una diferencia significativa.
Ecosistema de Bazel y Herramientas
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 separar el desarrollo de Bazel y mejorar las contribuciones de la comunidad. Además, establecimos que estas reglas fueran independientes del objeto binario principal de Bazel, lo que nos permite realizar actualizaciones con mayor frecuencia.
- Migración de las 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 a los desarrolladores de apps para Android desarrollar, probar e implementar rápidamente cualquier cambio en una app para Android mediante una versión actualizada de Mobile Install.
Generación de datos de listas de materiales (SBOM) de software 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 les puede dar formato fácilmente para cumplir con las especificaciones 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 de reglas_licencia en curso 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 el origen de los objetos binarios de Bazel y protejan sus sistemas de objetos binarios potencialmente maliciosos sin verificar.
Migración de reglas de Java, C++ y Python a Starlark
Se completó la migración de los conjuntos de reglas de Java, C++ y Python a Starlark. Este esfuerzo permite a los usuarios de Bazel bifurcar solo conjuntos de reglas y no la base de código binario de Bazel, lo que les permite
- Actualiza y personaliza las reglas según sea necesario
- Actualiza reglas independientemente de Bazel
Compatibilidad con IntelliJ IDEA con Bazel-JetBrains*
Actualizaciones incrementales del complemento de IntelliJ para admitir la versión más reciente del complemento de JetBrains.
El resumen de esta hoja de ruta se orienta a los objetivos y no debe tomarse como garantía. Las prioridades están sujetas a cambios en función de los comentarios de los desarrolladores y los clientes, o bien a nuevas oportunidades de mercado.
Para recibir notificaciones sobre nuevas funciones, incluidas las actualizaciones de esta hoja de ruta, únete a la comunidad del Grupo de Google.
*Copyright © 2022 JetBrains s.r.o. IntelliJ y JetBrains son marcas registradas de JetBrains s.r.o