jemalloc 5.4.0: refactorización masiva y nuevas funciones de memoria

Fuentes: jemalloc 5.4.0: massive refactoring and new memory features

La versión 5.4.0 de jemalloc, el gestor de memoria de alto rendimiento de Google, incorpora más de 160 commits centrados en la limpieza de deuda técnica, corrección de errores y mejoras de portabilidad. El principal objetivo es modernizar el código base, eliminando dependencias circulares y reorganizando la gestión de arenas y cachés para mejorar la mantenibilidad y el rendimiento.

Entre las nuevas funcionalidades destacan la capacidad de marcar páginas de memoria no recuperables, como las HugeTLB, mediante la nueva bandera EXTENT_ALLOC_FLAG_PINNED. Esto permite a los desarrolladores gestionar el uso de memoria de forma más precisa, reportando estadísticas detalladas a través de las interfaces mallctl. Además, se ha mejorado la alineación de las estadísticas de malloc en formatos legibles por humanos y JSON, y se ha reemplazado la opción experimental de asignación infalible por una opción de compilación que habilita optimizaciones a nivel de compilador para constructores de movimiento.

La versión introduce cambios incompatibles significativos. Se ha eliminado la política de relleno y limpieza de caché fijo, sustituyéndola por objetivos de relleno y retención por bin que se ajustan dinámicamente a la demanda observada entre eventos de recolección de basura. Esto elimina siete controles legados no experimentales, como lg_tcache_nslots_mul y tcache_nslots_small_min, que ahora son ignorados silenciosamente. También se han corregido errores críticos en la preservación de errno durante operaciones de liberación y en la gestión del ciclo de vida de las threads de estado (TSD), asegurando la corrección en C23 y evitando deadlocks potenciales durante la reinicialización de arenas.