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 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.
El resumen de esta hoja de ruta se orienta a objetivos y no debe tomarse como garantía. Las prioridades están sujetas a cambios en respuesta a los comentarios de los desarrolladores y los clientes, o a nuevas oportunidades de mercado.
Para recibir notificaciones sobre nuevas funciones, incluidas las actualizaciones de esta hoja de ruta, únete a la comunidad de Grupos de Google.
P4: Versión de Bazel 6.0
El Q4 presenta Bazel 6.0, la nueva versión de compatibilidad a largo plazo (LTS). Bazel 6.0 incluirá nuevas funciones potentes y solicitadas por la comunidad para administrar dependencias, desarrollar con Android y mucho más.
Bzlmod: sistema de gestión de dependencias externo
Bzlmod resuelve automáticamente las dependencias transitivas, lo que permite que los proyectos escalen sin ser rápidos y con un uso eficiente de los recursos. Bzlmod, que se introdujo de manera experimental en Bazel 5.0, estará disponible de forma 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 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 buscan adoptar Bzlmod.
- El repositorio central de Bazel aloja las reglas principales de
BUILD
de Bazel (rules\_jvm\_external
,rules\_go
,rules\_python
,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 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 combinadas de funciones de la comunidad. Anticipando una mayor adopción y una base de código creciente, el equipo de Bazel priorizará la integración de 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 dexer predeterminado.
- Se combina con las contribuciones de funciones principales de la comunidad agregadas en la versión 5.X, incluida la compatibilidad con lo siguiente:
- Trabajadores persistentes con D8
- Expansión de sintaxis con D8
- Cómo combinar "uses-permissions" Etiquetas 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 las reglas quieren apoyo para seguir desarrollando la cadena de herramientas. Bazel 6.0 permitirá que los autores escriban reglas usando una cadena de herramientas opcional de alto rendimiento cuando esté disponible con una implementación de resguardo para otras plataformas.
Compatibilidad con IntelliJ IDEA con Bazel-JetBrains*
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 abrir la capacidad para las solicitudes de funciones y el 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
- Promueve el desarrollo impulsado por la comunidad para funciones en tránsito, como la asistencia de Scala
Para obtener más información sobre este desarrollo, lee el anuncio del blog de Bazel-JetBrains.
Desarrollo futuro
De cara al futuro, el equipo de Bazel comenzó a desarrollar o prevé que se priorizarán las siguientes funciones en 2023 y en el futuro.
Cómo mejorar las reglas de compilación de Android de Bazel
Sigue invirtiendo en la experiencia de desarrollo de apps para Android, con un enfoque 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
- Prueba la cobertura de código
Herramientas de cumplimiento de licencias de OSS
Los desarrolladores solicitaron un verificador del cumplimiento de licencias sólido 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 licencias asociados con un componente de software determinado. Las funciones de destino incluyen las siguientes:
- La capacidad de auditar los paquetes que usa un destino determinado
- La capacidad de crear verificaciones de cumplimiento de licencias específicas de la organización.
Consulta la implementación de reglas_licencia en curso en GitHub.
Bzlmod: sistema de gestió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 el subsistema predeterminado de administración de dependencias del espacio de trabajo de Bazel. Las funciones orientadas incluyen:
- Compatibilidad con compilaciones herméticas
- El proveedor o el modo sin conexión fijan las reglas de referencias con control de versiones en una copia local
- Bazel Central Registry incluye la contribución regular de la comunidad y la adopción de reglas clave de Bazel y proyectos
- 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 multiplataforma o de DevOps identifiquen el origen de los objetos binarios de Bazel y protejan sus sistemas de objetos binarios maliciosos sin verificar.
API de Standardized Platforms
La nueva API de Platform estandarizará la configuración arquitectónica para compilaciones multilingües y multiplataforma. Con esta función, los desarrolladores pueden reducir los costosos errores de tiempo de desarrollo y la complejidad en sus compilaciones grandes.
Compila métricas de análisis
La telemetría de Bazel proporcionará métricas de tiempo de fase de análisis, lo que permitirá a los desarrolladores optimizar su propio rendimiento de compilación.
Ejecución remota con “Compilaciones sin los bytes”
Las compilaciones sin los bytes optimizarán el rendimiento, ya que solo permitirán que Bazel descargue los artefactos necesarios, lo que evitará que las compilaciones se atasquen en el ancho de banda de la red. Entre las funciones que se agregan para las compilaciones remotas, se incluyen las siguientes:
- Usa la descarga asíncrona para permitir que las acciones locales y remotas se inicien en cuanto se descarguen sus resultados dependientes.
- Cómo agregar compatibilidad con vínculos simbólicos
- Recuperar resultados intermedios de acciones remotas una vez que se complete una compilación
*Derechos de autor © 2022 JetBrains s.r.o. IntelliJ y JetBrains son marcas registradas de JetBrains s.r.o.