Զարգացման վեց ամիս հետո հրատարակված համակարգի գրադարանի թողարկում GNU C գրադարան (glibc) 2.31, որը լիովին համապատասխանում է ISO C11 և POSIX.1-2008 պահանջներին: Նոր թողարկումը ներառում է ուղղումներ 58 մշակողների կողմից:
Իրականացվել է Glibc 2.30-ում բարելավումներ կարող եք նշել.
Ավելացվեց _ISOC2X_SOURCE մակրո՝ ապագա ISO ստանդարտի նախագծում սահմանված հնարավորությունները միացնելու համար C2X. Այս հնարավորությունները միացված են նաև _GNU_SOURCE մակրո օգտագործելով կամ gcc-ում «-std=gnu2x» դրոշակով կառուցելիս;
«math.h» վերնագրի ֆայլում սահմանված գործառույթների համար, որոնք կլորացնում են իրենց արդյունքները ավելի փոքր տեսակի, «tgmath.h» ֆայլում առաջարկվում են համապատասխան ընդհանուր տիպի մակրոները, ինչպես պահանջվում է TS 18661-1:2014 և TS բնութագրերով: 18661-3: 2015 թ.
Ավելացվեց pthread_clockjoin_np() ֆունկցիան, որը սպասում է շարանի ավարտին` հաշվի առնելով ժամանակի վերջը (եթե ժամանակի վերջնաժամկետը տեղի է ունենում մինչև ավարտը, ֆունկցիան կվերադարձնի սխալ): Ի տարբերություն pthread_timedjoin_np(), pthread_clockjoin_np()-ում հնարավոր է սահմանել ժամանակի հաշվման ժամանակաչափի տեսակը՝ CLOCK_MONOTONIC (հաշվի է առնում համակարգի կողմից քնի ռեժիմում անցկացրած ժամանակը) կամ CLOCK_REALTIME;
DNS լուծիչը այժմ աջակցում է վստահության գովազդի տարբերակը /etc/resolv.conf-ում և RES_TRUSTAD դրոշը _res.options-ում, երբ սահմանված է, DNSSEC դրոշը փոխանցվում է DNS հարցումներում: AD (վավերացված տվյալներ): Այս ռեժիմում սերվերի կողմից սահմանված AD դրոշը հասանելի է դառնում այն հավելվածներին, որոնք կանչում են գործառույթներ, ինչպիսին է res_search(): Լռելյայնորեն, եթե առաջարկվող տարբերակները սահմանված չեն, glibc-ը հարցումներում չի նշում AD դրոշը և ինքնաբերաբար մաքրում է այն պատասխաններում՝ նշելով, որ DNSSEC ստուգումները բացակայում են.
Glibc-ի համար աշխատանքային համակարգերի զանգերի կապակցում ստեղծելու համար այլևս չի պահանջվում Linux միջուկի վերնագրի ֆայլերի տեղադրում: Բացառություն է 64-բիթանոց RISC-V ճարտարապետությունը;
Վերացված խոցելիությունCVE-2019-19126- ը, որը թույլ է տալիս շրջանցել պաշտպանությունը
ASLR-ը setuid դրոշով ծրագրերում և որոշել հասցեների դասավորությունը բեռնված գրադարաններում LD_PREFER_MAP_32BIT_EXEC միջավայրի փոփոխականի մանիպուլյացիայի միջոցով:
Փոփոխություններ, որոնք խախտում են համատեղելիությունը.
totalorder(), totalordermag() և նմանատիպ գործառույթները այլ լողացող կետերի տեսակների համար այժմ ընդունում են ցուցիչները որպես արգումենտներ՝ արժեքների փոխակերպման վերաբերյալ զգուշացումները վերացնելու համար: NaN, համաձայն TS 18661-1 առաջարկությունների, որոնք առաջարկվել են ապագա C2X ստանդարտի համար:
Գոյություն ունեցող գործադիրները, որոնք ուղղակիորեն անցնում են լողացող կետի փաստարկները, կշարունակեն աշխատել առանց փոփոխության.
Երկար ժամանակ հնացած stime ֆունկցիան այլևս հասանելի չէ glibc-ով կապված երկուականների համար, և դրա սահմանումը հեռացվել է time.h-ից: Համակարգի ժամանակը սահմանելու համար օգտագործեք clock_settime ֆունկցիան: Ապագայում մենք նախատեսում ենք հեռացնել հնացած ftime ֆունկցիան, ինչպես նաև sys/timeb.h վերնագրի ֆայլը (ftime-ի փոխարեն պետք է օգտագործել gettimeofday կամ clock_gettime);
Функция gettimeofday отныне не передаёт сведения о общесистемном часовом поясе (данная возможность была актуальна во времена 4.2-BSD и много лет объявлена устаревшей). В аргументе ‘tzp’ теперь следует передавать нулевой указатель, а для получения сведений о часовом поясе в привязке к текущему времени использовать функцию localtime(). При вызове gettimeofday с ненулевым аргументом ‘tzp’ будут возвращены пустые поля tz_minuteswest и tz_dsttime в структуре timezone. Сама функция gettimeofday считается устаревшей в POSIX (вместо gettimeofday рекомендуется использовать clock_gettime), но удалять её из glibc не планируется;
settimeofday-ն այլևս չի աջակցում պարամետրերի միաժամանակյա փոխանցումը ժամանակի և ժամանակի շտկման փոխհատուցման համար: Settimeofday-ը կանչելիս արգումենտներից մեկը (ժամանակ կամ օֆսեթ) այժմ պետք է սահմանվի null-ի, հակառակ դեպքում ֆունկցիայի կանչը կձախողվի EINVAL սխալով: Ինչպես gettimeofday-ը, այնպես էլ settimeofday ֆունկցիան հնացած է POSIX-ում և խորհուրդ է տրվում այն փոխարինել clock_settime ֆունկցիայով կամ adjtime-ի գործառույթների ընտանիքով;
SPARC ISA v7 ճարտարապետության աջակցությունը դադարեցվել է (v8 աջակցությունն առայժմ պահպանվում է, բայց միայն այն պրոցեսորների համար, որոնք աջակցում են CAS հրահանգներին, ինչպիսիք են LEON պրոցեսորները, ոչ թե SuperSPARC պրոցեսորները):
В случает сбоя связывания в режиме «ծույլ«, երբ կապակցիչը չի որոնում ֆունկցիայի նշանները մինչև այդ ֆունկցիայի առաջին կանչը, dlopen ֆունկցիան այժմ ստիպում է գործընթացն ավարտվել (նախկինում ձախողման դեպքում վերադարձնում էր NULL-ը);
MIPS hard-float ABI-ի համար գործարկվող կույտը այժմ օգտագործվում է, եթե build-ը բացահայտորեն չի սահմանափակում Linux միջուկի օգտագործումը 4.8+ «-enable-kernel=4.8.0» պարամետրի միջոցով (մինչև 4.8 միջուկներով, խափանումներ են դիտարկված MIPS-ի որոշ կոնֆիգուրացիաների համար);
Համակարգային զանգերի շուրջ կապված ժամանակի մանիպուլյացիայի հետ կապված կապերը տեղափոխվել են՝ օգտագործելու time64 համակարգի կանչը, եթե առկա է (32-բիթանոց համակարգերում glibc-ը նախ փորձում է նոր համակարգային զանգեր, որոնք շահարկում են 64-բիթանոց ժամանակի տեսակը, և եթե չկա, ապա ընկնում է: վերադառնալ հին 32-բիթանոց զանգերին):