Hoja de ruta de Bazel

Informar un problema Ver código fuente Nightly · 8.0 7.4 . 7.3 · 7.2 · 7.1 · 7.0 · 6.5

Descripción general

El proyecto Bazel evoluciona constantemente en respuesta a tus necesidades: desarrolla funciones y brinda asistencia mientras mantiene, refactoriza y mejora el rendimiento del producto principal.

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.

Esta hoja de ruta incluye instantáneas de los objetivos y no debe considerarse 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.

4ᵉʳ trim.: Lanzamiento de Bazel 6.0

El cuarto trimestre trae Bazel 6.0, la nueva versión de asistencia a largo plazo (LTS). Bazel 6.0 planea incluir nuevas funciones potentes y solicitadas por la comunidad para administrar dependencias, desarrollar con Android y mucho más.

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. Bzlmod, que se introdujo de forma experimental en Bazel 5.0, estará disponible para el público en general y proporcionará una solución para el problema de dependencia de diamante.

  • Bzlmod pasa de "experimental" a "disponible para el público en general".
  • Incluye compatibilidad con rules\_jvm\_external, lo que permite a los usuarios descargar dependencias de Maven para proyectos de Java.
  • La Guía de migración de Bzlmod proporciona herramientas, secuencias de comandos y documentación a los equipos que desean adoptar Bzlmod.
  • El repositorio central de Bazel aloja las reglas principales de BUILD de Bazel (rules\_jvm\_external, rules\_go, rules\_python y rules\_nodejs) y las dependencias clave necesarias para Bzlmod.

Para obtener más información sobre este desarrollo, mira la actualización de la comunidad de Bzlmod o lee la documentación de diseño original.

Compilación de apps para Android con Bazel

Bazel 6.0 incluirá herramientas mejoradas y contribuciones de funciones de la comunidad combinadas. Anticipándose a una mayor adopción y a una base de código en crecimiento, el equipo de Bazel dará prioridad a la integración de las herramientas de compilación de Android con las reglas de Android de Bazel.

  • Actualiza D8 a la versión 3.3.28 y la establece como el dexer predeterminado.
  • Se fusiona con las contribuciones principales de funciones de la comunidad agregadas en 5.X, incluida la compatibilidad con lo siguiente:
    • Trabajadores persistentes con D8
    • Expansión de sintaxis con D8
    • Cómo combinar etiquetas "uses-permissions" en manifiestos de Android
    • Trabajadores de multiplexación en el procesamiento de recursos de Android

Cadenas de herramientas opcionales

Nuestra encuesta de satisfacción de los desarrolladores mostró que los autores de reglas desean obtener asistencia para el desarrollo de la cadena de herramientas. Bazel 6.0 permitirá a los autores escribir reglas con una cadena de herramientas opcional de alto rendimiento cuando esté disponible con una implementación de resguardo para otras plataformas.

Compatibilidad con IntelliJ IDEA de Bazel-JetBrains*

JetBrains se asoció con Bazel para coadministrar el complemento de Bazel para IntelliJ IDEA, lo que respalda el objetivo de aumentar la administración de la comunidad y abrir la capacidad para solicitudes de funciones y desarrollo.

  • El complemento de IntelliJ v. 2022.2 proporciona compatibilidad con la versión más reciente del complemento de JetBrains.
  • Aumenta la compatibilidad con el desarrollo remoto
  • Fomenta el desarrollo impulsado por la comunidad para las funciones en vuelo, como la compatibilidad con Scala.

Para obtener más información sobre este desarrollo, lee el anuncio de blog de Bazel-JetBrains.

Desarrollo futuro

De cara al futuro, el equipo de Bazel comenzó a desarrollar o prevé priorizar las siguientes funciones en 2023 y más adelante.

Mejora las reglas de compilación de Android de Bazel

Sigue invirtiendo en la experiencia de desarrollo de apps para Android y enfócate en el flujo de trabajo a través de la compilación, la prueba y la implementación.

  • Migración a R8 y compatibilidad con esta versión
  • Actualizaciones de las reglas de Android, incluida la traducción al lenguaje Starlark
  • Compatibilidad con Android App Bundle
  • Compatibilidad con versiones recientes del NDK
  • Cómo probar la cobertura de código

Herramientas de cumplimiento de licencias de software de código abierto

Los desarrolladores solicitaron un verificador de cumplimiento de licencias sólido para garantizar la disponibilidad y la seguridad de los paquetes incluidos. Este proyecto proporciona un conjunto de reglas y herramientas para ayudar a identificar y mitigar los riesgos de cumplimiento y licencia asociados con un componente de software determinado. Entre las funciones de segmentación, se incluyen las siguientes:

  • La capacidad de auditar los paquetes que usa un objetivo determinado
  • La capacidad de crear verificaciones de cumplimiento de licencias específicas de la organización

Consulta la implementación de rules_license en curso en GitHub.

Bzlmod: Sistema de administración de dependencias externas

En el lanzamiento, Bzlmod mejora la escalabilidad y la confiabilidad de las dependencias transitivas. Durante los próximos tres años, el objetivo de Bzlmod es reemplazar WORKSPACE como el subsistema predeterminado de administración de dependencias de espacios de trabajo de Bazel. Entre las funciones segmentadas, se incluyen las siguientes:

  • Compatibilidad con compilaciones herméticas
  • El modo sin conexión o del proveedor fija reglas de referencias con versión a una copia local
  • El Registro central de Bazel incluye contribuciones regulares de la comunidad y la adopción de reglas y proyectos clave de Bazel.
  • Bzlmod se convierte en la herramienta predeterminada para compilar proyectos de Bazel.

Compilaciones firmadas

Bazel proporcionará objetos binarios de confianza para Windows y Mac firmados con claves de Google. Esta función permite que los desarrolladores o los equipos de dev-ops multiplataforma identifiquen la fuente de los objetos binarios de Bazel y protejan sus sistemas de objetos binarios maliciosos no verificados.

API de Standardized Platforms

La nueva API de Platforms estandarizará la configuración de la arquitectura para compilaciones multiplataforma y multilingües. Con esta función, los desarrolladores pueden reducir los costosos errores y la complejidad del tiempo de desarrollo en sus compilaciones grandes.

Cómo crear métricas de análisis

La telemetría de Bazel proporcionará métricas de tiempo de la fase de análisis, lo que permitirá a los desarrolladores optimizar su propio rendimiento de compilación.

Ejecución remota con "Builds without the Bytes"

Las compilaciones sin bytes optimizarán el rendimiento, ya que solo permitirán que Bazel descargue los artefactos necesarios, lo que evitará que las compilaciones generen cuellos de botella en el ancho de banda de la red. Entre las funciones agregadas para compilaciones remotas, se incluyen las siguientes:

  • Usa la descarga asíncrona para permitir que las acciones locales y remotas se inicien en cuanto descarguen sus resultados dependientes.
  • Agrega compatibilidad con symlinks
  • Cómo recuperar resultados intermedios de acciones remotas una vez que se completa una compilación

*Copyright © 2022 JetBrains s.r.o. JetBrains e IntelliJ son marcas comerciales registradas de JetBrains s.r.o.