Nach 10 Monaten der Entwicklung wurde die Standardausgabe der C-Bibliothek Musl 1.2.5 veröffentlicht, die eine Implementierung von libc bereitstellt, die fĂŒr den Einsatz sowohl auf stationĂ€ren PCs und Servern als auch auf mobilen Systemen geeignet ist. Sie kombiniert umfassende UnterstĂŒtzung fĂŒr Standards (wie in Glibc) mit kleiner GröĂe, geringem Ressourcenverbrauch und hoher Leistung (wie in uClibc, dietlibc und Android Bionic). Die UnterstĂŒtzung aller erforderlichen Schnittstellen von C99 und POSIX 2008 sowie teilweise C11 und einem Satz von Erweiterungen fĂŒr Multithreading (POSIX-Threads), Speicherverwaltung und Locale-Verwaltung ist vorhanden. Der Musl-Code wird unter der MIT-Lizenz geliefert.
HauptÀnderungen:
- Die Funktion statx() wurde hinzugefĂŒgt, die sich von fstatat64 durch ein zusĂ€tzliches Flag-Argument unterscheidet. Falls der Kernel den Systemaufruf statx, der erweiterte Informationen ĂŒber eine Datei zurĂŒckgibt, einschlieĂlich der Erstellungszeit der Datei und spezifische Flags fĂŒr Dateisysteme, nicht unterstĂŒtzt, wird auf die Verwendung des Systemaufrufs fstatat zurĂŒckgegriffen.
- Die Funktionen preadv2() und pwritev2() wurden hinzugefĂŒgt, die eine Wrapperumgebung ĂŒber den gleichnamigen Systemaufrufen des Linux-Kernels bereitstellen. Im Gegensatz zu preadv() und pwritev() unterscheiden sich die neuen Funktionen durch ein zusĂ€tzliches Argument, um dem Kernel zusĂ€tzliche Flags zu ĂŒbermitteln, wie RWF_SYNC (Schreiben von Daten und Metadaten aus dem Cache auf das Medium nach Abschluss der Operation) und RWF_DSYNC (Zwangs-Flush auf das Medium nur fĂŒr Daten).
- UnterstĂŒtzung fĂŒr die Architekturen Loongarch64 und Riscv32 wurde hinzugefĂŒgt.
- Die Implementierung der Funktion clone() wurde auf einen benutzbaren Zustand gebracht.
- In der Funktion statvfs() wird sichergestellt, dass das Ergebnis mit dem Typ f_type zurĂŒckgegeben wird.
- FĂŒr Riscv64-Systeme wurde UnterstĂŒtzung fĂŒr den Mechanismus TLSDESC (Thread-Local Storage Descriptor) hinzugefĂŒgt.
- Im DNS-Resolver wurde die Verarbeitung von Antworten mit langen CNAME-Sequenzen implementiert. Ein Problem wurde gelöst, bei dem einige groĂe Antworten, die ĂŒber TCP ĂŒbertragen wurden, verworfen wurden.
- In den mntent-Schnittstellen wurde UnterstĂŒtzung fĂŒr das Escapen von Leerzeichen in Dateipfaden und -optionen hinzugefĂŒgt.
- In snprintf und swprintf wurde sichergestellt, dass die Situation beim Umgang mit Zahlen, die gröĂer als INT_MAX sind, korrekt behandelt wird. Die Ăbereinstimmung mit dem Standard fĂŒr die printf-Familie wurde verbessert.
Quelle: opennet.ru
