Glibc 2.36 rendszerkönyvtár kiadás

Hat hónapos fejlesztés után megjelent a GNU C Library (glibc) 2.36 rendszerkönyvtár, amely teljes mértékben megfelel az ISO C11 és POSIX.1-2017 szabványok követelményeinek. Az új kiadás 59 fejlesztő javítását tartalmazza.

A Glibc 2.36-ben végrehajtott fejlesztések közül néhány:

  • Hozzáadott támogatás az új DT_RELR (relatív áthelyezés) címáthelyezési formátumhoz, amely lehetővé teszi a relatív áthelyezések méretének csökkentését a megosztott objektumokban és a PIE (pozíciófüggetlen végrehajtható fájlok) módban csatolt végrehajtható fájlokban. A DT_RELR mező ELF-fájlokban való használatához szükség van a "-z pack-relative-relocs" opció támogatására a linkerben, amelyet a binutils 2.38 kiadásában vezettek be.
  • A Linux platformon a pidfd_open, pidfd_getfd és pidfd_send_signal függvények valósulnak meg, hozzáférést biztosítva a pidfd funkciókhoz, amelyek segítik a PID újrafelhasználási helyzetek kezelését, hogy pontosabban azonosítsák a felügyelt fájlokhoz hozzáférő folyamatokat (a pidfd egy adott folyamathoz kapcsolódik, és nem változik, míg a PID képes csatolni kell egy másik folyamathoz, miután az adott PID-hez tartozó jelenlegi folyamat leáll).
  • A Linux platformon a process_madvise() függvény hozzáadásra került, hogy az egyik folyamat kiadja a madvise() rendszerhívást egy másik folyamat nevében, és a pidfd segítségével azonosítsa a célfolyamatot. A madvise() segítségével tájékoztathatja a kernelt a memóriával való munkavégzés jellemzőiről a folyamatmemória-kezelés optimalizálása érdekében; például a továbbított információ alapján a kernel kezdeményezheti további szabad memória felszabadítását. A madvise() egy másik folyamat általi meghívására olyan helyzetben lehet szükség, amikor az optimalizáláshoz szükséges információkat az aktuális folyamat nem ismeri, de azt egy külön háttérvezérlő folyamat koordinálja, amely önállóan kezdeményezheti a nem használt memória eltávolítását a folyamatokból.
  • A Linux platformhoz hozzáadásra került a process_mrelease() függvény, amely lehetővé teszi a memóriafelszabadítás felgyorsítását a végrehajtását befejező folyamatok számára. Normál körülmények között az erőforrás-felszabadítás és a folyamatleállítás nem azonnali, és különböző okok miatt késhet, ami megzavarhatja a felhasználói memória korai válaszrendszereit, például az oomd-t (a systemd által biztosított). A process_mrelease meghívásával az ilyen rendszerek kiszámíthatóbban kiválthatják a memória visszanyerését a kényszerített folyamatokból.
  • A „no-aaaa” opció támogatása hozzáadásra került a DNS-feloldó beépített megvalósításához, amely lehetővé teszi az AAAA-rekordokra vonatkozó DNS-kérések küldésének letiltását (IPv6-cím meghatározása gazdagépnév alapján), beleértve az NSS futtatását is. függvények, mint például a getaddrinfo(), a probléma diagnosztizálásának egyszerűsítésére. Ez a beállítás nem befolyásolja az /etc/hosts fájlban meghatározott IPv6-cím-összerendelések feldolgozását és a getaddrinfo() AI_PASSIVE jelzővel történő meghívását.
  • A Linux platformon az fsopen, az fsmount, a move_mount, az fsconfig, az fspick, az open_tree és a mount_setattr funkciókat adták hozzá, amelyek hozzáférést biztosítanak egy új kernel API-hoz a mount névtereken alapuló fájlrendszer-beillesztés kezeléséhez. A javasolt funkciók lehetővé teszik a beillesztés különböző szakaszainak külön feldolgozását (a szuperblokk feldolgozása, a fájlrendszerről információ beszerzése, felcsatolás, csatolás a csatolási ponthoz), amelyeket korábban a közös mount() függvény segítségével hajtottak végre. A különálló funkciók lehetővé teszik bonyolultabb beillesztési forgatókönyvek végrehajtását, és olyan műveletek külön-külön történő végrehajtását, mint a szuperblokk újrakonfigurálása, az opciók engedélyezése, a csatlakoztatási pont módosítása és egy másik névtérbe való áthelyezés. Ezenkívül a külön feldolgozás lehetővé teszi a hibakódok kimenetének okainak pontos meghatározását, és több forrás beállítását többrétegű fájlrendszerekhez, például overlayfekhez.
  • A localedef támogatja az ASCII helyett UTF-8 kódolásban biztosított területi definíciós fájlok feldolgozását.
  • Hozzáadott funkciók a többbájtos mbrtoc8 és c8rtomb kódolások ISO C2X N2653 és C++20 P0482R6 specifikációkká konvertálásához.
  • Hozzáadott támogatás az ISO C8X N2 szabványtervezetben meghatározott char2653_t típushoz.
  • Hozzáadott arc4random, arc4random_buf és arc4random_uniform függvények, amelyek burkolókat biztosítanak a getrandom rendszerhíváson és a /dev/urandom felületen, amelyek kiváló minőségű álvéletlen számokat adnak vissza.
  • Linux platformon futtatva támogatja a Loongson 3 5000 processzorokban használt LoongArch utasításkészlet architektúrát, és megvalósítja az új RISC ISA-t, hasonlóan a MIPS-hez és a RISC-V-hez. Jelenlegi formájában csak a LoongArch (LA64) 64 bites verziója érhető el. A működéshez legalább a binutils 2.38, GCC 12 és Linux kernel 5.19 verzióira van szükség.
  • Az előzetes összekapcsolási mechanizmus, valamint a hozzá tartozó LD_TRACE_PRELINKING és LD_USE_LOAD_BIAS környezeti változók és linker-képességek elavultak, és egy jövőbeli kiadásban eltávolítják.
  • A Linux kernel verziójának ellenőrzésére és az LD_ASSUME_KERNEL környezeti változó kezelésére szolgáló kód eltávolítva. A Glibc létrehozásakor támogatott kernel minimális verzióját az NT_GNU_ABI_TAG ELF mező határozza meg.
  • Az LD_LIBRARY_VERSION környezeti változó a Linux platformon megszűnt.

Forrás: opennet.ru

Hozzászólás