Efter seks måneders udvikling udgivelse af systembibliotek (glibc) , som fuldt ud opfylder kravene i standarderne ISO C11 og POSIX.1-2008. Den nye version inkluderer rettelser fra 58 udviklere.
Blandt de implementerede forbedringer i Glibc 2.31 Der er tilføjet makro _ISOC2X_SOURCE for at inkludere funktioner defineret i udkastet til den fremtidige ISO-standard
- C2X For visse funktioner i header-filen «math.h», der afrunder deres resultater til en mindre datatype, er der i filen «tgmath.h» foreslået passende generiske makroer som angivet i specifikationerne TS 18661-1:2014 og TS 18661-3:2015;
- Funktionen pthread_clockjoin_np() er blevet tilføjet, som venter på, at en tråd afsluttes med hensyntagen til tidsgrænsen (hvis tidsgrænsen udløber før afslutningen, returneres en fejl). I modsætning til
- pthread_timedjoin_np() I DNS-resolveren er der tilføjet støtte til optionen trust-ad i /etc/resolv.conf og flaget RES_TRUSTAD i _res.options, hvorved DNSSEC-flaget "AD" (authenticated data) overføres i DNS-forespørgsler.
- (authenticated data). I denne tilstand bliver AD-flaget etableret af serveren tilgængeligt for applikationer, der kalder funktioner som res_search(). Som standard, hvis de foreslåede muligheder ikke sættes, angiver glibc ikke AD-flaget i forespørgsler og rydder det automatisk i svar, hvilket indikerer, at der ikke er blevet udført DNSSEC-verificering; Rettelsen af
- CVE-2019-19126
- , som gør det muligt at omgå beskyttelsen I totalorder(), totalordermag() og lignende funktioner for andre flydende punkt-typer accepteres nu pointere som argument for at undgå advarsler om konvertering af værdier i tilstand
NaN
Ændringer, der bryder kompatibiliteten:
- I totalorder(), totalordermag() og lignende funktioner for andre typer med flydende komma accepteres nu pointere som argument for at undgå advarsler om konvertering af værdier i tilstand , i overensstemmelse med anbefalingerne i TS 18661-1, foreslået til den kommende standard C2X.
Eksisterende eksekverbare filer, hvor flydende argumenter sendes direkte, vil fortsætte med at fungere uden ændringer; - Den længe annoncerede forældede funktion stime er nu ikke længere tilgængelig for binærfiler bundet til glibc, og dens definition er fjernet fra time.h. For at indstille systemtiden bør funktionen clock_settime anvendes. Det er planlagt at fjerne også den forældede funktion ftime samt headerfilen sys/timeb.h (i stedet for ftime bør gettimeofday eller clock_gettime bruges);
- Funktionen gettimeofday videregiver nu ikke oplysninger om det generelle systemtidszone (denne funktionalitet var relevant i 4.2-BSD-tiden og er blevet erklæret forældet i mange år). I argumentet ‘tzp’ bør der nu sendes en nulpeger, og for at få oplysninger om tidszonen i forhold til den aktuelle tid skal funktionen localtime() anvendes. Ved kald til gettimeofday med et ikke-nul argument ‘tzp’ vil felterne tz_minuteswest og tz_dsttime i timezone-strukturen blive returneret som tomme. Selve funktionen gettimeofday anses for at være forældet i POSIX (i stedet for gettimeofday anbefales det at bruge clock_gettime), men den er ikke planlagt til at blive fjernet fra glibc;
- I settimeofday stoppes understøttelsen af samtidig transmission af parametre til indstilling af tid og tidskorrektion. Ved kald til settimeofday skal et af argumenterne (tid eller korrektion) nu nødvendigvis være sat til værdien null, ellers vil funktionskaldet resultere i fejlen EINVAL. Ligesom gettimeofday betragtes funktionen settimeofday som forældet i POSIX, og det anbefales at bruge funktionen clock_settime eller familierne af funktioner adjtime i stedet;
- Understøttelsen af SPARC ISA v7 arkitektur er blevet stoppet (understøttelsen af v8 er dog bevaret, men kun for processorer med understøttelse af CAS-instruktioner, såsom LEON-processorer, men ikke SuperSPARC-processorer).
- I tilfælde af en bindingfejl i «», hvor linker ikke søger efter funktionssymbolerne før første kald til denne funktion, afslutter funktionen dlopen nu processeexecuten (tidligere blev NULL returneret ved fejl);
- For ABI MIPS hard-float anvendes nu den eksekverbare stak, medmindre der ved kompilering eksplicit angives en begrænsning på brugen af Linux-kernen 4.8+ via parameteren «—enable-kernel=4.8.0» (med kerner indtil 4.8 opstår der fejl for nogle MIPS-konfigurationer);
- Bindings over system calls related to time manipulation have been translated to the use of the time64 system call, when available (on 32-bit systems, glibc first attempts to use the new system calls that manipulate 64-bit time types, and if those are not available, falls back to the old 32-bit calls).
Kilde: opennet.ru
