Kuuden kuukauden kehitystyön jälkeen julkaistu järjestelmäkirjaston julkaisu GNU C -kirjasto (glibc) 2.31, joka täyttää täysin ISO C11- ja POSIX.1-2008 -standardien vaatimukset. Uusi julkaisu sisältää korjauksia 58 kehittäjältä.
Lisätty _ISOC2X_SOURCE-makro tulevan ISO-standardin luonnoksessa määriteltyjen ominaisuuksien mahdollistamiseksi C2X. Nämä ominaisuudet ovat käytössä myös käytettäessä makroa _GNU_SOURCE tai kun rakennetaan gcc:ssä "-std=gnu2x"-lipulla;
Otsikkotiedostossa "math.h" määritellyille funktioille, jotka pyöristävät tulokset pienempään tyyppiin, tiedostossa "tgmath.h" ehdotetaan vastaavia yleisiä tyyppimakroja, kuten TS 18661-1:2014 ja TS vaativat. 18661-3: 2015;
Lisätty pthread_clockjoin_np()-funktio, joka odottaa säikeen valmistumista ottaen huomioon aikakatkaisun (jos aikakatkaisu tapahtuu ennen valmistumista, funktio palauttaa virheen). Toisin kuin pthread_timedjoin_np(), kohdassa pthread_clockjoin_np() on mahdollista määrittää ajastimen tyyppi aikakatkaisun laskemiseksi - CLOCK_MONOTONIC (ottaa huomioon järjestelmän lepotilassa käyttämän ajan) tai CLOCK_REALTIME;
DNS-selvijä tukee nyt /etc/resolv.conf-tiedoston luottamus-ad-vaihtoehtoa ja _res.options-tiedoston RES_TRUSTAD-lippua. Kun se on asetettu, DNSSEC-lippu lähetetään DNS-pyynnöissä. AD (todennettu tieto). Tässä tilassa palvelimen asettama AD-lippu tulee saataville sovelluksille, jotka kutsuvat toimintoja, kuten res_search(). Oletuksena, jos ehdotettuja asetuksia ei ole asetettu, glibc ei määritä AD-lippua pyynnöissä ja tyhjentää sen automaattisesti vastauksissa, mikä osoittaa, että DNSSEC-tarkistukset puuttuvat.
Toimivien järjestelmäkutsusidosten luominen Glibcille ei enää vaadi Linux-ytimen otsikkotiedostojen asentamista. Poikkeuksena on 64-bittinen RISC-V-arkkitehtuuri;
Eliminoitu haavoittuvuusCVE-2019-19126, jonka avulla voit ohittaa suojauksen
ASLR ohjelmissa, joissa on lippu setuid, ja määrittää osoiteasettelu ladatuissa kirjastoissa muokkaamalla ympäristömuuttujaa LD_PREFER_MAP_32BIT_EXEC.
Yhteensopivuuden rikkovat muutokset:
totalorder(), totalordermag() ja vastaavat funktiot muille liukulukutyypeille hyväksyvät nyt osoittimet argumentteina poistaakseen varoitukset arvojen muuntamisesta tilassa NaN, tulevaa C18661X-standardia varten ehdotetun TS 1-2:n suositusten mukaisesti.
Olemassa olevat suoritettavat tiedostot, jotka välittävät liukulukuargumentit suoraan, jatkuvat ilman muutoksia.
Pitkään vanhentunut stime-toiminto ei ole enää saatavilla glibc-linkitetyille binääritiedostoille, ja sen määritelmä on poistettu time.h:sta. Voit asettaa järjestelmän ajan käyttämällä toimintoa clock_settime. Tulevaisuudessa aiomme poistaa vanhentuneen ftime-funktion sekä sys/timeb.h-otsikkotiedoston (gettimeofday tai clock_gettime tulisi käyttää ftime-funktion sijaan);
Функция gettimeofday отныне не передаёт сведения о общесистемном часовом поясе (данная возможность была актуальна во времена 4.2-BSD и много лет объявлена устаревшей). В аргументе ‘tzp’ теперь следует передавать нулевой указатель, а для получения сведений о часовом поясе в привязке к текущему времени использовать функцию localtime(). При вызове gettimeofday с ненулевым аргументом ‘tzp’ будут возвращены пустые поля tz_minuteswest и tz_dsttime в структуре timezone. Сама функция gettimeofday считается устаревшей в POSIX (вместо gettimeofday рекомендуется использовать clock_gettime), но удалять её из glibc не планируется;
settimeofday ei enää tue parametrien samanaikaista välittämistä kellonajan ja aikakorjaavan siirtymän asettamiseen. Kutsuttaessa settimeofday yksi argumenteista (aika tai offset) on nyt asetettava nollaksi, muuten funktiokutsu epäonnistuu EINVAL-virheen takia. Kuten gettimeofday, settimeofday-funktio on vanhentunut POSIXissa, ja se suositellaan korvattavaksi clock_settime-funktiolla tai adjtime-funktioperheellä.
SPARC ISA v7 -arkkitehtuurin tuki on lopetettu (v8-tuki säilyy toistaiseksi, mutta vain CAS-käskyjä tukeville prosessoreille, kuten LEON-prosessoreille, ei SuperSPARC-prosessoreille).
В случает сбоя связывания в режиме «laiska", jossa linkkeri ei etsi funktion symboleja ennen ensimmäistä kutsua kyseiselle funktiolle, dlopen-funktio pakottaa nyt prosessin lopettamaan (aiemmin palauttaa NULL-arvon epäonnistuessa);
MIPS hard-float ABI:ssa käytetään nyt suoritettavaa pinoa, ellei koontiversio nimenomaisesti rajoita Linux-ytimen 4.8+ käyttöä parametrin "-enable-kernel=4.8.0" kautta (ytimen versiossa 4.8 asti, kaatumiset ovat havaittu joissakin MIPS-kokoonpanoissa);
Aikamanipulaatioon liittyvien järjestelmäkutsujen sidokset on siirretty käyttämään time64-järjestelmäkutsua, jos se on olemassa (32-bittisissä järjestelmissä glibc yrittää ensin uusia järjestelmäkutsuja, jotka käsittelevät 64-bittistä aikatyyppiä, ja jos niitä ei ole, putoaa takaisin vanhoihin 32-bittisiin puheluihin).