Po 10 miesiącach prac nad rozwojem zaprezentowano wydanie standardowej biblioteki C Musl 1.2.5, która oferuje implementację libc, odpowiednią zarówno dla stacjonarnych komputerów PC i serwerów, jak i dla systemów mobilnych, łącząc pełne wsparcie dla standardów (jak w Glibc) z niewielkimi rozmiarami, niskim zużyciem zasobów i wysoką wydajnością (jak w uClibc, dietlibc i Android Bionic). Wsparcie obejmuje wszystkie obowiązkowe interfejsy C99 i POSIX 2008 oraz częściowo C11 i zestaw rozszerzeń do programowania wielowątkowego (POSIX threads), zarządzania pamięcią i pracy z lokalami. Kod Musl dostępny jest na licencji MIT.
Główne zmiany:
- Dodano funkcję statx(), która różni się od fstatat64 dodatkowymi argumentami flagowymi. W przypadku, gdy jądro nie obsługuje wywołania systemowego statx, zwracającego rozszerzone informacje o pliku, w tym czas utworzenia pliku i specyficzne dla systemu plików flagi, następuje powrót do korzystania z wywołania systemowego fstatat.
- Dodano funkcje preadv2() i pwritev2(), które zapewniają obudowy nad systemowymi wywołaniami jądra Linux o tej samej nazwie. W przeciwieństwie do preadv() i pwritev() nowe funkcje różnią się obecnością dodatkowego argumentu do przekazywania jądrowi dodatkowych flag, takich jak RWF_SYNC (zrzucenie danych i metadanych z pamięci podręcznej na nośnik po wykonaniu operacji) oraz RWF_DSYNC (wymuszenie zrzutu na nośnik tylko danych).
- Dodano wsparcie dla architektur Loongarch64 i Riscv32.
- Implementacja funkcji clone() została doprowadzona do stanu używalności.
- W funkcji statvfs() zapewniono zwracanie wyniku z typem f_type.
- Dodano wsparcie dla mechanizmu TLSDESC (Thread-Local Storage Descriptor) dla systemów Riscv64.
- W resolverze DNS wprowadzono obsługę odpowiedzi z długimi sekwencjami CNAME. Rozwiązano problem, przez który odrzucano niektóre duże odpowiedzi przesyłane przez TCP.
- W interfejsach mntent dodano wsparcie dla eskalacji spacji w ścieżkach plików i opcjach.
- W funkcjach snprintf i swprintf zapewniono poprawną obsługę sytuacji, gdy przetwarzane są liczby większe niż INT_MAX. Udoskonalono zgodność standardu funkcji rodziny printf.
Źródło: opennet.ru
