Lansarea bibliotecii de sistem Glibc 2.41

După șase luni de dezvoltare, a fost lansată biblioteca de sistem GNU C Library (glibc) 2.41, care respectă pe deplin cerințele standardelor ISO C11 și POSIX.1-2017. 79 de dezvoltatori au luat parte la crearea noii versiuni.

Unele dintre îmbunătățirile implementate în Glibc 2.41 includ:

  • Pentru platformă Linux Au fost adăugate funcții noi, sched_setattr și sched_getattr, pentru setarea și citirea parametrilor planificatorului de activități. În practică, aceste funcții vă permit să configurați politici de planificare a solicitărilor, cum ar fi SCHED_DEADLINE, care utilizează alți parametri decât prioritatea.
  • S-a adăugat suport pentru conversia de codare la locul de muncă la utilitarul iconv (dacă numele fișierelor de intrare și de ieșire sunt același, iconv creează acum automat un fișier temporar și înlocuiește fișierul original cu acesta după ce conversia este finalizată).
  • S-au adăugat funcții trigonometrice introduse în standardul C23 (TS 18661-4:2015) la fișierul antet math.h: acospi, asinpi, atan2pi, atanpi, cospi, sinpi și tanpi.
  • Au fost transferate versiuni optimizate ale funcțiilor exp10m1f, exp2m1f, expm1f, log10f, log2p1f, log1pf, log10p1f, cbrtf, erff, erfcf, lgammaf, tgammaf, tanf, acosf, acoshf, asinf, asinhf, asinf, asinhf, theftanORE proiect, atanhf, coshf, sinhf și tanhf.
  • S-a adăugat suport pentru extensia ARM64 GCS (Guarded Control Stack) pentru protecția hardware a adreselor de returnare de la funcții și blocarea exploit-urilor folosind metode de programare orientate spre returnare (ROP - Return-Oriented Programming, un exploit este format din bucăți deja existente de instrucțiuni ale mașinii care se termină cu o instrucțiune de control al returului). ARM64 GCS vă permite să utilizați tehnica shadow stack pentru a proteja procesele din spațiul utilizatorului - după transferul controlului către o funcție, adresele de retur sunt stocate de procesor nu numai în stiva obișnuită, ci și într-o stivă umbră separată, care nu poate fi schimbată. direct. Înainte de a ieși din funcție, adresa de retur este scoasă din stiva umbră și verificată cu adresa de retur din stiva principală. Construirea Glibc cu suport GCS necesită cel puțin binutils 2.44 și GCC 15.
  • S-a făcut multă muncă pentru a îmbunătăți generarea de cod și a îmbunătăți performanța funcțiilor matematice pentru arhitectura ARM64/AArch64. Optimizări implementate folosind instrucțiuni vectoriale (SVE, Scalable Vector Extension) și extensii SIMD (Neon).
  • Pentru sistemele cu procesoare ARM64/AArch64, a fost adăugat suport pentru mecanismul cheilor de protecție a memoriei, care este utilizat pentru a restricționa accesul la paginile de memorie fără a modifica tabelul paginilor de memorie.
  • Pentru sistemele cu procesoare PowerPC64, a fost adăugat suport pentru instrucțiuni extinse pentru a proteja împotriva utilizării programării orientate spre returnare în exploit-uri.
  • S-a adăugat un nou tip de arhitectură arch_kind_hygon pentru procesoarele chinezești x86-64 Hygon bazate pe tehnologii AMD.
  • Suita de testare glibc a fost extinsă semnificativ, numărul de teste în care a crescut de la 5408 la 6232 comparativ cu versiunea anterioară.
  • S-a adăugat capacitatea de a testa build-urile glibc folosind compilatoare C și C++, altele decât cele utilizate pentru build-ul propriu-zis. De exemplu, „configure TEST_CC=»gcc-6.4.1″ TEST_CXX=»g++-6.4.1″” și „configure TEST_CC=»clang» TEST_CXX=»clang++»'.
  • În opțiunile specificate în fișierul /etc/resolv.conf și variabila de mediu RES_OPTIONS, acum este posibil să folosiți prefixul „-” pentru a șterge o opțiune setată anterior cu un nume dat. De exemplu, dacă fișierul /etc/resolv.conf este setat la „options no-aaaa”, atunci rularea procesului cu variabila de mediu „RES_OPTIONS=-no-aaaa” va elimina interdicția de a trimite interogări DNS pentru a obține AAAA. înregistra.
  • Resolverul DNS acceptă acum opțiunea „strict-error”. Această opțiune face ca funcția getaddrinfo(), cu excepția cazului în care tipul de adresă (AF_UNSPEC) este specificat explicit, să încerce să preia valorile înregistrărilor A (IPv4) și AAAA (IPv6) de la un alt server DNS dacă interogarea înregistrării A sau AAAA către primul server DNS eșuează. Fără a specifica „strict-error”, într-o astfel de situație, adresa obținută ca urmare a unei interogări reușite va fi returnată, iar valoarea interogării eșuate va fi ignorată. De exemplu, dacă serverului a returnat înregistrarea „A”, dar a returnat o eroare la interogarea „AAAA”, getaddrinfo fără opțiunea „strict-error” va returna imediat doar adresa IPv4, iar cu opțiunea „strict-error” va încerca să repete cererile către un alt server DNS.
  • Datele de codificare, informațiile despre tipul de caractere și tabelele de transliterare au fost actualizate pentru a accepta specificația Unicode 16.0.0.
  • S-a adăugat macrocomandă „_ISOC2Y_SOURCE” pentru a activa capabilitățile definite în proiectul standard C2Y. Astfel de caracteristici pot fi activate și utilizând macrocomanda _GNU_SOURCE și prin steaguri compilatorului („gcc -std=gnu2y”).
  • Setul de instrumente pentru benchtest implementat pentru a monitoriza performanța diferitelor funcții (de obicei, cele matematice).
  • S-a adăugat setarea glibc.rtld.execstack, prin care puteți dezactiva în mod explicit utilizarea stivei executabile.
  • S-a adăugat suport pentru extensia ABI rseq (secvențe repornitoare), care oferă un mecanism pentru execuția atomică rapidă a operațiunilor (dacă operația este întreruptă de un alt fir, starea este resetată și execuția este încercată din nou). Noua versiune face posibilă utilizarea caracteristicilor avansate în rseq care nu erau prezente în ABI original, cum ar fi identificatorii de execuție paralelă (mm_cid, ID concurență hărți de memorie) și identificatorii de nod NUMA (node_id).
  • Portul pentru sistemele ARC big-endian (arceb-linux-gnu) a fost întrerupt.
  • O vulnerabilitate (CVE-2025-039) care provoacă o depășire a tamponului la executarea funcției assert() a fost remediată. Overflow apare atunci când numele programului (argv[0]) este prea mare. Problema este considerată benigna, deoarece 4 octeți sunt scriși în afara bufferului, al căror conținut nu poate fi controlat de atacator. În același timp, este interesant însuși faptul apariției unei vulnerabilități în funcțiile de depanare, care apare din cauza unei erori la afișarea numelui aplicației curente.

Sursa: opennet.ru

Cumpărați găzduire de încredere pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără găzduire web fiabilă cu protecție DDoS, servere VPS VDS | ProHoster