Descripción general
Feliz Año Nuevo a nuestra comunidad de Bazel. Con el nuevo año, planeamos brindar detalles sobre nuestra hoja de ruta del 2023. El año pasado, publicamos nuestro plan de trabajo para el 2022 con nuestros planes para Bazel 6.0. Esperamos que el plan de trabajo haya satisfecho tus necesidades de herramientas de compilación. A medida que el proyecto de Bazel sigue evolucionando en respuesta a tus necesidades, queremos compartir nuestra actualización de 2023.
Con estos cambios, buscamos mantener informada y participativa 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
Tenemos previsto lanzar Bazel 7.0 con asistencia a largo plazo (LTS) a fines de 2023. Con Bazel 7.0, nuestro objetivo es lanzar muchos de los elementos en curso y seguir trabajando en las mejoras de funciones que nos solicitaron los usuarios.
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 una app para Android con Bazel
El combinador de manifiestos y recursos se actualizó 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 admite 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 y, a la vez, sigan siendo rápidos y eficientes en el uso de 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 de proveedor: Permite a los usuarios ejecutar compilaciones con dependencias descargadas previamente
- Compatibilidad completa con la caché del repositorio (almacenamiento en caché no solo de los artefactos descargados, sino también del contenido final del repositorio)
- El Registro central de Bazel incluye la contribución y la adopción periódicas de la comunidad de reglas y proyectos clave de Bazel.
Crea 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 el rendimiento de sus propias compilaciones.
Compila sin los Bytes activados de forma predeterminada
Builds without the Bytes optimiza el rendimiento, ya que evita la descarga de artefactos intermedios y evita que las compilaciones se vean limitadas por el ancho de banda de la red. Entre las funciones agregadas, se incluyen las siguientes:
Compatibilidad con la expulsión de caché remota con un servicio de arrendamiento para que los usuarios no tengan errores cuando los artefactos se expulsen de forma prematura
Se solucionaron las brechas de funciones en la compatibilidad con vínculos simbólicos
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 real 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 objetivo, no se espera una diferencia significativa.
Ecosistema y herramientas de Bazel
Compilación de una app para Android con Bazel
- Migra las reglas nativas de Android a Starlark: En Bazel 7.0, las reglas de Android se migran a Starlark para desacoplar el desarrollo de Bazel y habilitar mejor las contribuciones de la comunidad. Además, independizamos estas reglas del archivo 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 las optimizaciones actualizadas de R8.
- Instalación en dispositivos móviles: Permite a los desarrolladores de apps para Android desarrollar, probar e implementar rápidamente cualquier cambio en las apps para Android a través de una versión actualizada de Instalación en 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 SBOMs. 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 bajo las que se encuentran disponibles los módulos de Bazel y herramientas para crear procesos en torno a esas declaraciones. Consulta la implementación de rules_license en curso en GitHub.
Compilaciones firmadas
Bazel proporciona archivos binarios confiables para Windows y Mac firmados con claves de Google. Esta función permite que los desarrolladores y los equipos de DevOps de varias plataformas identifiquen la fuente de los archivos binarios de Bazel y protejan sus sistemas de archivos binarios potencialmente maliciosos y no verificados.
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 que los usuarios de Bazel bifurquen solo los 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 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.
Este resumen de la 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 los clientes, o a nuevas oportunidades de mercado.
Para recibir notificaciones sobre las nuevas funciones, incluidas las actualizaciones de esta hoja de ruta, únete a la comunidad del Grupo de Google.
*Copyright © 2022 JetBrains s.r.o. JetBrains y IntelliJ son marcas comerciales registradas de JetBrains s.r.o.