ఆరు నెలల అభివృద్ధి తర్వాత, GNU C లైబ్రరీ (glibc) 2.41 సిస్టమ్ లైబ్రరీ విడుదల చేయబడింది, ఇది ISO C11 మరియు POSIX.1-2017 ప్రమాణాల అవసరాలకు పూర్తిగా అనుగుణంగా ఉంటుంది. కొత్త విడుదలను రూపొందించడంలో 79 మంది డెవలపర్లు పాల్గొన్నారు.
Glibc 2.41లో అమలు చేయబడిన కొన్ని మెరుగుదలలు:
- Linux ప్లాట్ఫారమ్ కోసం, కొత్త ఫంక్షన్లు sched_setattr మరియు sched_getattr జోడించబడ్డాయి, దీని ద్వారా మీరు టాస్క్ షెడ్యూలర్ పారామితులను సెట్ చేయవచ్చు/చదవవచ్చు. ఆచరణలో, SCHED_DEADLINE వంటి ప్రశ్న షెడ్యూలింగ్ విధానాలను కాన్ఫిగర్ చేయడానికి ఫంక్షన్లు మిమ్మల్ని అనుమతిస్తాయి, ఇవి ప్రాధాన్యతకు మించిన అదనపు పారామితులను ఉపయోగిస్తాయి.
- iconv యుటిలిటీకి ఇన్-ప్లేస్ ఎన్కోడింగ్ మార్పిడికి మద్దతు జోడించబడింది (ఇన్పుట్ మరియు అవుట్పుట్ ఫైల్ల పేరు ఒకేలా ఉంటే, iconv ఇప్పుడు స్వయంచాలకంగా తాత్కాలిక ఫైల్ను సృష్టిస్తుంది మరియు మార్పిడి పూర్తయిన తర్వాత దానితో అసలు ఫైల్ను భర్తీ చేస్తుంది).
- math.h హెడర్ ఫైల్కు C23 స్టాండర్డ్ (TS 18661-4:2015)లో ప్రవేశపెట్టిన త్రికోణమితి ఫంక్షన్లు జోడించబడ్డాయి: acospi, asinpi, atan2pi, atanpi, cospi, sinpi మరియు tanpi.
- ఫంక్షన్ల యొక్క ఆప్టిమైజ్డ్ వెర్షన్లు exp10m1f, exp2m1f, exprem1f, log10f, log2p1f, log1pf, log10p1f, cbrtf, erff, erfcf, lgammaf, tgammaf, tanf, acosf, ACOSHF, ACINF, ASINHF, ATANF, ATAN2F నుండి బదిలీ చేయబడ్డాయి ప్రాజెక్ట్, atanhf, coshf, sinhf మరియు tanhf.
- ఫంక్షన్ల నుండి రిటర్న్ అడ్రస్ల హార్డ్వేర్ రక్షణ కోసం ARM64 GCS (గార్డ్డ్ కంట్రోల్ స్టాక్) ఎక్స్టెన్షన్కు మద్దతు జోడించబడింది మరియు రిటర్న్-ఓరియెంటెడ్ ప్రోగ్రామింగ్ పద్ధతులను ఉపయోగించి దోపిడీలను నిరోధించడం (ROP - రిటర్న్-ఓరియంటెడ్ ప్రోగ్రామింగ్, ఇప్పటికే ఉన్న మెషీన్ సూచనల నుండి ఒక దోపిడీ ఏర్పడింది. నియంత్రణ రిటర్న్ సూచన). ARM64 GCS వినియోగదారు స్థలంలో ప్రక్రియలను రక్షించడానికి షాడో స్టాక్ టెక్నిక్ని ఉపయోగించడానికి మిమ్మల్ని అనుమతిస్తుంది - ఒక ఫంక్షన్కు నియంత్రణను బదిలీ చేసిన తర్వాత, రిటర్న్ చిరునామాలు ప్రాసెసర్ ద్వారా సాధారణ స్టాక్లో మాత్రమే కాకుండా, మార్చలేని ప్రత్యేక షాడో స్టాక్లో కూడా నిల్వ చేయబడతాయి. నేరుగా. ఫంక్షన్ నిష్క్రమించే ముందు, షాడో స్టాక్ నుండి రిటర్న్ అడ్రస్ పాప్ చేయబడుతుంది మరియు మెయిన్ స్టాక్ నుండి రిటర్న్ అడ్రస్కు వ్యతిరేకంగా చెక్ చేయబడుతుంది. GCS మద్దతుతో Glibcని నిర్మించడానికి కనీసం binutils 2.44 మరియు GCC 15 అవసరం.
- ARM64/AArch64 ఆర్కిటెక్చర్ కోసం కోడ్ ఉత్పత్తిని మెరుగుపరచడానికి మరియు గణిత విధుల పనితీరును మెరుగుపరచడానికి చాలా పని జరిగింది. వెక్టార్ సూచనలు (SVE, స్కేలబుల్ వెక్టర్ ఎక్స్టెన్షన్) మరియు SIMD పొడిగింపులు (నియాన్) ఉపయోగించి ఆప్టిమైజేషన్లు అమలు చేయబడ్డాయి.
- ARM64/AArch64 ప్రాసెసర్లతో ఉన్న సిస్టమ్ల కోసం, మెమరీ పేజీ పట్టికను మార్చకుండా మెమరీ పేజీలకు యాక్సెస్ని పరిమితం చేయడానికి ఉపయోగించే మెమరీ ప్రొటెక్షన్ కీస్ మెకానిజం కోసం మద్దతు జోడించబడింది.
- PowerPC64 ప్రాసెసర్లతో కూడిన సిస్టమ్ల కోసం, ఎక్స్ప్లోయిట్లలో రిటర్న్-ఓరియెంటెడ్ ప్రోగ్రామింగ్ ఉపయోగం నుండి రక్షించడానికి పొడిగించిన సూచనలకు మద్దతు జోడించబడింది.
- AMD టెక్నాలజీల ఆధారంగా చైనీస్ x86-64 హైగాన్ ప్రాసెసర్ల కోసం కొత్త arch_kind_hygon ఆర్కిటెక్చర్ రకం జోడించబడింది.
- glibc టెస్టింగ్ సూట్ గణనీయంగా విస్తరించబడింది, మునుపటి విడుదలతో పోలిస్తే పరీక్షల సంఖ్య 5408 నుండి 6232కి పెరిగింది.
- అసలు బిల్డ్ కోసం ఉపయోగించేవి కాకుండా C మరియు C++ కంపైలర్లను ఉపయోగించి glibc బిల్డ్లను పరీక్షించే సామర్థ్యం జోడించబడింది. ఉదాహరణకు, 'TEST_CC=»gcc-6.4.1″ TEST_CXX=»g++-6.4.1″'ని కాన్ఫిగర్ చేయండి మరియు 'TEST_CC=»cang» TEST_CXX=»cang++»ని కాన్ఫిగర్ చేయండి'.
- /etc/resolv.conf ఫైల్ మరియు RES_OPTIONS ఎన్విరాన్మెంట్ వేరియబుల్లో పేర్కొన్న ఎంపికలలో, ఇచ్చిన పేరుతో గతంలో సెట్ చేసిన ఎంపికను క్లియర్ చేయడానికి “-” ఉపసర్గను ఉపయోగించడం ఇప్పుడు సాధ్యమవుతుంది. ఉదాహరణకు, /etc/resolv.conf ఫైల్ను "options no-aaaa"కి సెట్ చేసినట్లయితే, "RES_OPTIONS=-no-aaaa" అనే ఎన్విరాన్మెంట్ వేరియబుల్తో ప్రాసెస్ను అమలు చేయడం వలన AAAAని పొందేందుకు DNS ప్రశ్నలను పంపడంపై ఉన్న నిషేధం తీసివేయబడుతుంది. రికార్డు.
- DNS రిసల్వర్కు “స్ట్రిక్ట్-ఎర్రర్” ఎంపికకు మద్దతు జోడించబడింది, దీనిలో getaddrinfo() ఫంక్షన్, చిరునామా రకం (AF_UNSPEC) స్పష్టంగా పేర్కొనబడకపోతే, A (IPv4) మరియు AAAA విలువలను పొందేందుకు ప్రయత్నిస్తుంది. (IPv6) మరొక DNS సర్వర్ నుండి రికార్డ్లు, మొదటి DNS సర్వర్కు A లేదా AAAA రికార్డ్ ప్రశ్న విఫలమైతే. అటువంటి పరిస్థితిలో "స్ట్రిక్ట్-ఎర్రర్" పేర్కొనకుండా, విజయవంతంగా ప్రాసెస్ చేయబడిన అభ్యర్థన ఫలితంగా పొందిన చిరునామా తిరిగి ఇవ్వబడుతుంది మరియు విఫలమైన అభ్యర్థన యొక్క విలువ విస్మరించబడుతుంది. ఉదాహరణకు, సర్వర్ "A" రికార్డ్ను అందించి, కానీ "AAAA"ని అభ్యర్థించేటప్పుడు ఎర్రర్ను అందించినట్లయితే, "స్ట్రిక్ట్-ఎర్రర్" ఎంపిక లేకుండా getaddrinfo వెంటనే IPv4 చిరునామాను మాత్రమే అందిస్తుంది మరియు "స్ట్రిక్ట్-ఎర్రర్" ఎంపికతో అది మరొక DNS సర్వర్కు ప్రశ్నలను పునరావృతం చేయడానికి ప్రయత్నిస్తుంది.
- యూనికోడ్ 16.0.0 స్పెసిఫికేషన్కు మద్దతుగా ఎన్కోడింగ్ డేటా, క్యారెక్టర్ టైప్ ఇన్ఫర్మేషన్ మరియు లిప్యంతరీకరణ పట్టికలు నవీకరించబడ్డాయి.
- డ్రాఫ్ట్ C2Y స్టాండర్డ్లో నిర్వచించిన సామర్థ్యాలను ప్రారంభించడానికి మాక్రో "_ISOC2Y_SOURCE" జోడించబడింది. ఇటువంటి లక్షణాలను _GNU_SOURCE మాక్రో ఉపయోగించి మరియు కంపైలర్ ఫ్లాగ్ల ద్వారా కూడా ప్రారంభించవచ్చు (“gcc -std=gnu2y”).
- వివిధ ఫంక్షన్ల (సాధారణంగా గణితానికి సంబంధించినవి) పనితీరును పర్యవేక్షించడానికి బెంచ్టెస్ట్ టూల్కిట్ని అమలు చేశారు.
- glibc.rtld.execstack సెట్టింగ్ జోడించబడింది, దీని ద్వారా మీరు ఎక్జిక్యూటబుల్ స్టాక్ వినియోగాన్ని స్పష్టంగా నిలిపివేయవచ్చు.
- ఎక్స్టెన్సిబుల్ ABI rseq (పునఃప్రారంభించదగిన సీక్వెన్సులు)కి మద్దతు జోడించబడింది, ఇది ఆపరేషన్ల వేగవంతమైన అటామిక్ ఎగ్జిక్యూషన్ కోసం మెకానిజమ్ను అందిస్తుంది (ఆపరేషన్కు మరొక థ్రెడ్ ద్వారా అంతరాయం కలిగితే, స్థితి రీసెట్ చేయబడుతుంది మరియు మళ్లీ అమలు చేయడానికి ప్రయత్నించబడుతుంది). కొత్త వెర్షన్ అసలైన ABIలో లేని పారలల్ ఎగ్జిక్యూషన్ ఐడెంటిఫైయర్లు (mm_cid, మెమరీ-మ్యాప్ కాన్కరెన్సీ ID) మరియు NUMA నోడ్ ఐడెంటిఫైయర్లు (node_id) వంటి అధునాతన ఫీచర్లను rseqలో ఉపయోగించడం సాధ్యం చేస్తుంది.
- బిగ్-ఎండియన్ ARC సిస్టమ్స్ (arceb-linux-gnu) కోసం పోర్ట్ నిలిపివేయబడింది.
- అసెర్ట్() ఫంక్షన్ని అమలు చేస్తున్నప్పుడు బఫర్ ఓవర్ఫ్లో కలిగించే దుర్బలత్వం (CVE-2025-039) పరిష్కరించబడింది. ప్రోగ్రామ్ పేరు (argv[0]) చాలా పెద్దగా ఉన్నప్పుడు ఓవర్ఫ్లో ఏర్పడుతుంది. బఫర్ వెలుపల 4 బైట్లు వ్రాయబడినందున సమస్య నిరపాయమైనదిగా పరిగణించబడుతుంది, వీటిలోని కంటెంట్లను దాడి చేసేవారు నియంత్రించలేరు. అదే సమయంలో, ప్రస్తుత అప్లికేషన్ యొక్క పేరును ప్రదర్శించేటప్పుడు లోపం కారణంగా సంభవించే డీబగ్గింగ్ ఫంక్షన్లలో ఒక దుర్బలత్వం కనిపించే వాస్తవం ఆసక్తికరంగా ఉంటుంది.
మూలం: opennet.ru
