Hoja de ruta de Bazel

Informar un problema . Ver fuente . Por la noche · 7.2 · 7.1 · 7.0 · 6.5 · 6.4

Descripción general

A medida que el proyecto Bazel sigue evolucionando para adaptarse a tus necesidades, queremos compartan nuestra actualización del 2024.

Esta hoja de ruta describe las iniciativas y predicciones actuales para el futuro de Desarrollo de Bazel, que te da visibilidad de las prioridades actuales y las actualizaciones proyectos.

Versión de Bazel 8.0

Planeamos ofrecer compatibilidad a largo plazo con Bazel 8.0. (LTS) para ti a fines de 2024. Se planea implementar las siguientes funciones.

Bzlmod: sistema de gestión de dependencias externo

Bzlmod resuelve automáticamente el comportamiento transitivo y las dependencias, lo que permite que los proyectos escalen, a la vez que se mantienen rápidos y eficientes en el uso de recursos.

Con Bazel 8, inhabilitaremos la compatibilidad con WORKSPACE de forma predeterminada (seguirá siendo es posible habilitarla con --enable_workspace); con Bazel 9 WORKSPACE se quitará la compatibilidad. A partir de Bazel 7.1, puedes configurar --noenable_workspace para habilitar el nuevo comportamiento.

Bazel 8.0 incluirá varias mejoras en Administración de dependencias externas de Bazel funciones, como las siguientes:

  • La nueva marca --enable_workspace se puede establecer en false para completar inhabilitar la funcionalidad de WORKSPACE.
  • Nueva API de visualización de directorios (consulta #21435, enviado en Bazel 7.1).
  • Esquema mejorado para generar nombres de repositorios canónicos capacidad de almacenamiento en caché de acciones entre actualizaciones de versiones de dependencias. (#21316, enviado en Bazel 7.1)
  • Una caché de repositorio compartido mejorada (consulta #12227).
  • Compatibilidad con proveedores y en modo sin conexión: permite a los usuarios ejecutar compilaciones con las dependencias previamente descargadas (consulta #19563).
  • Se reducen los conflictos de combinación en los archivos de bloqueo (#20396).
  • MÓDULO Segmentado.bazel (#17880).
  • Permitir la anulación del repositorio generado por la extensión del módulo (#19301).
  • Documentación mejorada (p.ej., #18030: #15821) y la migración. y herramientas de migración.

Mejoras para la ejecución remota

  • Se agregó compatibilidad con la ejecución asíncrona, lo que acelera la ejecución remota al aumentó el paralelismo con la marca --jobs.
  • Facilitar la depuración de errores de caché con un nuevo registro de ejecución compacto reduciendo su tamaño 100 veces y su sobrecarga de tiempo de ejecución de forma significativa (consulta #18643).
  • Implementa la recolección de elementos no utilizados para la caché del disco (consulta #5139).
  • Implementa el servicio de salida remota para permitir la descarga diferida de la compilación arbitraria de salida (consulta #20933).

Migración de reglas de Android, C++, Java, Python y Proto

Se completó la migración de los conjuntos de reglas de Android, C++, Java y Python a aplicaciones repositorios y su separación de las versiones de Bazel. Este esfuerzo permite Los usuarios y autores de reglas de Bazel para

  • Actualiza las reglas independientemente de Bazel.
  • Actualiza y personaliza las reglas según sea necesario.

La nueva ubicación de los conjuntos de reglas será bazelbuild/rules_android. rules_cc, rules_java, rules_python y google/protobuf. rules_proto es dejará de estar disponible.

Bazel 8 proporcionará una marca de migración temporal que usará que antes formaban parte del objeto binario de sus repositorios. Todo se espera que los usuarios de esos conjuntos de reglas dependan eventualmente de su repositorios y cargarlos de manera similar a otros conjuntos de reglas que nunca formaron parte de Bazel

Bazel 8 también mejorará las reglas de extensión y las APIs de subreglas existentes, y marcarlas como no experimentales.

Mejoras de Starlark

  • Las macros simbólicas son una nueva forma de escribir macros más fácil de usar Usuarios de BUILD, autores de macros y herramientas. En comparación con las macros heredadas, Bazel tiene estadísticas limitadas; las macros simbólicas ayudan a los usuarios a evitar errores comunes y aplicar prácticas recomendadas.
  • Los finalizadores de paquetes son una función propuesta para agregar compatibilidad de primera clase con lógica de validación de paquetes personalizada. Su objetivo es ayudarnos a dar de baja native.existing_rules()

Configuración

  • La asignación de la ruta de salida se sigue estabilizando: la promesa de mejor caché remota y velocidad de compilación para los diseñadores de reglas que usan transiciones.
  • Establece automáticamente marcas de compilación adecuadas para un --platforms determinado.
  • Define combinaciones de marcas compatibles con el proyecto y objetivos de compilación automática con marcas predeterminadas sin tener que configurar bazelrcs.
  • No rehacer el análisis de compilación cada vez que cambien las marcas de compilación.

Proyecto Skyfocus: Minimiza las estructuras de datos retenidos

Bazel conserva mucho estado en la RAM para compilaciones incrementales rápidas. Sin embargo, los desarrolladores suelen cambiar un pequeño subconjunto de los archivos de origen (p.ej., casi nunca una de las dependencias externas). Con Skyfocus, Bazel proporcionará un forma experimental de descartar el estado incremental innecesario y reducir la memoria de Bazel sin dejar de ofrecer la misma experiencia de compilación incremental rápida.

El alcance inicial tiene como objetivo mejorar únicamente la métrica del montón retenido. Máximo de montón la reducción es una posibilidad, pero no se incluye en el alcance inicial.

Varios

  • Instalación para celulares v3, un enfoque más simple y mantenido para aumentar implementar aplicaciones para Android.
  • Recolección de elementos no utilizados para cachés de repositorio y install_base de Bazel.
  • Se redujo la sobrecarga de la zona de pruebas.

Compatibilidad con IntelliJ IDEA con Bazel-JetBrains*

Actualizaciones incrementales del complemento de IntelliJ para admitir el complemento más reciente de JetBrains. lanzamiento.

El resumen de esta hoja de ruta se orienta a los objetivos y no debe tomarse como garantía. Las prioridades están sujetas a cambios según el desarrollador y el cliente comentarios o nuevas oportunidades de mercado.

Para recibir notificaciones sobre funciones nuevas, incluidas las actualizaciones de esta hoja de ruta, únete al Comunidad de Grupos de Google.

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