Dopo due anni di sviluppo, è stata presentata la versione 1.2.6 della libreria C standard Musl, che offre un'implementazione di libc adatta per l'uso su PC e server fissi, nonché su sistemi mobili, combinando un supporto completo per gli standard (come in Glibc) con dimensioni ridotte, basso consumo di risorse e alta prestazione (simile a uClibc, dietlibc e Android Bionic). È supportato tutto l'interfaccia obbligatoria C99 e POSIX 2008, oltre a un supporto parziale per C11 e un insieme di estensioni per la programmazione multithreading (POSIX threads), gestione della memoria e lavorazione con le località. Il codice Musl è fornito sotto la licenza libera MIT.
Variazioni principali:
- È stata implementata la funzione posix_getdents, introdotta nello standard POSIX-2024. La 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 la funzione renameat2, specifica per Linux, che fornisce i mezzi per la sostituzione atomica dei nomi di due file (il primo file viene rinominato nel secondo e viceversa). La nuova funzione differisce da renameat per la presenza di un campo di flag aggiuntivo: senza l'impostazione del flag, il comportamento di renameat2 è completamente analogo a renameat, mentre specificando il flag RENAME_NOREPLACE, l'operazione di rinominazione non porta alla sostituzione di un file già esistente.
- Per i sistemi Loongarch64 è stato aggiunto il supporto per il meccanismo TLSDESC (Thread-Local Storage Descriptor) per un accesso efficace alle variabili nell'archiviazione locale del 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 spostare il gestore della chiamata di sistema dallo kernel allo spazio utente, evitando i passaggi di contesto.
- Per determinare le capacità della CPU durante l'esecuzione dei compilatori, il simbolo __getauxval è stato trasferito nell'ABI pubblico.
- È stata corretta una vulnerabilità (CVE-2025-26519) che portava a un overflow del buffer durante la conversione di un testo appositamente formattato dalla codifica EUC-KR a UTF-8 tramite la funzione iconv(). La vulnerabilità è stata identificata più di un anno fa e prima del rilascio è stata corretta installando una patch.
- Sono stati risolti i problemi di compatibilità nelle funzioni initgroups, getusershell, exit, atexit, strerror, isatty, hasmntopt e vdso, insieme ai file di intestazione sched.h e shadow.h.
- Migliorata la conformità alle specifiche nelle funzioni pwrite (risolto il problema con O_APPEND), mbnrtowcs (considerate le richieste di POSIX-2024), strptim (considerate le richieste di POSIX-2024e), inet_ntop (garantita la conformità a RFC 5952).
Fonte: opennet.ru
