Toleo la Maktaba ya Mfumo wa Glibc 2.36

Baada ya miezi sita ya maendeleo, maktaba ya mfumo wa GNU C Library (glibc) 2.36 imetolewa, ambayo inatii kikamilifu mahitaji ya viwango vya ISO C11 na POSIX.1-2017. Toleo jipya linajumuisha marekebisho kutoka kwa watengenezaji 59.

Baadhi ya maboresho yaliyotekelezwa katika Glibc 2.36 ni pamoja na:

  • Usaidizi ulioongezwa kwa muundo mpya wa kuhamisha anwani wa DT_RELR (uhamisho wa jamaa), unaokuruhusu kupunguza ukubwa wa uhamishaji jamaa katika vitu vilivyoshirikiwa na faili zinazoweza kutekelezeka zilizounganishwa katika modi ya PIE (Utekelezaji wa Nafasi-huru). Kutumia sehemu ya DT_RELR katika faili za ELF kunahitaji usaidizi kwa chaguo la "-z pack-relative-relocs" katika kiunganishi, lililoletwa katika kutolewa kwa binutils 2.38.
  • Kwa jukwaa la Linux, vitendaji vya pidfd_open, pidfd_getfd na pidfd_send_signal vinatekelezwa, kutoa ufikiaji wa utendaji wa pidfd ambao husaidia kushughulikia hali za utumiaji tena wa PID ili kutambua kwa usahihi zaidi michakato ya kufikia faili zinazofuatiliwa (pidfd inahusishwa na mchakato mahususi na haibadiliki, wakati PID inaweza. kuunganishwa kwenye mchakato mwingine baada ya mchakato wa sasa unaohusishwa na PID hiyo kukoma).
  • Kwa jukwaa la Linux, kazi ya process_madvise() imeongezwa ili kuruhusu mchakato mmoja kutoa madvise() simu ya mfumo kwa niaba ya mchakato mwingine, kubainisha mchakato lengwa kwa kutumia pidfd. Kupitia madvise(), unaweza kufahamisha kernel juu ya huduma za kufanya kazi na kumbukumbu ili kuboresha usimamizi wa kumbukumbu ya mchakato; kwa mfano, kulingana na habari iliyopitishwa, kernel inaweza kuanzisha kutolewa kwa kumbukumbu ya ziada ya bure. Simu kwa madvise() na mchakato mwingine inaweza kuhitajika katika hali ambapo habari inayohitajika kwa utoshelezaji haijulikani kwa mchakato wa sasa, lakini inaratibiwa na mchakato tofauti wa udhibiti wa usuli, ambao unaweza kuanzisha kwa uhuru uondoaji wa kumbukumbu ambayo haijatumiwa kutoka kwa michakato.
  • Kwa jukwaa la Linux, kazi ya process_mrelease() imeongezwa, ambayo inakuwezesha kuharakisha kutolewa kwa kumbukumbu kwa mchakato wa kukamilisha utekelezaji wake. Katika hali ya kawaida, kutolewa kwa rasilimali na kukomesha mchakato si papo hapo na kunaweza kucheleweshwa kwa sababu mbalimbali, na kutatiza mifumo ya majibu ya mapema ya kumbukumbu ya nafasi ya mtumiaji kama vile oomd (zinazotolewa na systemd). Kwa kupiga process_mrelease, mifumo kama hii inaweza kusababisha urejeshaji kumbukumbu kutoka kwa michakato ya kulazimishwa.
  • Usaidizi wa chaguo la "hapana-aaaa" umeongezwa kwa utekelezaji uliojumuishwa wa kisuluhishi cha DNS, ambacho hukuruhusu kuzima utumaji wa maombi ya DNS kwa rekodi za AAAA (kuamua anwani ya IPv6 kwa jina la mwenyeji), ikijumuisha wakati wa kutekeleza NSS. hufanya kazi kama getaddrininfo(), kurahisisha utambuzi wa tatizo. Chaguo hili haliathiri uchakataji wa vifungo vya anwani vya IPv6 vilivyofafanuliwa katika /etc/hosts na simu kwa getaddrninfo() na bendera ya AI_PASSIVE.
  • Kwa jukwaa la Linux, vipengele vya fsopen, fsmount, move_mount, fsconfig, fspick, open_tree na mount_setattr vimeongezwa, kutoa ufikiaji wa API mpya ya kernel ya kudhibiti uwekaji wa mfumo wa faili kulingana na nafasi za majina. Kazi zilizopendekezwa hukuruhusu kuchakata kando hatua tofauti za uwekaji (chakata kizuizi kikubwa, pata habari juu ya mfumo wa faili, weka, ambatisha kwenye sehemu ya mlima), ambayo hapo awali ilifanywa kwa kutumia kawaida mount() kazi. Vipengele tofauti vya kukokotoa hutoa uwezo wa kutekeleza matukio changamano zaidi ya kupachika na kutekeleza shughuli tofauti kama vile kusanidi upya kizuizi kikuu, chaguo za kuwezesha, kubadilisha sehemu ya kupachika, na kuhamia kwenye nafasi nyingine ya majina. Kwa kuongezea, usindikaji tofauti hukuruhusu kuamua kwa usahihi sababu za matokeo ya nambari za makosa na kuweka vyanzo vingi vya mifumo ya faili za safu nyingi, kama vile nyongeza.
  • localedef hutoa usaidizi wa kuchakata faili za ufafanuzi wa eneo zinazotolewa katika usimbaji wa UTF-8 badala ya ASCII.
  • Vitendaji vilivyoongezwa ili kubadilisha usimbaji wa baiti nyingi za mbrtoc8 na c8rtomb kuwa vipimo vya ISO C2X N2653 na C++20 P0482R6.
  • Usaidizi ulioongezwa kwa aina ya char8_t iliyofafanuliwa katika rasimu ya ISO C2X N2653 ya kawaida.
  • Imeongeza vitendaji vya arc4random, arc4random_buf na arc4random_uniform ambavyo hutoa vifurushi juu ya simu ya mfumo wa getrandom na kiolesura cha /dev/urandom ambacho hurejesha nambari za uwongo za ubora wa juu.
  • Wakati wa kufanya kazi kwenye jukwaa la Linux, inasaidia usanifu wa kuweka maagizo ya LoongArch unaotumiwa katika vichakataji vya Loongson 3 5000 na kutekeleza RISC ISA mpya, sawa na MIPS na RISC-V. Katika hali yake ya sasa, msaada pekee wa toleo la 64-bit la LoongArch (LA64) unapatikana. Ili kufanya kazi, unahitaji angalau matoleo ya binutils 2.38, GCC 12 na Linux kernel 5.19.
  • Utaratibu wa kiunganishi, pamoja na vigeu vyake vinavyohusika vya LD_TRACE_PRELINKING na LD_USE_LOAD_BIAS na uwezo wa kiunganishi, vimeacha kutumika na vitaondolewa katika toleo la baadaye.
  • Msimbo ulioondolewa wa kuangalia toleo la Linux kernel na kushughulikia utofauti wa mazingira wa LD_ASSUME_KERNEL. Toleo la chini kabisa la kernel inayotumika wakati wa kujenga Glibc hubainishwa kupitia sehemu ya ELF NT_GNU_ABI_TAG.
  • Tofauti ya mazingira ya LD_LIBRARY_VERSION imekomeshwa kwenye jukwaa la Linux.

Chanzo: opennet.ru

Kuongeza maoni