Pärast kuue kuu arendustööd süsteemiraamatukogu väljaanne (glibc) , mis vastab täielikult ISO C11 ja POSIX.1-2008 standardite nõuetele. Uue väljaande koostises on parandused 58 arendajalt.
Glibc 2.31-sse rakendatud poolelt võib märkida:
- Rohkem võimaluste aktiveerimiseks on lisatud makro _ISOC2X_SOURCE, mis kehtivad tulevase ISO standardi mustandi versioonis . Need võimalused aktiveeritakse ka makro _GNU_SOURCE kasutamisel või gcc compilatsiooni ajal lipuga «-std=gnu2x»;
- Tegemist on vastavalt spetsifikatsioonidele TS 18661-1:2014 ja TS 18661-3:2015, nagu seda nõutakse, pakutud üldise tüübi vastavaid makrosid «math.h» päises määratud funktsioonide jaoks, mis округляют oma tulemusi väiksema suurusega tüübiks;
- Lisatud on funktsioon pthread_clockjoin_np(), mis ootab, kuni teema lõpeb ajamäära arvesse võtmisega (kui ajamäär jõuab enne lõpetamist, tagastab funktsioon vea). Erinevalt , võimaldab pthread_clockjoin_np() ajamäära tüübi määramist ajamääramise arvutamiseks — CLOCK_MONOTONIC (sealhulgas aeg, mil süsteem on unerežiimis) või CLOCK_REALTIME;
- DNS-looderisse on lisatud tugi trust-ad valikule failis /etc/resolv.conf ja RES_TRUSTAD lipp _res.options, mis võimaldab DNS-päringutes edastada DNSSEC-lipu. (authenticated data). Sel režiimil on serveri poolt seatud AD-lipp rakendustele kergesti kergesti kergesti, mis kutsuvad üles funktsioone, nagu res_search(). Vaikimisi ei määrata glibc, kui soovitatud valikud ei ole lubatud, AD-lippu päringutes ja puhastab selle automaatselt vastustes, mis viitab DNSSEC-i kontrolli puudumisele.
- Nüüd ei ole Glibc süsteemikõnede töötavate mähiste koostamiseks vajalik Linuxi kerneli pealkirjade installimine. Erandiks on 64-bitine arhitektuur RISC-V.
- Eemaldatud , mis võimaldab ümber minna
ASLR kaitsele setuidiga programmides ja määrata laadimistabelite aadresside paigutuse, manipuleerides keskkonnamuutuja LD_PREFER_MAP_32BIT_EXEC.
Muutused, mis rikuvad ühilduvust:
- Funktsioonides totalorder(), totalordermag() ja sarnastes, mis puudutavad muid ujuvate komade tüüpe, võtavad nüüd argumentideks näidikud, et vältida hoiatusi väärtuste ülekandmisest. , vastavalt TS 18661-1 soovitustele, mis on tehtud tulevase C2X standardi jaoks.
Olemasolevad täidetavad failid, kus ujuvkomaga argumendid edastatakse otse, jätkavad tööle muutmata; - Pikka aega kuulutatud vananenud funktsioon stime ei ole enam kergesti seostatav glibc binaarfailide jaoks, ja selle määratlemine on ajast.h failist eemaldatud. Süsteemi aega tuleb seadistamiseks kasutada funktsiooni clock_settime. Edasi plaanitakse eemaldada samuti vananenud funktsioon ftime ja pealkirjafail sys/timeb.h (ftime asemel tuleks kasutada gettimeofday või clock_gettime);
- Funktsioon gettimeofday ei edasta enam teavet süsteemi ajavööndi kohta (see võimalus oli aktiivne ajadel 4.2-BSD ja on juba ammu välja kuulutatud vananenuks). Argument ‘tzp’ peab nüüd olema null viit, ja kui soovitakse saada teavet ajavööndi kohta seoses kohaliku ajaga, tuleks kasutada funktsiooni localtime(). Kui gettimeofday’i kutsutakse mitte-null argumentidega ‘tzp’, tagastatakse aja struktuuris tühjad väljad tz_minuteswest ja tz_dsttime. Funktsioon gettimeofday on POSIX-is vananenud (soovituseks on kasutada clock_gettime), kuid selle eemaldamist glibc-st ei kavandata.
- Funktsioonis settimeofday on lõpetatud toimetamise toetamine aja ja kohandamisparameetrite samaaegseks edastamiseks. Kui settimeofday’i kutsuda, peab üks argumentidest (aeg või peegeldus) olema tingimata määratud nulliasemele, vastasel juhul lõpetatakse funktsiooni kutsumine veaga EINVAL. Nagu gettimeofday, loetakse funktsiooni settimeofday POSIX-is vananenuks ja selle asemel soovitatakse kasutada funktsiooni clock_settime või adjtime funktsioonide perekonda.
- Toetust SPARC ISA v7 arhitektuurile on lõpetatud (v8 toetust hoitakse endiselt, kuid ainult protsessorite jaoks, mis toetavad CAS-i käske, nagu LEON protsessorid, kuid mitte SuperSPARC protsessorid).
- Sidumise ebaõnnestumise korral režiimis «» , kus linkija ei otsi funktsiooni sümboleid enne, kui seda funktsiooni esmakordselt kutsutakse, lõpetab dlopen nüüd protsessi täitmise (varem tagastati ebaõnnestumise korral NULL);
- MIPS hard-float ABI puhul kasutatakse nüüd täitmissteki, kui ehitamisel ei ole selgesõnaliselt seatud piirangut Linuxi 4.8+ kasutamiseks parameetriga «—enable-kernel=4.8.0» (tuumadega kuni 4.8 esinevad mõned MIPS konfigureerimise korral tõrked);
- Ajavahemike manipuleerimise süsteemi kõnede peale on ülemineku teinud süsteemikutse time64 kasutusele, kui see on olemas (32-bitistes glibc süsteemides proovib esmalt kasutada uusi aega manipuleerivaid süsteemi kõnesid 64-bitise tüübi jaoks, ja kui neid pole, lülitub vanadele 32-bitistele kutsetele).
Allikas: opennet.ru
