Hoja de ruta de Bazel

Informa un problema Ver código fuente

Descripción general

Feliz Año Nuevo a nuestra comunidad de Bazel. Para el año nuevo, planeamos incorporar los detalles de nuestra hoja de ruta para 2023. El año pasado, publicamos nuestra hoja de ruta de 2022 con nuestros planes de Bazel 6.0. Esperamos que la hoja de ruta nos haya informado sobre tus necesidades de herramientas de compilación. A medida que el proyecto Bazel continúa evolucionando en respuesta a sus 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 brindarte la asistencia a largo plazo (LTS) de Bazel 7.0 a fines de 2023. Con Bazel 7.0, pretendemos entregar muchos de los elementos en curso y continuar trabajando en las mejoras de funciones que nuestros usuarios han solicitado.

Mejor uso compartido de caché entre plataformas

Permite que los artefactos almacenados en caché se compartan entre diferentes plataformas de compilación locales (Mac) y remotas (Linux) principalmente para Java/Kotlin y el desarrollo de Android, lo que mejora el rendimiento y el uso eficiente de la caché.

Compilación de apps para Android con Bazel

El manifiesto y la herramienta de combinación de recursos se actualizaron a la versión 30.1.3 para que los desarrolladores de apps de Android puedan usar nuevas funciones de combinación de manifiestos, como tools:node="merge".

Mejoras en la ejecución remota

Bazel 7.0 proporciona compatibilidad para ejecución asíncrona, lo que acelera la ejecución remota mediante un mayor paralelismo con trabajos de marca.

Bzlmod: sistema de administración de dependencias externo

Bzlmod resuelve las dependencias transitivas de forma automática. Esto permite que los proyectos escalen y, al mismo tiempo, mantengan una velocidad y un uso eficiente de los recursos. Bazel 7.0 contiene una serie de mejoras para la administración externa de dependencias de Bazel, incluidas las siguientes:

  • Bzlmod está activado de forma predeterminada para la administración de dependencias externas en Bazel
  • Compatibilidad con bloqueo de archivos: Habilita la compilación hermética con Bzlmod
  • Compatibilidad con el modo de proveedor y sin conexión: permite a los usuarios ejecutar compilaciones con dependencias descargadas previamente
  • Compatibilidad total con la caché del repositorio (el almacenamiento en caché no solo descarga los artefactos, sino también el contenido final del repositorio)
  • El registro central de Bazel incluye la contribución de la comunidad con regularidad y la adopción de proyectos y reglas clave de Bazel.

Métricas de análisis de compilación

Bazel 7.0 proporciona métricas de tiempo de análisis de fases, lo que permite a los desarrolladores optimizar su propio rendimiento de compilación.

Cómo compilar 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 un cuello de botella en el ancho de banda de red. Se incluyen las siguientes funciones:

Aumenta la productividad con Skymeld

Bazel 7.0 presenta Skymeld, un modo de evaluación que reduce el tiempo invertido de tus compilaciones multiobjetivo. Skymeld elimina la barrera entre las fases de análisis y ejecución para mejorar las velocidades de compilación, especialmente para aquellas con varios objetivos de nivel superior. Sin embargo, no se espera una diferencia significativa para las compilaciones de un solo objetivo.

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 separar el desarrollo de Bazel y permitir mejor las contribuciones de la comunidad. Además, logramos que estas reglas sean 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 que los desarrolladores de apps para Android desarrollen, prueben e implementen cualquier cambio en las apps para Android rápidamente con una versión actualizada de la instalación para dispositivos móviles.

Generación de datos de software (SBOM) de software y herramientas de cumplimiento de licencias de OSS

Con Bazel, los desarrolladores pueden generar datos para ayudar a producir SBOM. Estos datos se muestran en formato de texto o JSON y se pueden formatear 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 compilar 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 y las operaciones de desarrollo identifiquen la fuente 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

Migración completa de los conjuntos de reglas de Java, C++ y Python a Starlark Esta iniciativa permite a los usuarios de Bazel bifurcar solo conjuntos de reglas y no bases de código binarias de Bazel, lo que permite a los usuarios

  • Actualice y personalice las reglas según sea necesario
  • Actualiza reglas de forma independiente de Bazel

Compatibilidad con Bazel-JetBrains* IntelliJ IDEA

Actualizaciones incrementales del complemento de IntelliJ para admitir la versión más reciente del complemento de JetBrains.

Esta hoja de ruta resume los objetivos y no se debe tomar como 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 enterarte de 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. IntelliJ y JetBrains son marcas registradas de JetBrains s.r.o