Glibc 2.36 pojawia się z nowymi funkcjami dla Linuksa, ulepszeniami i nie tylko

Po sześciu miesiącach prac rozwojowych ogłoszono wydanie nowej wersji glibc 2.36, która w pełni spełnia wymagania standardów ISO C11 i POSIX.1-2017 i w której nowa wersja zawiera poprawki od 59 programistów.

Dla tych, którzy nie są zaznajomieni z Glibc, powinni wiedzieć, co to jest biblioteka GNU C, powszechnie znana jako glibc to standardowa biblioteka uruchomieniowa GNU C. W systemach, w których jest używany, ta biblioteka C, która udostępnia i definiuje wywołania systemowe i inne podstawowe funkcje, jest używany przez prawie wszystkie programy. 

Główne nowe funkcje Glibc 2.36

W tej nowej wersji, która jest prezentowana, podkreślono, że dodano obsługę nowego formatu względnego adresu relokacji DT_RELR, który pozwala zmniejszyć rozmiar względnych relokacji w obiektach współdzielonych i połączonych plikach wykonywalnych w trybie PIE (Position Independent Executables). Użycie pola DT_RELR w plikach ELF wymaga obsługi opcji "-z pack-relative-relocs" w konsolidatorze, wprowadzonej w binutils 2.38.

Kolejną zmianą, która wyróżnia się w nowej wersji, jest to dla Linuksa funkcje pidfd_open, pidfd_getfd i pidfd_send_signal zostały wdrożone w celu zapewnienia dostępu do funkcjonalności pidfd co pomaga radzić sobie z sytuacjami ponownego użycia PID, aby dokładniej zidentyfikować procesy uzyskujące dostęp do monitorowanych plików (pidfd jest powiązany z konkretnym procesem i nie zmienia się, podczas gdy PID może zostać dołączony do innego procesu po zakończeniu procesu). PID).

Poza tym, również w Linuksie pojawia się process_madvise()Że umożliwia procesowi wykonanie wywołania systemowego madvise() w imieniu innego procesu, identyfikując proces docelowy za pomocą pidfd. Dzięki madvise() możesz poinformować jądro o charakterystyce pracy z pamięcią, aby zoptymalizować zarządzanie pamięcią procesu, na przykład na podstawie przekazanych informacji jądro może zacząć zwalniać dodatkową wolną pamięć.

Należy również zauważyć, że funkcja została dodana process_mrelease(), która pozwala przyspieszyć zwolnienie pamięci dla procesu, który kończy jego wykonanie. W normalnych warunkach zwolnienie zasobów i zakończenie procesu nie są natychmiastowe i mogą być opóźnione z różnych powodów, zakłócając działanie systemów wczesnego ostrzegania w przestrzeni użytkownika, takich jak oomd (dostarczane przez systemd). Wywołując process_mrelease, systemy te mogą w bardziej przewidywalny sposób rozpocząć pobieranie pamięci dla procesów, które zostały wymuszone.

Z drugiej strony zauważono, że został dodany obsługa opcji "no-aaaa" do zintegrowanej realizacji Rozdzielczość DNS, która pozwala wyłączyć wysyłanie żądań DNS dla rekordów AAAA (określanie adresu IPv6 na podstawie nazwy hosta), nawet podczas uruchamiania funkcji NSS, takich jak getaddrinfo(), aby uprościć rozwiązywanie problemów. Ta opcja nie wpływa na obsługę powiązań adresów IPv6 zdefiniowanych w /etc/hosts i wywołania metody getaddrinfo() z flagą AI_PASSIVE.

W systemie Linux dodano funkcje fsopen, fsmount, move_mount, fsconfig, fspick, open_tree i mount_setattr dla zapewnić dostęp do nowego API jądra, aby kontrolować sposób montowania systemów plików na podstawie przestrzeni nazw montowania. Proponowane funkcje umożliwiają oddzielne przetwarzanie różnych etapów montowania (przetwarzanie superbloku, uzyskiwanie informacji o systemie plików, montowanie, dołączanie do punktu montowania), które wcześniej były wykonywane przy użyciu wspólnej funkcji mount().

Zostały dodane funkcje arc4random, arc4random_buf i arc4random_uniform aby zapewnić powiązania w wywołaniu systemowym losowo i interfejs / Dev / urandom, zwracając wysokiej jakości liczby pseudolosowe.

Podczas pracy w systemie Linux zapewniona jest obsługa architektury. z zestawu instrukcji Długi łuk używany w procesorach Loongson 3 5000 i zaimplementowany nowy RISC ISA podobny do MIPS i RISC-V. W obecnej formie dostępna jest tylko kompatybilność z wariantem 64-bitowym od LoongArch (LA64). Do działania wymaga co najmniej binutils 2.38, GCC 12 i jądra Linux 5.19.

Z innych wyróżniających się zmian:

  • Mechanizm wstępnego łączenia, a także powiązane zmienne środowiskowe LD_TRACE_PRELINKING i LD_USE_LOAD_BIAS oraz funkcje konsolidatora są przestarzałe i zostaną usunięte w przyszłej wersji.
  • Usunięto kod sprawdzający wersję jądra Linux i obsługujący zmienną środowiskową LD_ASSUME_KERNEL. Minimalna wersja jądra obsługiwana podczas kompilacji Glibc jest określona przez pole ELF NT_GNU_ABI_TAG.
  • Zmienna środowiskowa LD_LIBRARY_VERSION została uznana za przestarzałą na platformie Linux.

Na koniec, jeśli chcesz dowiedzieć się więcej na ten temat, możesz zapoznać się ze szczegółami W poniższym linku.


Zostaw swój komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

*

*

  1. Odpowiedzialny za dane: Miguel Ángel Gatón
  2. Cel danych: kontrola spamu, zarządzanie komentarzami.
  3. Legitymacja: Twoja zgoda
  4. Przekazywanie danych: Dane nie będą przekazywane stronom trzecim, z wyjątkiem obowiązku prawnego.
  5. Przechowywanie danych: baza danych hostowana przez Occentus Networks (UE)
  6. Prawa: w dowolnym momencie możesz ograniczyć, odzyskać i usunąć swoje dane.