Después de dos años de desarrollo, se presenta el lanzamiento de la biblioteca estándar C Musl 1.2.6, que proporciona una implementación de libc adecuada tanto para su uso en PC de escritorio y servidores como en sistemas móviles, combinando un soporte completo de estándares (como en Glibc) con un tamaño reducido, bajo consumo de recursos y alta eficiencia (como en uClibc, dietlibc y Android Bionic). Hay soporte para todas las interfaces obligatorias de C99 y POSIX 2008, así como soporte parcial para C11 y un conjunto de extensiones para programación multihilo (hilos POSIX), gestión de memoria y trabajo con locales. El código de Musl se distribuye bajo la licencia MIT.
Principales cambios:
- Se ha implementado la función posix_getdents, que apareció en el estándar POSIX-2024. Esta función lee el contenido del directorio asociado con un descriptor de archivo abierto y coloca la información sobre subdirectorios y archivos en estructuras posix_dent con la posibilidad de restringir el tamaño máximo.
- Se ha añadido la función renameat2 específica de Linux, que proporciona herramientas para el reemplazo atómico de los nombres de dos archivos (el primer archivo se renombra al segundo y el segundo al primero). A diferencia de renameat, la nueva función tiene un campo de bandera adicional: sin establecer la bandera, el comportamiento de renameat2 es completamente análogo al de renameat, y al especificar la bandera RENAME_NOREPLACE, la operación de renombrado no reemplaza un archivo ya existente.
- Para sistemas Loongarch64 se ha añadido soporte para el mecanismo TLSDESC (Descriptor de Almacenamiento Local de Hilos) para un acceso eficiente a variables en el almacenamiento local del hilo.
- Con vDSO se ha optimizado la función clock_gettime en arquitecturas riscv32, riscv64, powerpc, powerpc64 y s390x. vDSO (objeto compartido dinámico virtual) permite trasladar el manejador de la llamada al sistema del núcleo al espacio de usuario, evitando cambios de contexto.
- Para determinar las capacidades del CPU en tiempo de ejecución de los compiladores, el símbolo __getauxval ha sido trasladado a la ABI pública.
- Se ha corregido una vulnerabilidad (CVE-2025-26519) que provoca un desbordamiento de búfer al convertir texto especialmente formado de la codificación EUC-KR a UTF-8 mediante la función iconv(). La vulnerabilidad fue detectada hace más de un año y se abordó mediante la instalación de un parche antes del lanzamiento.
- Se han resuelto problemas de compatibilidad en las funciones initgroups, getusershell, exit, atexit, strerror, isatty, hasmntopt y vdso, así como en los archivos de encabezado sched.h y shadow.h.
- Mejorado el cumplimiento de las especificaciones en las funciones pwrite (resuelto el problema con O_APPEND), mbnrtowcs (considerados los requisitos de POSIX-2024), strptim (tenidos en cuenta los requisitos de POSIX-2024e), inet_ntop (asegurado el cumplimiento de RFC 5952).
Fuente: opennet.ru
