ProHoster > Publikimi i Bibliotekës së Sistemit Glibc 2.31
Publikimi i Bibliotekës së Sistemit Glibc 2.31
Pas gjashtë muajsh zhvillimi botuar lëshimi i bibliotekës së sistemit Biblioteka GNU C (glibc) 2.31, i cili përputhet plotësisht me kërkesat e ISO C11 dhe POSIX.1-2008. Publikimi i ri përfshin rregullime nga 58 zhvillues.
U shtua makro _ISOC2X_SOURCE për të mundësuar aftësitë e përcaktuara në draft standardin e ardhshëm ISO GJ2X. Këto veçori aktivizohen gjithashtu kur përdorni makro _GNU_SOURCE ose kur ndërtoni në gcc me flamurin “-std=gnu2x”;
Për funksionet e përcaktuara në skedarin e titullit "math.h" që rrumbullakojnë rezultatet e tyre në një lloj më të vogël, makrot përkatëse të tipit gjenerik propozohen në skedarin "tgmath.h", siç kërkohet nga specifikimet TS 18661-1:2014 dhe TS 18661-3: 2015;
U shtua funksioni pthread_clockjoin_np(), i cili pret që thread të përfundojë, duke marrë parasysh kohëzgjatjen (nëse skadimi ndodh para përfundimit, funksioni do të kthejë një gabim). Ndryshe nga pthread_timedjoin_np(), në pthread_clockjoin_np() është e mundur të përcaktohet lloji i kohëmatësit për llogaritjen e afatit - CLOCK_MONOTONIC (merr parasysh kohën e shpenzuar nga sistemi në modalitetin e gjumit) ose CLOCK_REALTIME;
Zgjidhësi DNS tani mbështet opsionin trust-ad në /etc/resolv.conf dhe flamurin RES_TRUSTAD në _res.options, kur vendoset, flamuri DNSSEC transmetohet në kërkesat DNS AD (të dhëna të vërtetuara). 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(). Si parazgjedhje, nëse opsionet e sugjeruara nuk janë caktuar, glibc nuk e specifikon flamurin AD në kërkesat dhe e fshin automatikisht atë në përgjigje, duke treguar që kontrollet DNSSEC mungojnë;
Ndërtimi i lidhjeve të thirrjeve të sistemit të punës për Glibc nuk kërkon më instalimin e skedarëve të kokës së kernelit Linux. Përjashtim bën arkitektura 64-bit RISC-V;
Eleminuar cenueshmëriaCVE-2019-19126, e cila ju lejon të anashkaloni mbrojtjen
ASLR në programet me flamurin setuid dhe përcaktoni paraqitjen e adresave në bibliotekat e ngarkuara përmes manipulimit të ndryshores së mjedisit LD_PREFER_MAP_32BIT_EXEC.
Ndryshimet që prishin përputhshmërinë:
totalorder(), totalordermag(), dhe funksione të ngjashme për llojet e tjera me pikë lundruese tani pranojnë tregues si argumente për të eliminuar paralajmërimet në lidhje me konvertimin e vlerave në gjendje NaN, në përputhje me rekomandimet e TS 18661-1 të propozuar për standardin e ardhshëm C2X.
Ekzekutuesit ekzistues që kalojnë drejtpërdrejt argumentet me pikë lundruese do të vazhdojnë të ekzekutohen pa modifikim;
Funksioni stime i vjetëruar prej kohësh nuk është më i disponueshëm për binarët e lidhur me glibc dhe përkufizimi i tij është hequr nga time.h. Për të vendosur orën e sistemit, përdorni funksionin ora_vendos. Në të ardhmen, ne planifikojmë të heqim funksionin e vjetëruar ftime, si dhe skedarin e kokës sys/timeb.h (gettimeofday ose clock_gettime duhet të përdoren në vend të ftime);
Funksioni gettimeofday nuk kalon më informacion në lidhje me zonën kohore në të gjithë sistemin (kjo veçori ishte e rëndësishme në ditët e 4.2-BSD dhe është zhvlerësuar për shumë vite). Argumentit 'tzp' tani duhet t'i kalohet një tregues null dhe funksioni localtime() duhet të përdoret për të marrë informacionin e zonës kohore bazuar në kohën aktuale. Thirrja e gettimeofday me një argument "tzp" jo zero do të kthejë fushat boshe tz_minuteswest dhe tz_dsttime në strukturën e zonës kohore. Vetë funksioni gettimeofday është i vjetëruar nën POSIX (clock_gettime rekomandohet në vend të gettimeofday), por nuk ka plane për ta hequr atë nga glibc;
settimeofday nuk mbështet më kalimin e njëkohshëm të parametrave për vendosjen e kohës dhe kompensimin e korrigjimit të kohës. Kur telefononi settimeofday, një nga argumentet (koha ose offset) tani duhet të vendoset në null, përndryshe thirrja e funksionit do të dështojë me një gabim EINVAL. Ashtu si gettimeofday, funksioni settimeofday është i vjetëruar në POSIX dhe rekomandohet të zëvendësohet nga funksioni clock_settime ose nga familja e funksioneve adjtime;
Mbështetja për arkitekturën SPARC ISA v7 është ndërprerë (mbështetja v8 ruhet për momentin, por vetëm për procesorët që mbështesin udhëzimet CAS, si procesorët LEON, jo procesorët SuperSPARC).
Nëse çiftimi dështon në "dembel", në të cilën lidhësi nuk kërkon simbolet e një funksioni deri në thirrjen e parë të atij funksioni, funksioni dlopen tani e detyron procesin të përfundojë (më parë duke kthyer NULL në dështim);
Për MIPS hard-float ABI, grupi i ekzekutueshëm përdoret tani, përveç nëse ndërtimi kufizon në mënyrë eksplicite përdorimin e kernelit Linux 4.8+ nëpërmjet parametrit "-enable-kernel=4.8.0" (me kernelet deri në 4.8, prishjet janë vëzhguar për disa konfigurime MIPS);
Lidhjet rreth thirrjeve të sistemit që lidhen me manipulimin e kohës janë zhvendosur për të përdorur thirrjen e sistemit time64, nëse është e pranishme (në sistemet 32-bit, glibc fillimisht provon thirrjet e reja të sistemit që manipulojnë llojin e kohës 64-bit dhe nëse nuk ka, bie kthehu te thirrjet 32-bit të të vjetrave).