Glibc 2.44 nastaví ladicí přepínače všem programům, formát souboru ale nezaručuje
Knihovna GNU C vyšla ve verzi 2.44. Novinkou je soubor /etc/tunables.conf, kterým správce nastaví ladicí přepínače knihovny všem programům naráz; ldconfig je uloží do mezipaměti ld.so.cache. Oznámení k vydání zároveň říká, že formát toho souboru ani jeho umístění nejsou stabilní rozhraní.
Knihovna GNU C je základ, na kterém v linuxových systémech stojí skoro každý program: obstarává práci se soubory, sítí, pamětí i překlad jmen na adresy. Verzi 2.44 oznámil 25. července v konferenci libc-alpha správce vydání Andreas K. Hüttel. V seznamu přispěvatelů je 111 jmen a vydání zavírá 67 hlášených chyb.

Největší novinka je soubor /etc/tunables.conf. Nastavují se v něm takzvané tunables, tedy přepínače, kterými jde měnit chování knihovny za běhu – od prahů, kdy alokátor paměti vrací paměť zpátky systému, po využití bezpečnostních rozšíření procesoru. Dosud se zadávaly proměnnou prostředí GLIBC_TUNABLES, a tím pádem zvlášť pro každé spuštění.
Hodnoty projdou přes ldconfig do mezipaměti
Podle dokumentace, kterou k funkci napsal DJ Delorie, má soubor jeden přepínač na řádek:
glibc.malloc.trim_threshold=128
glibc.malloc.check=3
Samotný soubor ale programy nečtou. Přeloží ho ldconfig, tedy nástroj, kterým se po instalaci knihoven obnovuje jejich rejstřík, a uloží hodnoty jako rozšíření do mezipaměti /etc/ld.so.cache. Odtud si je vezme každý program při startu. Na už běžící programy změna nemá vliv. Soubor umí i vkládat další soubory příkazem include, stejnou syntaxí jako dávno zavedený ld.so.conf.
Předpona rozhoduje, kdo smí hodnotu přepsat
Hodnoty ze systémového souboru fungují jako výchozí: přebíjejí to, co má program zabudované, ale samy je pořád možné přebít proměnnou prostředí. Právě tohle jde u jednotlivého řádku vypnout. Předpona nonoverridable nebo znak - zablokuje změnu z prostředí a dá přednost systémovému nastavení, overridable či + je výchozí chování.
Druhá sada předpon vybírá podle toho, jestli proces běží s vyššími právy – dokumentace mluví o příznaku AT_SECURE, tedy o programech se setuid, setgid nebo se zvýšenými oprávněními. onlysecure (@) se použije jen na ně, nonsecure ($) jen na ostatní, anysecure (*) na všechny.
Filtr umí zacílit na jediný program
K tomu přibyly filtry. Řádek ve tvaru [proc:vzor] omezí následující přepínače na konkrétní program, ať už podle celé cesty, nebo jen podle jména souboru. Jméno procesu si knihovna přečte z /proc/self/exe, a když to nejde, z argv[0] – to ale ne u procesů s vyššími právy. Ukázka z dokumentace zapíná v celém systému ochranu návratových adres stínovým zásobníkem a jednomu programu, který na ní padá, ji vypíná:
-glibc.cpu.x86_shstk=1
[proc:/usr/bin/program_that_crashes_with_shstk]
+glibc.cpu.x86_shstk=0
Filtr platí do dalšího filtru, do řádku s prázdnými hranatými závorkami, nebo do konce souboru. Kód pochází z dílny Red Hatu; dokumentaci zapsal Delorie 26. června a revidoval ji Arjun Shankar.
Rozhraní, které se smí změnit
Oznámení k vydání k novince připojuje větu, která stojí za přečtení dřív, než si ji správce zapíše do konfigurace serverů: konkrétní přepínače, formát souboru /etc/tunables.conf ani cesta k němu nepatří mezi stabilní rozhraní knihovny a mezi vydáními se můžou změnit. Kdo si na tenhle soubor postaví nasazení, počítá s tím, že mu příští verze glibc může sáhnout na syntaxi.
Server Phoronix při zápisu funkce do repozitáře upozornil ještě na jednu věc: díky předponě, která zakáže přepsání z prostředí, jde nově některé přepínače uzamknout.
Tři bezpečnostní upozornění, čtyři čísla CVE
Bezpečnostní oddíl oznámení jmenuje tři upozornění. Dvě se týkají funkcí gethostbyaddr a gethostbyaddr_r: podle popisu u CVE-2026-4437 mohla podvržená odpověď DNS serveru vést k tomu, že program vzal část odpovědi, která odpovědí není, jako platnou; CVE-2026-4438 pak popisuje vracení neplatných jmen. Obojí se týká verzí 2.34 až 2.43. Třetí, CVE-2026-4046, je pád funkce iconv na kontrolním výrazu při převodu ze znakových sad IBM1390 a IBM1399; záznam u něj rovnou uvádí, že se to dá obejít odstraněním obou sad ze systému, kde je nikdo nepotřebuje.
V seznamu opravených chyb je ale ještě čtvrté číslo. U hlášení 34069 stojí CVE-2026-6238, přečtení paměti za koncem vyrovnávací paměti ve funkci ns_sprintrrf u poškozených záznamů DNS. Samostatné upozornění k němu v oznámení není. Záznam v databázi jmenuje tři zavržené funkce určené jen k ladění aplikací; překladač jmen je při své práci nevolá a doporučení nepoužívat je platí od verze 2.34.
Přibyl LoongArch32, zmizela 31bitová podpora s390
Ze zbytku vydání vyčnívá jedna věta pro programátory v jazyce C. Dokumentace nově říká, že příští verze glibc můžou zmírnit požadavky na zarovnání u malých alokací: malloc(1) tak jednou může vrátit ukazatel na lichou adresu, protože objekt velikosti 1 žádné větší zarovnání nepotřebuje. Kdo se spoléhá na to, že z alokátoru chodí adresy zarovnané jako dosud, má varování.
Matematické funkce cosh, sinh a tanh jsou převzaté z projektu CORE-MATH, který se zabývá správně zaokrouhlenými implementacemi. Makro assert zvládne kvůli chystanému C++26 víc argumentů oddělených čárkami. Na procesorech RISC-V dostalo vektorové varianty třináct funkcí pro práci s řetězci a pamětí. Na AArch64 přibyly vektorizované varianty dalších matematických funkcí a u rozšíření Guarded Control Stack se po jeho zapnutí operace s ním zamknou, aby program nemohl ochranu za běhu vypnout.
Podpora architektur se rozešla na dvě strany: přibyl 32bitový LoongArch, naopak 31bitová varianta s390 skončila. Zrušená je i volba překladu --enable-memory-tagging a s ní i příslušná funkce pro AArch64. Přibylo jazykové prostředí hrx_BR pro hunsrik, kterým se mluví v Brazílii.
Do systémů se novinky dostanou s dalším kolem vydání distribucí; Phoronix jmenuje Ubuntu 26.10 a Fedoru 45. Hlavní vývojová větev se mezitím otevřela pro verzi 2.45; zpráva o tom leží v archivu konference hned nad oznámením o vydání.