Pas gjashtë muajve zhvillimi lëshimi i bibliotekës sistemike (glibc) , e cila plot të gjitha kërkesat e standardeve ISO C11 dhe POSIX.1-2008. Botimi i ri përmban rregullime nga 58 zhvillues.
Nga zbatimet në Glibc 2.31 mund të theksohet:
- Shtuar makroja _ISOC2X_SOURCE për të aktivizuar mundësitë e përcaktuara në projektin e standardit të ardhshëm ISO . Këto mundësi gjithashtu aktivizohen duke përdorur makron _GNU_SOURCE ose gjatë ndërtimit në gcc me flamurin «-std=gnu2x»;
- Për funksionet e përcaktuara në skedarin «math.h», të cilat rrethojnë rezultatet e tyre në një tip më të vogël, në skedarin «tgmath.h» janë propozuar makro për tip të përgjithshëm, siç kërkohet nga specifikimet TS 18661-1:2014 dhe TS 18661-3:2015;
- Shtuar funksioni pthread_clockjoin_np(), i cili pret pĂ«rfundimin e njĂ« procesi duke marrĂ« parasysh afatin (nĂ«se afati kalon para pĂ«rfundimit, funksioni do tĂ« kthejĂ« njĂ« gabim). Ndryshe nga , nĂ« pthread_clockjoin_np() lejohet pĂ«rcaktimi i llojit tĂ« orĂ«s pĂ«r llogaritjen e afatit â CLOCK_MONOTONIC (merr parasysh kohĂ«n e kaluar nga sistemi nĂ« gjendje tĂ« fjetur) ose CLOCK_REALTIME;
- Në DNS-resolver është shtuar mbështetje për opsionin trust-ad në /etc/resolv.conf dhe flamurin RES_TRUSTAD në _res.options, ku vendosja e tyre në kërkesat DNS siguron dërgimin e flamurit DNSSEC (të dhëna të verifikuara). Në këtë modalitet flamuri AD i vendosur nga serveri bëhet i disponueshëm për aplikacionet që thërrasin funksione si res_search(). Në mënyrë të paracaktuar, nëse opsionet e propozuara nuk janë vendosur, glibc nuk tregon flamurin AD në kërkesat dhe automatikisht e pastron atë në përgjigjet, që tregon se nuk ka verifikim DNSSEC;
- Për ndërtimin e mbështetjeve funksionale të thirrjeve të sistemit për Glibc tani nuk është e nevojshme të instalohen skedarët përndihmës të bërthamës Linux. Përjashtimi është arkitektura 64-bit RISC-V;
- Eliminuar , e cila lejon kalimin e mbrojtjes
ASLR në programe me flamurin setuid dhe përcaktimin e shtrirjes së adresave në bibliotekat e ngarkuara përmes manipulimit të variablit të ambjentit LD_PREFER_MAP_32BIT_EXEC.
Ndryshimet që bëjnë të paqartë kompatibilitetin:
- Në totalorder(), totalordermag() dhe funksione të ngjashme për lloje të tjera që kanë pikën lëvizëse, tani pranojnë si argument tregues për të përjashtuar paralajmërimet për konvertimin e vlerave në gjendje , sipas rekomandimeve TS 18661-1, të propozuara për standardin e ardhshëm C2X.
Skedarët e ekzistueshëm ekzekutues, në të cilat argumentet me pikë lëvizëse kalohen drejtpërdrejt, do të vazhdojnë të funksionojnë pa ndryshime; - Funksioni stime, i cili u shpall i pasaktë prej kohësh, tani nuk është më në dispozicion për skedarët binarë të lidhur me glibc, dhe përkufizimi i tij është eliminuar nga time.h. Për të vendosur kohën sistemike, duhet të përdoret funksioni clock_settime. Në të ardhmen, është parashikuar që të hiqet edhe funksioni i markuar si i pasaktë ftime, si dhe skedari i titullit sys/timeb.h (në vend të ftime duhet të përdoret gettimeofday ose clock_gettime);
- Funksioni gettimeofday tani nuk transmeton informacione për zonën kohore të sistemit (kjo mundësi ishte e vlefshme në kohët e 4.2-BSD dhe shume vite më parë u shpall si e pasaktë). Në argumentin 'tzp' tani duhet të kaloni një tregues null, dhe për të marrë informacion mbi zonën kohore në lidhje me kohën aktuale duhet të përdorni funksionin localtime(). Kur thirret gettimeofday me një argument të ndryshëm nga null për 'tzp', do të kthehen fusha të zbrazëta tz_minuteswest dhe tz_dsttime në strukturën timezone. Funksioni gettimeofday vetë është shpallur i pasaktë në POSIX (në vend të gettimeofday rekomandohet përdorimi i clock_gettime), por nuk është planifikuar të hiqet nga glibc;
- Në settimeofday është ndërprerë mbështetja për kalimin e parametrave të dyfishtë për vendosjen e kohës dhe rregullimin e offset-it të kohës. Kur thirret settimeofday, një nga argumentet (koha ose offset-i) tani domosdoshmërish duhet të jetë e vendosur në vlerën null, përndryshe thirrja e funksionit do të përfundojë me gabimin EINVAL. Ashtu si gettimeofday funksioni settimeofday konsiderohet i pasaktë në POSIX dhe në vend të tij rekomandohet përdorimi i funksioneve clock_settime ose të familjes së funksioneve adjtime;
- Mbështetje për arkitekturën SPARC ISA v7 është ndërprerë (mbështetja për v8 mbetet, por vetëm për procesorët që mbështesin instrukcionet CAS, si procesorët LEON, por jo procesorët SuperSPARC).
- Në rast të dështimit të lidhjes në modin "", ku lidhësi nuk kryen kërkimin e simboleve të funksionit deri në thirrjen e parë të këtij funksioni, funksioni dlopen tani përfundohet me forcë (më parë, në rast dështimi, kthehej NULL);
- Për ABI MIPS hard-float tani përdoret staku ekzekutiv, nëse gjatë ndërtimit nuk është specifikuar qartë kufizimi për përdorimin e bërthamës Linux 4.8+ përmes parametrave "--enable-kernel=4.8.0" (me bërthamat deri në 4.8, dështime observohen për disa konfiguracione MIPS);
- Fushtat mbi thirrjet sistemore që lidhen me manipulimin e kohës janë zhvendosur për të përdorur thirrjen sistemore time64, nëse kjo është e disponueshme (në sistemet 32-bit glibc fillimisht përpiqet të përdorë thirrjet e reja që manipulojnë me tipin 64-bit për kohën, dhe nëse ato nuk janë të disponueshme, kthehet në thirrjet e vjetra 32-bit).
Burimi: opennet.ru
