Descripción general
Feliz año nuevo a nuestra comunidad de Bazel. Con el nuevo año, planeamos brindar detalles de nuestra planificación para 2023. El año pasado, publicamos nuestro plan de trabajo para 2022 con nuestros planes de Bazel 6.0. Esperamos que el plan de trabajo proporcionado haya informado tus necesidades de herramientas de compilación. A medida que el proyecto Bazel sigue evolucionando en respuesta a tus necesidades, queremos compartir nuestra actualización de 2023.
Con estos cambios, buscamos mantener informada y 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.
Lanzamiento de Bazel 7.0
Planeamos ofrecerte la asistencia a largo plazo (LTS) de Bazel 7.0 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 nos solicitaron.
Mejor uso compartido de la caché multiplataforma
Permite que los artefactos almacenados en caché se compartan entre 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
La combinación de manifiestos y recursos 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 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 paralelismo mayor 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, al mismo tiempo, sean 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 se activa 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 o del proveedor: Permite que los usuarios ejecuten compilaciones con dependencias descargadas previamente.
- Compatibilidad completa con la caché del repositorio (la caché no solo descarga artefactos, sino también el contenido final del repositorio)
- El registro central de Bazel incluye contribuciones regulares de la comunidad y la adopción de reglas y proyectos clave de Bazel.
Cómo crear 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.
Cómo compilar sin que los bytes estén 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 agregadas, se incluyen las siguientes:
Compatibilidad con la expulsión de caché remota con un servicio de arrendamiento para que los usuarios no se encuentren con errores cuando los artefactos se expulsen de forma prematura
Se abordaron las brechas de funciones en la compatibilidad con symlink
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 de ejecución de tus compilaciones de varios objetivos. 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 objetivos de nivel superior. Sin embargo, para las compilaciones de un solo objetivo, no se espera una diferencia significativa.
Herramientas y ecosistema de Bazel
Compilación de apps para Android con Bazel
- Se migraron 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, hicimos que estas reglas sean independientes del 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.
- Mobile Install: Permite que los desarrolladores de apps para Android desarrollen, prueben e implementen cualquier cambio de app para Android rápidamente a través de una versión actualizada de Mobile Install.
Generación de datos de listas 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 dar formato 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 ponen a disposición los módulos de Bazel y herramientas para compilar procesos en torno a esas declaraciones. Consulta la implementación de rules_license 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 o los equipos de operaciones de desarrollo multiplataforma identifiquen la fuente de los objetos binarios de Bazel y protejan sus sistemas de objetos binarios no verificados y potencialmente maliciosos.
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 los conjuntos de reglas y no la base de código binaria de Bazel, lo que les permite hacer lo siguiente:
- Actualiza y personaliza las reglas según sea necesario
- Actualiza las reglas independientemente 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 incluye instantáneas de los objetivos y no debe tomarse como garantías. Las prioridades están sujetas a cambios en función de los comentarios de los desarrolladores y los clientes, o de nuevas oportunidades de mercado.
Para recibir notificaciones sobre funciones nuevas, incluidas las actualizaciones de esta hoja de ruta, únete a la comunidad de Grupos de Google.
*Derechos de autor © 2022 JetBrains s.r.o. JetBrains e IntelliJ son marcas comerciales registradas de JetBrains s.r.o.