Lansarea bibliotecii sistemului Glibc 2.31

După șase luni de dezvoltare publicat lansarea bibliotecii de sistem GNU C Library (glibc) 2.31, care urmează pe deplin cerințele standardelor ISO C11 și POSIX.1-2008. Noul release include corecții de la 58 de dezvoltatori.

Din implementările din Glibc 2.31 îmbunătățiri se pot menționa:

  • A fost adăugat macro-ul _ISOC2X_SOURCE pentru a activa funcționalitățile definite în varianta preliminară a viitorului standard ISO C2X. Aceste funcționalități sunt, de asemenea, incluse atunci când se folosește macro-ul _GNU_SOURCE sau când se compilează în gcc cu flag-ul „-std=gnu2x”;
  • Pentru funcțiile definite în fișierul antet „math.h” care rotunjesc rezultatele lor la un tip de dimensiune mai mică, în fișierul „tgmath.h” sunt propuse macro-uri corespunzătoare de tip generat, conform specificațiilor TS 18661-1:2014 și TS 18661-3:2015;
  • A fost adăugată funcția pthread_clockjoin_np(), care așteaptă finalizarea unui thread având în vedere timeout-ul (dacă timeout-ul apare înainte de finalizare, funcția returnează o eroare). Spre deosebire de pthread_timedjoin_np(), în pthread_clockjoin_np() este permisă definirea tipului de temporizator pentru a calcula timeout-ul — CLOCK_MONOTONIC (care ia în considerare timpul petrecut de sistem în modul de repaus) sau CLOCK_REALTIME;
  • În DNS resolver a fost adăugată suport pentru opțiunea trust-ad în /etc/resolv.conf și pentru flagul RES_TRUSTAD în _res.options, în urma instalării cărora se realizează transmiterea flagului DNSSEC în cererile DNS AD (authentic data). În acest mod, flagul AD stabilit de server devine disponibil aplicațiilor care apelează funcții precum res_search(). În mod implicit, dacă opțiunile propuse nu sunt setate, glibc nu indică flagul AD în cereri și îl curăță automat în răspunsuri, ceea ce indică absența verificării DNSSEC;
  • Pentru compilarea wrapperelor funcțiilor de sistem pentru Glibc, acum nu mai este necesară instalarea fișierelor antet ale kernel-ului Linux. Excepția o face arhitectura de 64 de biți RISC-V;
  • Eliminată vulnerabilitatea CVE-2019-19126, care permite ocolirea protecției
    ASLR în programele cu flagul setuid și determinarea aranjamentului adreselor în bibliotecile încărcate prin manipularea variabilei de mediu LD_PREFER_MAP_32BIT_EXEC.

Modificări care afectează compatibilitatea:

  • În totalorder(), totalordermag() și funcții similare pentru alte tipuri cu virgulă mobilă, acum se acceptă ca argumente pointeri pentru a evita avertizările privind conversia valorilor în starea NaN, conform recomandărilor TS 18661-1, propuse pentru viitorul standard C2X.
    Fișierele executabile existente, în care argumentele cu virgulă mobilă sunt transmise direct, vor continua să funcționeze fără modificări;
  • Funcția stime, anunțată de mult ca fiind învechită, nu mai este disponibilă pentru fișierele binare legate de glibc, iar definiția sa a fost eliminată din time.h. Pentru a seta timpul sistemului, trebui să folosiți funcția clock_settime. În viitor, se preconizează eliminarea și a funcției ftime, marcată ca fiind învechită, precum și a fișierului de antet sys/timeb.h (în loc de ftime, se recomandă utilizarea funcțiilor gettimeofday sau clock_gettime);
  • Funcția gettimeofday nu mai transmite informații despre fusul orar general al sistemului (această capacitate a fost relevantă în epoca 4.2-BSD și a fost declarată învechită de mult timp). Argumentul ‘tzp’ trebuie să primească acum un pointer nul, iar pentru a obține informații despre fusul orar, în legătură cu timpul curent, se folosește funcția localtime(). La apelarea lui gettimeofday cu un argument ‘tzp’ diferit de nul, se vor returna câmpuri goale tz_minuteswest și tz_dsttime în structura timezone. Funcția gettimeofday este considerată învechită în POSIX (se recomandă utilizarea funcției clock_gettime în loc de gettimeofday), dar nu se planifică eliminarea ei din glibc;
  • În settimeofday, suportul pentru transmiterea simultană a parametrilor pentru setarea timpului și pentru corectarea decalajului de timp a fost oprit. La apelarea lui settimeofday, unul dintre argumente (timpul sau decalajul) trebuie să fie acum setat la valoarea null, altfel apelul funcției va eșua cu eroarea EINVAL. La fel ca gettimeofday, funcția settimeofday este considerată învechită în POSIX, iar în locul ei se recomandă utilizarea funcției clock_settime sau a familiei de funcții adjtime;
  • Suportul pentru arhitectura SPARC ISA v7 a fost oprit (suportul pentru v8 este încă păstrat, dar doar pentru procesoare care susțin instrucțiuni CAS, cum ar fi procesoarele LEON, dar nu procesoarele SuperSPARC).
  • În cazul unui eșec de legare în modul „lazy”, în care linker-ul nu caută simbolurile funcției până la prima apelare a acesteia, funcția dlopen acum încheie forțat execuția procesului (anterior, în cazul unei erori, se returna NULL);
  • Pentru ABI MIPS hard-float, acum se folosește un stiv executabil, cu condiția ca la compilare să nu fie specificată în mod explicit o limitare a utilizării nucleului Linux 4.8+ prin parametrul „—enable-kernel=4.8.0” (cu nucleele până la 4.8, se observă eșecuri pentru unele configurații MIPS);
  • Limbajul de legătură pentru apelurile de sistem legate de manipularea timpului a fost adaptat pentru a utiliza apelul de sistem time64, acolo unde este disponibil (pe sistemele pe 32 de biți, glibc încearcă mai întâi să utilizeze noile apeluri de sistem care gestionează tipul de timp de 64 de biți, iar dacă acestea nu sunt disponibile, revine la vechile apeluri de sistem pe 32 de biți).

Sursa: opennet.ro

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster