Después de dos años de desarrollo, se ha presentado el lanzamiento de la biblioteca estándar C Musl 1.2.6, que proporciona una implementación de libc, que es adecuada para su uso tanto en PC de escritorio como en servidores y en sistemas móviles, combinando soporte completo para estándares (como en Glibc) con un tamaño pequeño, bajo consumo de recursos y alto rendimiento (como en uClibc, dietlibc y Android Bionic). Admite todas las interfaces C99 y POSIX 2008 necesarias, así como soporte parcial para C11 y un conjunto de extensiones para programación multihilo (hilos POSIX), gestión de memoria y soporte para configuración regional. El código de Musl se publica bajo la licencia MIT gratuita.
Cambios importantes:
- Se ha implementado la función posix_getdents, introducida en el estándar POSIX-2024. Esta función lee el contenido del directorio asociado a un descriptor de archivo abierto y coloca información sobre subdirectorios y archivos en estructuras posix_dent, con la posibilidad de limitar el tamaño máximo.
- Añadido específicamente para Linux La función renameat2 permite reemplazar atómicamente los nombres de dos archivos (el primero se renombra al segundo y el segundo al primero). Esta nueva función se diferencia de renameat por la adición de un campo de indicador: sin este indicador, renameat2 se comporta exactamente igual que renameat, y cuando se especifica el indicador RENAME_NOREPLACE, la operación de renombrado no reemplaza el archivo existente.
- Para los sistemas Loongarch64, se ha añadido compatibilidad con el mecanismo TLSDESC (Thread-Local Storage Descriptor) para un acceso eficiente a las variables en el almacenamiento local de subprocesos.
- Mediante vDSO, la función clock_gettime se ha optimizado para las arquitecturas riscv32, riscv64, powerpc, powerpc64 y s390x. vDSO (objeto compartido dinámico virtual) permite trasladar el controlador de llamadas al sistema del núcleo al espacio de usuario, evitando cambios de contexto.
- Para detectar las capacidades de la CPU en los compiladores en tiempo de ejecución, el símbolo __getauxval se ha traducido a la ABI pública.
- Se ha corregido una vulnerabilidad (CVE-2025-26519) que provocaba un desbordamiento de búfer al convertir texto especialmente diseñado de la codificación EUC-KR a UTF-8 mediante la función iconv(). Esta vulnerabilidad se descubrió hace más de un año y se solucionó 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 cabecera sched.h y shadow.h.
- Se ha mejorado el cumplimiento de las especificaciones en pwrite (se ha resuelto el problema de O_APPEND), mbnrtowcs (se ha tenido en cuenta el cumplimiento de POSIX-2024), strptim (se ha tenido en cuenta el cumplimiento de POSIX-2024e) e inet_ntop (se ha logrado el cumplimiento de RFC 5952).
Fuente: opennet.ru
