Wydanie standardowej biblioteki C Musl 1.2.6

Po dwóch latach prac nad rozwojem zaprezentowano wydanie standardowej biblioteki C Musl 1.2.6, która dostarcza implementację libc, odpowiednią zarówno dla stacjonarnych komputerów i serwerów, jak i dla systemów mobilnych, łącząc pełne wsparcie dla standardów (jak w Glibc) z małym rozmiarem, niskim zużyciem zasobów i wysoką wydajnością (jak w uClibc, dietlibc i Android Bionic). Zapewnia pełne wsparcie dla wszystkich obowiązkowych interfejsów C99 i POSIX 2008, a także częściowe dla C11 oraz zestaw rozszerzeń do programowania wielowątkowego (wątki POSIX), zarządzania pamięcią i pracy z lokalizacjami. Kod Musl jest dostępny na zasadach licencji MIT.

Główne zmiany:

  • Zaimplementowano funkcję posix_getdents, która pojawiła się w standardzie POSIX-2024. Funkcja ta odczytuje zawartość katalogu związanego z otwartym deskryptorem pliku i umieszcza informacje o podkatalogach i plikach w strukturach posix_dent z możliwością ograniczenia maksymalnego rozmiaru.
  • Dodano specyficzną dla systemu Linux funkcję renameat2, która zapewnia środki do atomowej wymiany nazw dwóch plików (pierwszy plik jest zmieniany na drugi, a drugi na pierwszy). Funkcja renameat2 różni się od renameat obecnością dodatkowego pola flagi — bez ustawienia flagi, zachowanie renameat2 jest całkowicie analogiczne do renameat. Przy wskazaniu flagi RENAME_NOREPLACE operacja zmiany nazwy nie prowadzi do zastąpienia istniejącego już pliku.
  • Dla systemów Loongarch64 dodano wsparcie dla mechanizmu TLSDESC (Thread-Local Storage Descriptor) umożliwiającego efektywny dostęp do zmiennych w lokalnym przechowywaniu wątku.
  • Dzięki vDSO zoptymalizowano działanie funkcji clock_gettime na architekturach riscv32, riscv64, powerpc, powerpc64 i s390x. vDSO (virtual dynamic shared object) pozwala na przeniesienie obsługi wywołania systemowego z jądra do przestrzeni użytkownika, co umożliwia uniknięcie przełączeń kontekstu.
  • Aby określić możliwości CPU w czasie wykonywania kompilatorów, symbol __getauxval został przeniesiony do publicznego ABI.
  • Usunięto lukę (CVE-2025-26519), która prowadziła do przepełnienia bufora podczas konwersji specjalnie przygotowanego tekstu z kodowania EUC-KR do UTF-8 za pomocą funkcji iconv(). Luka została wykryta ponad rok temu i przed wydaniem została usunięta przez zastosowanie łatki.
  • Rozwiązano problemy z kompatybilnością w funkcjach initgroups, getusershell, exit, atexit, strerror, isatty, hasmntopt oraz vdso, a także w plikach nagłówkowych sched.h i shadow.h.
  • Zoptymalizowano zgodność ze specyfikacjami w funkcjach pwrite (rozwiązano problem z O_APPEND), mbnrtowcs (uwzględniono wymagania POSIX-2024), strptim (uwzględniono wymagania POSIX-2024e), inet_ntop (zapewniono zgodność z RFC 5952).

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster