Hat hónapos fejlesztés után bejelentették a glibc 2.36 új verziójának megjelenését, amely teljes mértékben megfelel az ISO C11 és POSIX.1-2017 szabványok követelményeinek, és amelyben az új verzió 59 fejlesztő javítását tartalmazza.
Azok számára, akik nem ismerik a Glibc -et, tudnia kell, mi az GNU C könyvtár, közismert nevén glibc a standard GNU C futásidejű könyvtár. Azon rendszereken, ahol használják, ez a C könyvtár az biztosítja és meghatározza a rendszerhívásokat és egyéb alapvető funkciókat, szinte minden program használja.
A Glibc 2.36 főbb újdonságai
Ebben a bemutatott új verzióban kiemelik, hogy hozzáadott egy új relatív áthelyezési címformátum támogatását DT_RELR, amely lehetővé teszi a relatív áthelyezések méretének csökkentését megosztott objektumokban és csatolt végrehajtható fájlokban PIE (pozíciófüggetlen végrehajtható fájl) módban. A DT_RELR mező ELF-fájlokban való használatához a linkerben a "-z pack-relative-relocs" opció támogatása szükséges, amelyet a binutils 2.38-ban vezettek be.
Az új változatban kiemelkedő másik változás az Linux esetén a funkciókat pidfd_open, pidfd_getfd és pidfd_send_signal úgy lettek megvalósítva, hogy hozzáférést biztosítsanak a pidfd funkcióhoz amely segít a PID újrafelhasználási helyzetek kezelésében a figyelt fájlokhoz hozzáférő folyamatok pontosabb azonosítása érdekében (a pidfd egy adott folyamathoz kapcsolódik, és nem változik, míg a PID a folyamat befejezése után egy másik folyamathoz csatolható). PID).
Amellett, hogy, Linuxban is megjelenik a process_madvise()Hogy lehetővé teszi egy folyamat számára, hogy egy madvise() rendszerhívást hajtson végre egy másik folyamat nevében, a célfolyamat azonosítása a pidfd segítségével. A madvise() segítségével tájékoztathatja a kernelt a memóriával való munkavégzés sajátosságairól a folyamat memóriakezelésének optimalizálása érdekében, például az átadott információk alapján a kernel megkezdheti a további szabad memória felszabadítását.
Azt is meg kell jegyezni, hogy a funkció hozzáadásra került process_mrelease(), amely lehetővé teszi a memóriafelszabadítás felgyorsítását egy olyan folyamat számára, amely befejezi a végrehajtását. Normál körülmények között az erőforrások felszabadítása és a folyamat leállítása nem azonnali, és különböző okok miatt késleltethető, megzavarva a felhasználói terület korai figyelmeztető rendszereit, mint például az oomd (a systemd által biztosított). A process_mrelease meghívásával ezek a rendszerek kiszámíthatóbban tudják elindítani a kényszerleállított folyamatok memórialekérését.
Másrészt meg kell jegyezni, hogy hozzáadták a "no-aaaa" opció támogatása integrált megvalósításához DNS-feloldás, 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), még akkor is, ha olyan NSS-függvényeket futtat, mint a getaddrinfo(), a hibaelhárítás egyszerűsítése érdekében. Ez a beállítás nem befolyásolja az /etc/hosts fájlban definiált IPv6-cím-összerendelések és a getaddrinfo() AI_PASSIVE jelzővel történő hívásainak kezelését.
Linux esetén hozzáadta a funkciókat fsopen, fsmount, move_mount, fsconfig, fspick, open_tree és mount_setattr mert hozzáférést biztosít egy új kernel API-hoz a fájlrendszerek csatlakoztatásának szabályozásához mount névterek alapján. A javasolt funkciók lehetővé teszik a különböző beillesztési lépések külön feldolgozását (a szuperblokk feldolgozása, a fájlrendszerről való információszerzés, 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.
Hozzá lettek adva a funkciókat arc4random, arc4random_buf és arc4random_uniform hogy kötéseket biztosítson a rendszerhíváshoz véletlenszerűen és az interfész / Dev / urandom, jó minőségű pszeudo-véletlen számokat ad vissza.
Ha Linuxon fut, az architektúra támogatása biztosított. az utasításkészletből LoongArch Loongson 3 5000 processzorokban használják, és a MIPS-hez és a RISC-V-hez hasonló új RISC ISA kerül bevezetésre. Jelenlegi formájában csak a kompatibilitás érhető el 64 bites változattal a LoongArch-tól (LA64). A futtatásához legalább binutils 2.38, GCC 12 és Linux kernel 5.19 szükséges.
A többi kiemelkedő változás közül:
- Az előlinkelési mechanizmus, valamint a kapcsolódó LD_TRACE_PRELINKING és LD_USE_LOAD_BIAS környezeti változók és linker funkciók elavultak, és egy későbbi kiadásban eltávolítjuk.
- Kód eltávolítva a Linux kernel verziójának ellenőrzéséhez és az LD_ASSUME_KERNEL környezeti változó kezeléséhez. A Glibc fordításakor támogatott minimális kernelverziót az NT_GNU_ABI_TAG ELF mező határozza meg.
- Az LD_LIBRARY_VERSION környezeti változó elavult Linux platformon.
Végül, ha többet szeretne megtudni róla, akkor tanulmányozza a részleteket A következő linken.