Hoja de ruta de Bazel

Descripción general

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

Con estos cambios, buscamos mantener a nuestra comunidad de código abierto informada e incluida. 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.

En esta hoja de ruta, se resumen los objetivos, lo que no debe tomarse como una garantía. Las prioridades están sujetas a cambios en función de los comentarios de los desarrolladores y los clientes o de las nuevas oportunidades de mercado.

Si quieres recibir notificaciones sobre funciones nuevas, incluidas las actualizaciones de esta hoja de ruta, únete a la comunidad de Grupos de Google.

T4: Versión de Bazel 6.0

En el cuarto trimestre, se incluye 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 externo

Bzlmod resuelve automáticamente las dependencias transitivas, lo que permite que los proyectos escalen con rapidez y eficiencia de recursos. Bzlmod, que se introdujo de manera experimental en Bazel 5.0, tendrá disponibilidad general y proporcionará una solución para el problema de dependencia de diamantes.

  • Bzlmod pasa de "experimental" a "disponibilidad general"
  • Incluye compatibilidad con rules\_jvm\_external, lo que permite que los usuarios descarguen dependencias de Maven para proyectos de Java.
  • La Guía de migración de Bzlmod proporciona herramientas, secuencias de comandos y documentación para los equipos que buscan adoptar Bzlmod.
  • El repositorio central de Bazel aloja reglas principales de BUILD de Bazel (rules\_jvm\_external, rules\_go, rules\_python, rules\_nodejs) y 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 el documento 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 integradas. Con la anticipación a una mayor adopción y una base de código en crecimiento, el equipo de Bazel dará prioridad a la integración de herramientas de compilación de Android con reglas de Android para Bazel.

  • Se actualiza D8 a la versión 3.3.28 y se establece como dexer predeterminado.
  • Se combina con las principales contribuciones de las funciones de la comunidad agregadas en 5.X, incluida la compatibilidad con lo siguiente:
    • Trabajadores persistentes con D8
    • Expansión de sintaxis con D8
    • Combina las etiquetas "uses-permissions" en los manifiestos de Android
    • Trabajadores multiplex en el procesamiento de recursos de Android

Cadenas de herramientas opcionales

Nuestra encuesta de satisfacción para desarrolladores mostró que los autores de reglas quieren apoyo para un mayor desarrollo de cadenas 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 Bazel-JetBrains* IntelliJ IDEA

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

  • 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
  • Impulsa el desarrollo impulsado por la comunidad para funciones en tránsito, como la compatibilidad con Scala.

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

Desarrollo futuro

De cara al futuro, el equipo de Bazel comenzó a desarrollar o prevé priorizar las siguientes funciones a partir de 2023.

Cómo mejorar 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, las pruebas y la implementación.

  • Migración a R8 y asistencia para este
  • Actualizaciones de las reglas de Android, incluida la traducción al idioma de Starlark
  • Compatibilidad con paquetes de aplicaciones
  • Compatibilidad con versiones recientes del NDK
  • Cobertura de código de prueba

Herramientas de cumplimiento de licencias de OSS

Los desarrolladores solicitaron un sólido verificador del cumplimiento de licencias para garantizar la disponibilidad y 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 objetivo, se incluyen las siguientes:

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

Consulta la implementación de las reglas_licencia en progreso en GitHub.

Bzlmod: sistema de administración de dependencias externo

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

  • Compatibilidad con compilaciones herméticas
  • Modo de proveedor/sin conexión fijando reglas de referencias con versiones a una copia local
  • Bazel Central Registry incluye contribuciones de la comunidad y adopción de proyectos y reglas 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/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 de varios lenguajes. Con esta función, los desarrolladores pueden reducir los errores costosos en el tiempo de desarrollo y la complejidad en sus compilaciones grandes.

Crea métricas de análisis

La telemetría de Bazel proporcionará métricas de tiempo de las fases de análisis, lo que permite a los desarrolladores optimizar el rendimiento de su propia compilación.

Ejecución remota con “Compilas sin los bytes”

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

  • Usa la descarga asíncrona para que las acciones locales y remotas se inicien en cuanto descarguen sus resultados dependientes.
  • Cómo agregar compatibilidad con vínculos simbólicos
  • Recupera resultados intermedios de acciones remotas una vez que se completa una compilación

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