ఆరు నెలల అభివృద్ధి తర్వాత, GNU C లైబ్రరీ (glibc) 2.36 సిస్టమ్ లైబ్రరీ విడుదల చేయబడింది, ఇది ISO C11 మరియు POSIX.1-2017 ప్రమాణాల అవసరాలకు పూర్తిగా అనుగుణంగా ఉంటుంది. కొత్త విడుదలలో 59 డెవలపర్ల నుండి పరిష్కారాలు ఉన్నాయి.
Glibc 2.36లో అమలు చేయబడిన కొన్ని మెరుగుదలలు:
- కొత్త DT_RELR (రిలేటివ్ రిలొకేషన్) అడ్రస్ రీలొకేషన్ ఫార్మాట్కు మద్దతు జోడించబడింది, ఇది PIE (పొజిషన్-ఇండిపెండెంట్ ఎక్జిక్యూటబుల్స్) మోడ్లో లింక్ చేయబడిన షేర్డ్ ఆబ్జెక్ట్లు మరియు ఎక్జిక్యూటబుల్ ఫైల్లలో సంబంధిత రీలొకేషన్ల పరిమాణాన్ని తగ్గించడానికి మిమ్మల్ని అనుమతిస్తుంది. ELF ఫైల్స్లో DT_RELR ఫీల్డ్ని ఉపయోగించడం కోసం లింకర్లోని "-z pack-relative-relocs" ఎంపికకు మద్దతు అవసరం, ఇది binutils 2.38 విడుదలలో పరిచయం చేయబడింది.
- వేదిక కోసం Linux pidfd_open, pidfd_getfd, మరియు pidfd_send_signal ఫంక్షన్లు అమలు చేయబడ్డాయి. ఇవి pidfd ఫంక్షనాలిటీకి యాక్సెస్ను అందిస్తాయి, ఇది PID పునరుపయోగంతో కూడిన పరిస్థితులను నిర్వహించడంలో సహాయపడుతుంది, తద్వారా పర్యవేక్షించబడే ఫైల్లను యాక్సెస్ చేసే ప్రాసెస్లను మరింత ఖచ్చితంగా గుర్తించవచ్చు (pidfd ఒక నిర్దిష్ట ప్రాసెస్తో అనుబంధించబడి ఉంటుంది మరియు మారదు, అయితే ఒక PIDతో అనుబంధించబడిన ప్రస్తుత ప్రాసెస్ ముగిసిన తర్వాత, ఆ PIDని మరొక ప్రాసెస్తో అనుబంధించవచ్చు).
- వేదిక కోసం Linux pidfdని ఉపయోగించి లక్ష్య ప్రాసెస్ను గుర్తిస్తూ, ఒక ప్రాసెస్ మరొక ప్రాసెస్ తరపున madvise() సిస్టమ్ కాల్ను అమలు చేయడానికి అనుమతించే process_madvise() ఫంక్షన్ జోడించబడింది. ప్రాసెస్ యొక్క మెమరీ నిర్వహణను ఆప్టిమైజ్ చేయడానికి, మెమరీ వినియోగ వివరాల గురించి కెర్నల్కు తెలియజేయడానికి madvise()ను ఉపయోగించవచ్చు; ఉదాహరణకు, అదనపు ఖాళీ మెమరీ విడుదలను ప్రారంభించడానికి కెర్నల్ అందించిన సమాచారాన్ని ఉపయోగించవచ్చు. ఆప్టిమైజేషన్ కోసం అవసరమైన సమాచారం ప్రస్తుత ప్రాసెస్కు తెలియని పరిస్థితులలో, మరియు అది ఒక ప్రత్యేక బ్యాక్గ్రౌండ్ కంట్రోల్ ప్రాసెస్ ద్వారా సమన్వయం చేయబడినప్పుడు, మరొక ప్రాసెస్ ద్వారా madvise()ను కాల్ చేయడం అవసరం కావచ్చు; ఈ ప్రాసెస్, ప్రాసెస్ల నుండి ఉపయోగించని మెమరీ విడుదలను స్వతంత్రంగా ప్రారంభించగలదు.
- వేదిక కోసం Linux ముగిస్తున్న ప్రాసెస్ నుండి మెమరీ విడుదలను వేగవంతం చేయడానికి process_mrelease() ఫంక్షన్ జోడించబడింది. సాధారణ పరిస్థితులలో, వనరుల విడుదల మరియు ప్రాసెస్ ముగింపు తక్షణమే జరగవు మరియు వివిధ కారణాల వల్ల ఆలస్యం కావచ్చు, ఇది oomd (systemd ద్వారా అందించబడినది) వంటి యూజర్-స్పేస్ మెమరీ ఒత్తిడి హెచ్చరిక వ్యవస్థలకు ఆటంకం కలిగిస్తుంది. process_mreleaseను పిలవడం ద్వారా, అటువంటి వ్యవస్థలు బలవంతంగా ముగించబడిన ప్రాసెస్ల నుండి మెమరీ పునరుద్ధరణను మరింత ఊహించదగిన రీతిలో ప్రారంభించగలవు.
- "no-aaaa" ఎంపికకు మద్దతు DNS పరిష్కర్త యొక్క అంతర్నిర్మిత అమలుకు జోడించబడింది, ఇది AAAA రికార్డుల కోసం DNS ప్రశ్నలను పంపడాన్ని నిలిపివేయడానికి మిమ్మల్ని అనుమతిస్తుంది (హోస్ట్ పేరు ద్వారా IPv6 చిరునామాను నిర్ణయించడం), NSSని అమలు చేయడంతో సహా సమస్య నిర్ధారణను సులభతరం చేయడానికి getaddrinfo() వంటి విధులు. AI_PASSIVE ఫ్లాగ్తో /etc/hosts మరియు getaddrinfo()కి కాల్లలో నిర్వచించబడిన IPv6 చిరునామా బైండింగ్ల ప్రాసెసింగ్ను ఈ ఎంపిక ప్రభావితం చేయదు.
- వేదిక కోసం Linux మౌంట్ నేమ్స్పేస్లకు సంబంధించి ఫైల్సిస్టమ్ మౌంటింగ్ను నిర్వహించడానికి కొత్త కెర్నల్ APIకి యాక్సెస్ను అందించే fsopen, fsmount, move_mount, fsconfig, fspick, open_tree, మరియు mount_setattr ఫంక్షన్లు జోడించబడ్డాయి. గతంలో సాధారణ mount() ఫంక్షన్ను ఉపయోగించి నిర్వహించబడిన వివిధ మౌంటింగ్ దశలను (సూపర్బ్లాక్ను ప్రాసెస్ చేయడం, ఫైల్సిస్టమ్ సమాచారాన్ని పొందడం, మౌంట్ చేయడం మరియు మౌంట్ పాయింట్కు జోడించడం) ఈ ఫంక్షన్లు విడివిడిగా ప్రాసెస్ చేయడానికి అనుమతిస్తాయి. ఈ ప్రత్యేక ఫంక్షన్లు మరింత సంక్లిష్టమైన మౌంటింగ్ దృశ్యాలను సాధ్యం చేస్తాయి మరియు సూపర్బ్లాక్ను పునర్వ్యవస్థీకరించడం, ఎంపికలను ప్రారంభించడం, మౌంట్ పాయింట్ను మార్చడం మరియు వేరొక నేమ్స్పేస్కు మారడం వంటి ప్రత్యేక కార్యకలాపాలను అనుమతిస్తాయి. అంతేకాకుండా, విడివిడిగా ప్రాసెస్ చేయడం వలన ఎర్రర్ కోడ్ల కారణాలను కచ్చితంగా నిర్ధారించడానికి మరియు overlayfs వంటి బహుళపొరల ఫైల్సిస్టమ్ల కోసం బహుళ మూలాలను పేర్కొనడానికి వీలవుతుంది.
- ASCIIకి బదులుగా UTF-8 ఎన్కోడింగ్లో సరఫరా చేయబడిన లొకేల్ డెఫినిషన్ ఫైల్లను ప్రాసెస్ చేయడానికి localedef మద్దతునిస్తుంది.
- బహుళ-బైట్ mbrtoc8 మరియు c8rtomb ఎన్కోడింగ్లను ISO C2X N2653 మరియు C++20 P0482R6 స్పెసిఫికేషన్లకు మార్చడానికి విధులు జోడించబడ్డాయి.
- డ్రాఫ్ట్ ISO C8X N2 ప్రమాణంలో నిర్వచించబడిన char2653_t రకానికి మద్దతు జోడించబడింది.
- arc4random, arc4random_buf మరియు arc4random_uniform ఫంక్షన్లు జోడించబడ్డాయి, ఇవి గెట్రాండమ్ సిస్టమ్ కాల్పై రేపర్లను అందిస్తాయి మరియు అధిక-నాణ్యత సూడోరాండమ్ నంబర్లను అందించే /dev/urandom ఇంటర్ఫేస్.
- ప్లాట్ఫారమ్పై పని చేస్తున్నప్పుడు Linux లూంగ్సన్ 3 5000 ప్రాసెసర్లలో ఉపయోగించే లూంగ్ఆర్చ్ ఇన్స్ట్రక్షన్ సెట్ ఆర్కిటెక్చర్ (ISA)కు మద్దతు అమలు చేయబడింది. ఈ ఆర్కిటెక్చర్, MIPS మరియు RISC-Vలను పోలిన ఒక కొత్త RISC ISAను అమలు చేస్తుంది. ప్రస్తుతం, లూంగ్ఆర్చ్ యొక్క 64-బిట్ వెర్షన్ (LA64)కు మాత్రమే మద్దతు అందుబాటులో ఉంది. దీనికి కనీసం binutils 2.38, GCC 12, మరియు కెర్నల్ అవసరం. Linux <span style="font-family: arial; ">10</span>
- ప్రీలింక్ మెకానిజం, అలాగే దాని అనుబంధిత LD_TRACE_PRELINKING మరియు LD_USE_LOAD_BIAS ఎన్విరాన్మెంట్ వేరియబుల్స్ మరియు లింకర్ సామర్థ్యాలు నిలిపివేయబడ్డాయి మరియు భవిష్యత్ విడుదలలో తీసివేయబడతాయి.
- కెర్నల్ వెర్షన్ను తనిఖీ చేసే కోడ్ తొలగించబడింది Linux మరియు LD_ASSUME_KERNEL ఎన్విరాన్మెంట్ వేరియబుల్ను ప్రాసెస్ చేయడం. Glibc సంకలనం సమయంలో మద్దతు ఇచ్చే కనీస కెర్నల్ వెర్షన్ NT_GNU_ABI_TAG ELF ఫీల్డ్ ద్వారా నిర్ణయించబడుతుంది.
- వేదికపై Linux LD_LIBRARY_VERSION ఎన్విరాన్మెంట్ వేరియబుల్ కు మద్దతు నిలిపివేయబడింది.
మూలం: opennet.ru
