Dopo due anni di sviluppo, è stato presentato il rilascio della standard C library Musl 1.2.6, che fornisce un'implementazione di libc adatta per l'uso sia su PC fissi e server, sia su sistemi mobili, combinando il pieno supporto agli standard (come in Glibc) con dimensioni ridotte, basso consumo di risorse e alte prestazioni (come in uClibc, dietlibc e Android Bionic). Supporta tutte le interfacce obbligatorie C99 e POSIX 2008, nonché parzialmente C11 e un insieme di estensioni per programmazione multi-thread (POSIX threads), gestione della memoria e lavoro con le località. Il codice Musl è rilasciato sotto la licenza libera MIT.
Principali modifiche:
- È stata implementata la funzione posix_getdents, introdotta nello standard POSIX-2024. Questa funzione legge il contenuto della directory associata a un descrittore di file aperto e inserisce informazioni su sottodirectory e file nelle strutture posix_dent, con la possibilità di limitare la dimensione massima.
- È stata aggiunta una funzione specifica per Linux chiamata renameat2, che fornisce strumenti per la sostituzione atomica dei nomi di due file (il primo file viene rinominato nel secondo e il secondo nel primo). Rispetto a renameat, la nuova funzione si differenzia per la presenza di un campo flag aggiuntivo: senza impostare il flag, il comportamento di renameat2 è completamente identico a quello di renameat, mentre, specificando il flag RENAME_NOREPLACE, l'operazione di rinominazione non porta alla sostituzione di un file già esistente.
- Per i sistemi Loongarch64 è stata aggiunta la supporto al meccanismo TLSDESC (Thread-Local Storage Descriptor) per un accesso efficiente alle variabili nella memoria locale dei thread.
- Grazie a vDSO, è stata ottimizzata l'operazione della funzione clock_gettime sulle architetture riscv32, riscv64, powerpc, powerpc64 e s390x. vDSO (virtual dynamic shared object) consente di trasferire il gestore delle chiamate di sistema dallo spazio del kernel allo spazio utente, evitando i cambi di contesto.
- Per determinare le capacità della CPU durante l'esecuzione dei compilatori, il simbolo __getauxval è stato traslato nel ABI pubblico.
- È stata rimossa una vulnerabilità (CVE-2025-26519) che provocava un overflow del buffer durante la conversione di testo appositamente formattato dalla codifica EUC-KR a UTF-8 tramite la funzione iconv(). La vulnerabilità è stata identificata oltre un anno fa ed è stata corretta con l'installazione di una patch prima del rilascio.
- Risolti problemi di compatibilità nelle funzioni initgroups, getusershell, exit, atexit, strerror, isatty, hasmntopt e vdso, così come nei file di intestazione sched.h e shadow.h.
- Migliorato il rispetto delle specifiche nelle funzioni pwrite (risolto il problema con O_APPEND), mbnrtowcs (considerati i requisiti POSIX-2024), strptim (considerati i requisiti POSIX-2024e), inet_ntop (assicurato il rispetto di RFC 5952).
Fonte: opennet.ru
