Glibc 2.36 süsteemiteegi väljalase

Pärast kuuekuulist arendustööd on välja antud GNU C Library (glibc) 2.36 süsteemiteek, mis vastab täielikult ISO C11 ja POSIX.1-2017 standardite nõuetele. Uus versioon sisaldab parandusi 59 arendajalt.

Mõned Glibc 2.36-s rakendatud täiustused hõlmavad järgmist:

  • Lisatud on tugi uuele DT_RELR (relatiivne ümberpaigutamine) aadresside ümberpaigutamise vormingule, mis võimaldab vähendada suhteliste ümberpaigutuste suurust jagatud objektides ja täitmisfailides, mis on lingitud PIE (Position-independent executables) režiimis. Välja DT_RELR kasutamine ELF-failides nõuab linkeris suvandi "-z pack-relative-relocs" tuge, mis võeti kasutusele binutils 2.38 väljalaskes.
  • Linuxi platvormi jaoks on juurutatud funktsioonid pidfd_open, pidfd_getfd ja pidfd_send_signal, mis pakuvad juurdepääsu pidfd funktsioonidele, mis aitavad toime tulla PID-i taaskasutamise olukordadega, et täpsemalt tuvastada jälgitavatele failidele juurde pääsevad protsessid (pidfd on seotud konkreetse protsessiga ja ei muutu, samas kui PID saab ühendatakse mõne teise protsessiga pärast seda, kui selle PID-ga seotud praegune protsess lõpeb).
  • Linuxi platvormi jaoks on lisatud funktsioon process_madvise(), mis võimaldab ühel protsessil väljastada madvise() süsteemikutse teise protsessi nimel, tuvastades sihtprotsessi pidfd abil. Läbi madvise() saab kerneli teavitada mäluga töötamise funktsioonidest, et optimeerida protsessimälu haldamist, näiteks saab edastatud teabe põhjal kernel algatada täiendava vaba mälu vabastamise. Väljakutse madvise()-le mõne teise protsessi poolt võib olla vajalik olukorras, kus optimeerimiseks vajalik informatsioon on praegusele protsessile teadmata, kuid seda koordineerib eraldiseisev taustajuhtimisprotsess, mis võib iseseisvalt algatada kasutamata mälu eemaldamise protsessidest.
  • Linuxi platvormi jaoks on lisatud funktsioon process_mrelease(), mis võimaldab kiirendada mälu vabastamist protsessi lõpuleviimiseks. Tavaolukorras ei toimu ressursi vabastamine ja protsessi lõpetamine silmapilkselt ja võivad erinevatel põhjustel viibida, häirides kasutajaruumi mälu varajase reageerimise süsteeme, nagu oomd (pakkub systemd). Kutsudes protsessi_mrelease, saavad sellised süsteemid ennustatavamalt käivitada sunnitud protsessidest mälu tagasivõtmise.
  • DNS-i lahendaja sisseehitatud juurutusse on lisatud suvandi "no-aaaa" tugi, mis võimaldab keelata AAAA-kirjete DNS-päringute saatmise (IPv6-aadressi määramine hostinime järgi), sealhulgas NSS-i käivitamisel. funktsioonid nagu getaddrinfo(), et lihtsustada probleemide diagnoosimist. See suvand ei mõjuta failis /etc/hosts määratletud IPv6 aadresside ja getaddrinfo() kõnede töötlemist lipuga AI_PASSIVE.
  • Linuxi platvormi jaoks on lisatud funktsioonid fsopen, fsmount, move_mount, fsconfig, fspick, open_tree ja mount_setattr, mis pakuvad juurdepääsu uuele kerneli API-le, et hallata failisüsteemi ühendamist mounti nimeruumide alusel. Pakutud funktsioonid võimaldavad teil eraldi töödelda erinevaid ühendamisetappe (töötleda superplokki, hankida teavet failisüsteemi kohta, ühendada, kinnitada ühenduspunkti), mida varem teostati ühise funktsiooni mount() abil. Eraldi funktsioonid võimaldavad täita keerukamaid ühendamise stsenaariume ja teha eraldi toiminguid, nagu superploki ümberkonfigureerimine, valikute lubamine, ühenduspunkti muutmine ja teise nimeruumi liikumine. Lisaks võimaldab eraldi töötlemine täpselt määrata veakoodide väljastamise põhjused ja määrata mitmekihiliste failisüsteemide jaoks mitu allikat, näiteks ülekatted.
  • localedef pakub tuge ASCII asemel UTF-8 kodeeringus pakutavate lokaadi määratluste failide töötlemiseks.
  • Lisatud funktsioonid mitmebaidise mbrtoc8 ja c8rtomb kodeeringu teisendamiseks ISO C2X N2653 ja C++20 P0482R6 spetsifikatsioonideks.
  • Lisatud on ISO C8X N2 standardi kavandis määratletud char2653_t tüübi tugi.
  • Lisatud on funktsioonid arc4random, arc4random_buf ja arc4random_uniform, mis pakuvad getrandom süsteemikutsele ümbriseid ja /dev/urandom liidest, mis tagastavad kvaliteetseid pseudojuhuslikke numbreid.
  • Linuxi platvormil töötades toetab see Loongson 3 5000 protsessorites kasutatavat LoongArchi käsukomplekti arhitektuuri ja rakendab uut RISC ISA-t, sarnaselt MIPS-i ja RISC-V-ga. Praegusel kujul on saadaval ainult LoongArchi (LA64) 64-bitise versiooni tugi. Töötamiseks vajate vähemalt binutils 2.38, GCC 12 ja Linuxi kerneli 5.19 versioone.
  • Eellingi mehhanism, samuti sellega seotud keskkonnamuutujad LD_TRACE_PRELINKING ja LD_USE_LOAD_BIAS ning linkeri võimalused on aegunud ja need eemaldatakse tulevases versioonis.
  • Eemaldatud kood Linuxi kerneli versiooni kontrollimiseks ja keskkonnamuutuja LD_ASSUME_KERNEL käsitlemiseks. Glibci loomisel toetatud tuuma minimaalne versioon määratakse ELF-välja NT_GNU_ABI_TAG kaudu.
  • Keskkonnamuutuja LD_LIBRARY_VERSION kasutamine on Linuxi platvormil lõpetatud.

Allikas: opennet.ru

Lisa kommentaar