Vydanie systémovej knižnice Glibc 2.36

Po šiestich mesiacoch vývoja bol publikovaný release systémovej knižnice GNU C Library (glibc) 2.36, ktorá plne spĺňa požiadavky noriem ISO C11 a POSIX.1-2017. Nová verzia obsahuje opravy od 59 vývojárov.

Medzi zlepšeniami v Glibc 2.36 môžeme vyzdvihnúť:

  • Pridaná podpora nového formátu relatívnych presunov adries DT_RELR (relative relocation), ktorý umožňuje znížiť veľkosť relatívnych presunov v zdieľaných objektoch a spustiteľných súboroch skompilovaných v režime s PIE (Position-independent executables). Na použitie poľa DT_RELR v ELF súboroch je potrebná podpora voľby „-z pack-relative-relocs“ v linker, ktorá sa objavila vo vydaní súboru binutils 2.38.
  • Pre platformu Linux boli implementované funkcie pidfd_open, pidfd_getfd a pidfd_send_signal, ktoré poskytujú prístup k funkčnosti pidfd, ktorá pomáha spracovávať situácie s opakovaným použitím PID na presnejšiu identifikáciu procesov pristupujúcich k sledovaným súborom (pidfd je viazaný na konkrétny proces a nemení sa, zatiaľ čo PID môže byť priradený inému procesu po ukončení aktuálneho procesu asociovaného s týmto PID).
  • Pre platformu Linux bola pridaná funkcia process_madvise(), ktorá umožňuje jednému procesu vykonať systémové volanie madvise() v mene iného procesu a identifikovať cieľový proces pomocou pidfd. Prostredníctvom madvise() je možné informovať jadro o vlastnostiach práce s pamäťou na optimalizáciu správy pamäte procesu, napríklad na základe poskytnutých informácií môže jadro iniciovať uvoľnenie dodatočnej voľnej pamäte. Volanie madvise() iným procesom môže byť potrebné v situácii, keď informácie potrebné na optimalizáciu nie sú aktuálne známe, a koordinuje ich samostatný pozadový správny proces, ktorý sa môže sám rozhodnúť iniciovať odobratie nevyužívanej pamäte od procesov.
  • Pre platformu Linux bola pridaná funkcia process_mrelease(), ktorá umožňuje urýchliť uvoľňovanie pamäte procesu, ktorý sa chystá ukončiť svoj výkon. Za normálnych podmienok sa uvoľnenie zdrojov a ukončenie procesu nevykonáva okamžite a z rôznych dôvodov sa môže oneskoriť, čo bráni fungovaniu systémov rýchlej odozvy na nedostatok pamäte v užívateľskom priestore, ako je oomd (poskytované v systemd). S pomocou volania process_mrelease môžu takéto systémy predvídateľnejšie iniciovať vracanie pamäte od nútene ukončených procesov.
  • Do vstavaného DNS rezolvéra bola pridaná podpora voľby „no-aaaa“, ktorá umožňuje na zjednodušenie diagnostiky problémov vypnúť odosielanie DNS požiadaviek na záznamy AAAA (určenie adresy IPv6 podľa názvu hostiteľa), vrátane vykonávania funkcií NSS, ako je getaddrinfo(). Voľba neovplyvňuje spracovanie viazaní IPv6 adries, definovaných v /etc/hosts a volania getaddrinfo() s príznakom AI_PASSIVE.
  • Pre platformu Linux boli pridané funkcie fsopen, fsmount, move_mount, fsconfig, fspick, open_tree a mount_setattr, poskytujúce prístup k novému API jadra na správu montovania súborových systémov s ohľadom na priestory mien montovacích bodov (mount namespaces). Navrhnuté funkcie umožňujú samostatne spracovať rôzne fázy montovania (spracovať superblok, získať informácie o FS, pripojiť, pripevniť k montovaciemu bodu), ktoré sa predtým vykonávali pomocou spoločnej funkcie mount(). Samostatné funkcie umožňujú vykonávať zložitejšie scenáre montovania a osobitne vykonávať také operácie, ako je prestavenie superbloku, zapnutie možností, zmena montovacieho bodu a presun do iného priestoru mien. Okrem toho samostatné spracovanie umožňuje presne určiť dôvody vyplývajúce z kódov chýb a zadať niekoľko zdrojov pre viacvrstvové FS, ako je overlayfs.
  • V localedef bola implementovaná podpora spracovania súborov s definíciami lokalít dodávaných v kódovaní UTF-8 namiesto ASCII.
  • Pridané funkcie na konverziu viacbajtových kódovaní mbrtoc8 a c8rtomb, ktoré zodpovedajú špecifikáciám ISO C2X N2653 a C++20 P0482R6.
  • Pridaná podpora typu char8_t, definovaného v návrhu štandardu ISO C2X N2653.
  • Pridané funkcie arc4random, arc4random_buf a arc4random_uniform, ktoré poskytujú obal nad systémovým volaním getrandom a rozhraním /dev/urandom, vracajúce vysoko kvalitné pseudonáhodné čísla.
  • Pri práci na platforme Linux bola implementovaná podpora architektúry inštrukčnej sady LoongArch, používaná v procesoroch Loongson 3 5000 a zavádzajúca nový RISC ISA, podobný MIPS a RISC-V. V súčasnej podobe je dostupná len podpora 64-bitovej verzie LoongArch (LA64). Na fungovanie je potrebné mať aspoň verzie binutils 2.38, GCC 12 a jadra Linux 5.19.
  • Mechanizmus prelink bol vyhlásený za zastaraný a bude odstránený v ďalšej verzii, rovnako ako súvisiace premenné prostredia LD_TRACE_PRELINKING a LD_USE_LOAD_BIAS a možnosti linkeru.
  • Odstránený bol kód na kontrolu verzie jadra Linux a spracovanie premennej prostredia LD_ASSUME_KERNEL. Minimálna podporovaná verzia jadra pri kompilácii Glibc je určená cez ELF pole NT_GNU_ABI_TAG.
  • Na platforme Linux bola zastavená podpora premennej prostredia LD_LIBRARY_VERSION.

Zdroj: opennet.ru

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster