La notable comunidad de código abierto del proyecto Git anunció la liberación de la versión 2.49, incorporando nuevas características y correcciones de bugs gracias a la colaboración de más de 89 contribuidores, de los cuales 24 son nuevos. Esta actualización se celebra con un análisis detallado de las características más interesantes y cambios significativos introducidos desde la última versión.
Una de las mejoras destacadas es la implementación de un algoritmo de empaquetado más eficiente, conocido como «name-hash v2». Esta función optimiza el almacenamiento al agrupar objetos en archivos de paquete (packfiles), mejorando la búsqueda de objetos al reducir las llamadas del sistema necesarias y optimizando el uso de la memoria caché del bloque del sistema operativo. Esto resulta en una compresión más efectiva al considerar estructuras de directorio completas para generar el hash, en lugar de enfocarse solo en los últimos 16 caracteres de las rutas de archivo. Ejemplos prácticos muestran reducciones asombrosas en el tiempo y tamaño de empaquetado, con el caso del repositorio microsoft/fluentui, donde el tiempo de reempaque bajó de aproximadamente 96 segundos a solo 34, y el tamaño del paquete resultante se redujo de 439 MiB a solo 160 MiB.
Otra novedad es la introducción de «git backfill», una herramienta que mejora el desempeño al trabajar en clones parciales. En el pasado, solicitar el historial completo de un archivo podía llevar a descargas ineficientes de objetos uno por uno. Ahora, con esta herramienta, los objetos faltantes se solicitan en lotes, empleando una nueva API que optimiza la compresión delta, con el fin de minimizar el almacenamiento innecesario y mejorar sustancialmente la velocidad de estos procesos.
También se ha agregado soporte para zlib-ng, un fork de la popular biblioteca de compresión zlib, que propone un rendimiento mejorado gracias a optimizaciones específicas para conjuntos de instrucciones SIMD, entre otras mejoras. Los experimentos iniciales muestran una aceleración del 25% al imprimir el contenido de todos los objetos en el repositorio de Git.
Un hito significativo en esta actualización es la integración de código Rust en Git, con la inclusión de dos nuevos paquetes o crates: libgit-sys y libgit. Estos actuaron como envoltorios para una parte del código biblioteca de Git, iniciando un emocionante paso hacia la «libificación» del proyecto, orientado a convertirlo en una biblioteca más modular al estilo de los estándares actuales.
Entre otros cambios, Git ha mejorado su compatibilidad de autocorrección, ajustando la interpretación de los valores de configuración para alinearlos con otras configuraciones booleanas, y ha introducido opciones como «–revision» en «git clone», permitiendo clonar directamente un historial específico que no esté ligado a una rama o etiqueta.
El proyecto también celebra los logros de sus internos de Outreachy, quienes finalizaron con éxito sus proyectos, contribuyendo al avance del software y a su comunidad.
Este es solo un extracto de los muchos cambios introducidos en Git 2.49. Para más detalles, se invita a consultar las notas de la versión o la documentación disponible en el repositorio de Git. Taylor Blau, ingeniero de software en GitHub, destaca y agradece a toda la comunidad por su continua contribución al avance de esta herramienta esencial para desarrolladores de todo el mundo.
vÃa: Github Open Source