Toleo la Maktaba ya Mfumo wa Glibc 2.31

Baada ya miezi sita ya maendeleo iliyochapishwa kutolewa kwa maktaba ya mfumo Maktaba ya GNU C (glibc) 2.31, ambayo inazingatia kikamilifu mahitaji ya viwango vya ISO C11 na POSIX.1-2008. Toleo jipya linajumuisha marekebisho kutoka kwa watengenezaji 58.

Kutoka kwa zile zilizotekelezwa katika Glibc 2.31 maboresho unaweza kumbuka:

  • Imeongeza _ISOC2X_SOURCE macro ili kuwezesha uwezo uliobainishwa katika rasimu ya kiwango cha ISO cha siku zijazo C2X. Vipengele hivi pia huwashwa unapotumia _GNU_SOURCE macro au unapounda katika gcc kwa kutumia bendera ya "-std=gnu2x";
  • Kwa vitendaji vilivyofafanuliwa katika faili ya kichwa "math.h" ambayo huzunguka matokeo yao kwa aina ndogo, macros ya aina inayolingana yanapendekezwa kwenye faili "tgmath.h", kama inavyotakiwa na vipimo TS 18661-1:2014 na TS. 18661-3: 2015;
  • Utendakazi wa pthread_clockjoin_np() ulioongezwa, ambao hungoja uzi kukamilika, kwa kuzingatia muda wa kuisha (ikiwa muda utaisha kabla ya kukamilika, chaguo la kukokotoa litarejesha hitilafu). Tofauti pthread_timedjoin_np(), katika pthread_clockjoin_np() inawezekana kufafanua aina ya timer kwa ajili ya kuhesabu timeout - CLOCK_MONOTONIC (inazingatia muda uliotumiwa na mfumo katika hali ya usingizi) au CLOCK_REALTIME;
  • Kitatuzi cha DNS sasa kinaauni chaguo la tangazo la uaminifu katika /etc/resolv.conf na bendera ya RES_TRUSTAD katika _res.options, ikiwekwa, bendera ya DNSSEC hutumwa katika maombi ya DNS. AD (data iliyothibitishwa). Katika hali hii, bendera ya AD iliyowekwa na seva inapatikana kwa programu zinazoita vitendaji kama vile res_search(). Kwa chaguo-msingi, ikiwa chaguo zilizopendekezwa hazijawekwa, glibc haibainishi alama ya AD katika maombi na huifuta kiotomatiki katika majibu, ikionyesha kuwa ukaguzi wa DNSSEC haupo;
  • Kuunda vifungo vya simu vya mfumo wa kufanya kazi kwa Glibc hahitaji tena kusakinisha faili za vichwa vya Linux kernel. Isipokuwa ni usanifu wa 64-bit RISC-V;
  • Imeondolewa kuathirika CVE-2019-19126, ambayo hukuruhusu kupitisha ulinzi
    ASLR katika programu zilizo na bendera ya mpangilio na ubaini mpangilio wa anwani katika maktaba zilizopakiwa kupitia ubadilishanaji wa LD_PREFER_MAP_32BIT_EXEC mazingira.

Mabadiliko ambayo yanavunja utangamano:

  • totalorder(), totalordermag(), na utendakazi sawa na aina zingine za sehemu zinazoelea sasa zinakubali viashiria kama hoja za kuondoa maonyo kuhusu kubadilisha maadili katika hali. NaN, kwa mujibu wa mapendekezo ya TS 18661-1 iliyopendekezwa kwa kiwango cha C2X cha baadaye.
    Utekelezaji uliopo ambao hupitisha hoja zinazoelea moja kwa moja utaendelea kufanya kazi bila marekebisho;

  • Kitendakazi cha stime kilichoacha kutumika kwa muda mrefu hakipatikani tena kwa jozi zilizounganishwa na glibc, na ufafanuzi wake umeondolewa kutoka kwa time.h. Ili kuweka muda wa mfumo, tumia kitendakazi cha clock_settime. Katika siku zijazo, tunapanga kuondoa kitendakazi cha ftime kilichoacha kutumika, pamoja na faili ya kichwa cha sys/timeb.h (gettimeofday au clock_gettime inapaswa kutumika badala ya ftime);
  • Kitendaji cha gettimeofday hakipitishi tena maelezo kuhusu saa za eneo la mfumo mzima (kipengele hiki kilikuwa muhimu katika siku za 4.2-BSD na kimeacha kutumika kwa miaka mingi). Hoja ya 'tzp' sasa inapaswa kupitishwa kielekezi batili, na kitendakazi localtime() kinafaa kutumika kupata taarifa ya saa za eneo kulingana na saa ya sasa. Kupiga simu gettimeofday kwa hoja isiyo ya sufuri 'tzp' kutarejesha sehemu tupu tz_minuteswest na tz_dsttime katika muundo wa saa za eneo. Kitendaji cha gettimeofday chenyewe kimeacha kutumika chini ya POSIX (clock_gettime inapendekezwa badala ya gettimeofday), lakini hakuna mipango ya kuiondoa kwenye glibc;
  • settimeofday haiauni tena upitishaji wa vigezo kwa wakati mmoja kwa kuweka saa na urekebishaji wa saa. Wakati wa kupiga simu settimeofday, moja ya hoja (saa au kumaliza) lazima sasa ziwekwe kuwa batili, vinginevyo simu ya chaguo la kukokotoa itashindwa na hitilafu ya EINVAL. Kama vile gettimeofday, chaguo za kukokotoa za settimeofday hazitumiki katika POSIX na inashauriwa kubadilishwa na chaguo za kukokotoa za saa_saa au familia ya adjtime ya vitendakazi;
  • Usaidizi wa usanifu wa SPRC ISA v7 umekatishwa (msaada wa v8 umehifadhiwa kwa sasa, lakini kwa vichakataji vinavyotumia maagizo ya CAS pekee, kama vile vichakataji vya LEON, si vichakataji vya SuperSPARC).
  • Ikiwa kuoanisha kutashindwa katika "wavivu", ambamo kiunganishi hakitafuti alama za chaguo za kukokotoa hadi simu ya kwanza kwa chaguo la kukokotoa, kitendakazi cha dlopen sasa kinalazimisha mchakato kukomesha (hapo awali kilirejesha NULL juu ya kutofaulu);
  • Kwa ABI ya kuelea kwa bidii ya MIPS, rafu inayoweza kutekelezwa sasa inatumika, isipokuwa muundo utazuia kwa uwazi matumizi ya Linux kernel 4.8+ kupitia kigezo cha "-enable-kernel=4.8.0" (yenye kokwa hadi 4.8, mivurugo kuzingatiwa kwa usanidi fulani wa MIP);
  • Vifungo vinavyozunguka simu za mfumo vinavyohusiana na upotoshaji wa wakati vimehamishwa ili kutumia simu ya mfumo wa time64, ikiwa iko (kwenye mifumo ya 32-bit, glibc hujaribu kwanza simu za mfumo mpya ambazo hubadilisha aina ya saa-64, na ikiwa hakuna, huanguka. kurudi kwa simu za zamani za 32-bit).

Chanzo: opennet.ru

Kuongeza maoni