Pärast kuue kuu arendustööd süsteembiblioteki väljaanne (glibc) , mis järgib täielikult ISO C11 ja POSIX.1-2008 standardite nõudeid. Uue versiooni koosseisu on kantud parandused 58 arendajalt.
Glibc 2.31 elluviidud võib välja tuua:
- On lisatud makro _ISOC2X_SOURCE tulevaste ISO standardite eelnõus määratletud funktsioonide sisselülitamiseks. . Need funktsioonid on samuti lubatud, kui kasutatakse makrot _GNU_SOURCE või kompileeritakse gcc-ga lipuga «-std=gnu2x»;
- Teatud «math.h» päise funktsioonide jaoks, mis ümarad oma tulemusi väiksema tüübi järgi, on failis «tgmath.h» ette nähtud vastavad üldtüüpi makrod, nagu nõuavad spetsifikatsioonid TS 18661-1:2014 ja TS 18661-3:2015;
- On lisatud funktsioon pthread_clockjoin_np(), mis ootab niidi lõpetamist, arvestades ajapiirangut (kui ajapiirang saabub enne lõpetamist, tagastab funktsioon vea). Erinevalt ,允许在pthread_clockjoin_np()中定义计时器类型来计算超时时间 — CLOCK_MONOTONIC(考虑系统在睡眠模式下所耗费的时间)或CLOCK_REALTIME;
- DNS-resolvers on lisatud tugi trust-ad valikule /etc/resolv.conf ja RES_TRUSTAD lipule _res.options, mille seadmine edastab DNSSEC lippu DNS-päringutes. (authentitud andmed). Selles režiimis on serveri poolt seadistatud AD lipp kergesti kätte saadav rakendustele, mis kutsub üles funktsioone nagu res_search(). Vaikimisi, kui pakutud valikud pole sätitud, ei määra glibc AD lippu päringutes ja puhastab seda automaatselt vastustes, mis näitab, et DNSSEC kontrolli pole;
- Glibc jaoks süsteemi kutsesilmuste toimimise sidumiste kogumiseks ei ole nüüd vajalik Linuxi tuumafailide installimine. Ainsaks erandiks on 64-bitine RISC-V arhitektuur;
- Korrigeeritud , mis võimaldab mööda minna
ASLR kaitset setuid lipuga programmides ja määrata aadresside paigutus laaditavates teekides, manipuleerides keskkonnamuutujaga LD_PREFER_MAP_32BIT_EXEC.
Muudatused, mis rikuvad ühilduvust:
- Funktsioonides totalorder(), totalordermag() ja sarnastes funktsioonides, mis käsitlevad teisi ujuvaid komasid, aktsepteeritakse nüüd argumendina osutajad, et vältida hoiatuste ilmumist väärtuste teisendamisel olekusse , vastavalt TS 18661-1 soovitustele, mis on ette nähtud tulevase C2X standardi jaoks.
Olemasolevad käivitatavad failid, milles ujuvad argumendid edastatakse otse, jätkavad töötamist muutmiseta; - Pikka kaua oodatud vananenud funktsioon stime ei ole enam saadaval glibc binaarfailidega, ja selle määratlemine on eemaldatud time.h failist. Süsteemi aja seadmiseks tuleb kasutada funktsiooni clock_settime. Tulevikus on kavas eemaldada ka vananenud funktsioon ftime ning pealkirjafail sys/timeb.h (ftime asemel tuleks kasutada gettimeofday või clock_gettime);
- Funktsioon gettimeofday ei edasta enam teavet üldise süsteemi ajavööndi kohta (see võimalus oli aktuaalne 4.2-BSD ajal ja on juba ammu manustatud vananenuks). Argument 'tzp' tuleks nüüd edastada nullnäitena, ja tunnete ajavööndi seose praeguse ajaga saab määrata funktsiooni localtime() abil. Kui gettimeofdayi kutsutakse mitte-nulliga argumendiga 'tzp', tagastatakse tühjad väljad tz_minuteswest ja tz_dsttime struktuuris timezone. Funktsiooni gettimeofday peetakse POSIX-is vananenuks (soovitatav on kasutada clock_gettime), kuid selle eemaldamine glibc-st ei ole plaanis;
- Funktsioonis settimeofday on lõpetatud samal ajal argumentide edastamise tugi aja seadmiseks ja korrigeeriva aja nihke seadmiseks. Funktsiooni settimeofday kutsumisel peab üks argument (kas aeg või nihke) olema nüüd kindlasti määratud nulliks, vastasel juhul lõpeb funktsiooni kutsumine tõrge EINVAL. Nagu gettimeofday, peetakse ka funktsiooni settimeofday POSIX-is vananenuks ja selle asemel soovitatakse kasutada funktsiooni clock_settime või adjtime funktsioonide perekonda;
- Arhitektuuri SPARC ISA v7 tugi on lõpetatud (v8 tugi on hetkel säilinud, kuid ainult CAS juhte toetavate protsessorite jaoks, nagu LEON protsessorid, aga mitte SuperSPARC protsessorid).
- Sidumise tõrke korral lazy režiimis, kus linker ei otsi funktsiooni sümboleid enne selle esmakordset kutsumist, lõpetab funktsioon dlopen nüüd protsessi täitmise (varem tagastati tõrke korral NULL);ABI MIPS hard-float jaoks kasutatakse nüüd täidesaatvat steki, kui ehitamise ajal ei ole selgelt määratud piirangut Linuxi tuumale 4.8+ parameetriga „--enable-kernel=4.8.0“ (tuumadega kuni 4.8 esineb tõrkeid mõnede MIPS konfiguratsioonide puhul);
- В случае сбоя связывания в режиме «
- Süsteemikõnede venitamisega seotud süsteemikõned on tõlgitud süsteemikõne time64 rakendamiseks, kui see on saadaval (32-bitistes süsteemides proovib glibc alguses kasutada uusi süsteemikõnesid, mis manipuleerivad 64-bitise ajaga, ja kui neid ei ole, naaseb vanade 32-bitiste süsteemikõnede juurde).
Allikas: opennet.ru
