Na twee jaar ontwikkeling is de Musl-standaard C-bibliotheek uitgebracht. Deze biedt een libc-implementatie die geschikt is voor desktop-pc's, servers en mobiele systemen. Musl combineert volledige ondersteuning van standaarden (zoals Glibc) met de compacte omvang, het lage resourceverbruik en de hoge prestaties van uClibc, dietlibc en Android Bionic. De bibliotheek ondersteunt alle vereiste C99- en POSIX 2008-interfaces, evenals gedeeltelijke C11-ondersteuning en een reeks extensies voor multithreaded programmering (POSIX-threads), geheugenbeheer en locale-ondersteuning. Musl is gelicentieerd onder de MIT-licentie.
Grote veranderingen:
- De functie posix_getdents, geïntroduceerd in de POSIX-2024-standaard, is geïmplementeerd. Deze functie leest de inhoud van de directory die is gekoppeld aan een geopende bestandsdescriptor en plaatst informatie over subdirectories en bestanden in posix_dent-structuren, waarbij de maximale grootte kan worden beperkt.
- Er is een Linux-specifieke functie toegevoegd, renameat2. Deze functie biedt de mogelijkheid om de namen van twee bestanden atomisch te vervangen (het eerste bestand wordt hernoemd naar het tweede en het tweede bestand naar het eerste). De nieuwe functie verschilt van renameat door de toevoeging van een extra vlagveld: zonder deze vlag gedraagt renameat2 zich precies hetzelfde als renameat, en het specificeren van de vlag RENAME_NOREPLACE voorkomt dat de hernoemingsbewerking het bestaande bestand vervangt.
- Voor Loongarch64-systemen is ondersteuning toegevoegd voor het TLSDESC-mechanisme (Thread-Local Storage Descriptor) voor efficiënte toegang tot variabelen in thread-local storage.
- Met behulp van vDSO is de functie clock_gettime geoptimaliseerd voor de RISC-V32, RISC-V64, PowerPC, PowerPC64 en S390X architecturen. vDSO (virtual dynamic shared object) maakt het mogelijk om de systeemoproephandler van de kernel naar de gebruikersruimte te verplaatsen, waardoor contextwisselingen worden vermeden.
- Om de mogelijkheden van de CPU in runtime-compilers te detecteren, is het symbool __getauxval vertaald naar de openbare ABI.
- Een beveiligingslek (CVE-2025-26519) dat leidde tot een bufferoverloop bij het converteren van speciaal geconstrueerde tekst van EUC-KR-codering naar UTF-8 met behulp van de iconv()-functie, is verholpen. Het beveiligingslek werd meer dan een jaar geleden ontdekt en is vóór de release verholpen.
- Compatibiliteitsproblemen in de functies initgroups, getusershell, exit, atexit, strerror, isatty, hasmntopt en vdso, evenals in de headerbestanden sched.h en shadow.h, zijn opgelost.
- Verbeterde naleving van de specificaties in pwrite (probleem met O_APPEND opgelost), mbnrtowcs (naleving van POSIX-2024 in acht genomen), strptim (naleving van POSIX-2024e in acht genomen) en inet_ntop (naleving van RFC 5952 gerealiseerd).
Bron: opennet.ru
