మోల్డ్ లింకర్ యొక్క ఒక విడుదల ప్రచురించబడింది. దీనిని లైనక్స్ సిస్టమ్స్లో GNU లింకర్కు వేగవంతమైన, పారదర్శక ప్రత్యామ్నాయంగా ఉపయోగించవచ్చు. ఈ ప్రాజెక్ట్ను LLVM lld లింకర్ రచయిత అభివృద్ధి చేస్తున్నారు. మోల్డ్ యొక్క ముఖ్య లక్షణం దాని అత్యంత అధిక లింకింగ్ వేగం, ఇది GNU గోల్డ్ మరియు LLVM lld లింకర్లను గణనీయంగా అధిగమిస్తుంది (మోల్డ్లో లింకింగ్ అనేది cp యుటిలిటీతో ఫైళ్లను కాపీ చేసే వేగంలో సగం మాత్రమే ఉంటుంది). ఈ కోడ్ C++ (C++20) లో వ్రాయబడింది మరియు AGPLv3 లైసెన్స్ క్రింద లైసెన్స్ చేయబడింది.
కొత్త వెర్షన్లో:
- లింక్-టైమ్ ఆప్టిమైజేషన్ (LTO)కు మద్దతు జోడించబడింది. LTO ఆప్టిమైజేషన్లు బిల్డ్ ప్రక్రియలో పాల్గొన్న అన్ని ఫైళ్ల స్థితిని పరిగణనలోకి తీసుకుంటాయి, అయితే సాంప్రదాయ ఆప్టిమైజేషన్ పద్ధతులు ప్రతి ఫైల్ను విడివిడిగా ఆప్టిమైజ్ చేస్తాయి మరియు ఇతర ఫైళ్లలో నిర్వచించబడిన ఫంక్షన్ల కాల్ షరతులను విస్మరిస్తాయి. గతంలో, GCC లేదా LLVM ఇంటర్మీడియట్ కోడ్ (IR) ఫైళ్లు గుర్తించబడినప్పుడు, సంబంధిత ld.bfd లేదా ld.lld లింకర్లు పిలవబడేవి. ఇప్పుడు, Mold IR ఫైళ్లను స్వతంత్రంగా ప్రాసెస్ చేస్తుంది మరియు GNU ld మరియు GNU gold లింకర్లు కూడా ఉపయోగించే లింకర్ ప్లగిన్ APIని ఉపయోగిస్తుంది. LTO ఎనేబుల్ చేయడంతో, పనితీరు ఇతర లింకర్ల కంటే కొద్దిగా మాత్రమే మెరుగ్గా ఉంటుంది, ఎందుకంటే ఎక్కువ సమయం లింకింగ్ కంటే కోడ్ ఆప్టిమైజేషన్పైనే వెచ్చించబడుతుంది.
- హోస్ట్ మరియు టార్గెట్ ప్లాట్ఫారమ్లలో RISC-V (RV64) ఆర్కిటెక్చర్కు మద్దతు జోడించబడింది.
- పోస్ట్-లింకింగ్ ఆప్టిమైజేషన్లను తదుపరి వర్తింపజేయడం కోసం, ఇన్పుట్ ఫైల్ల నుండి అవుట్పుట్ ఫైల్లకు అడ్రస్ రీలోకేషన్ సెక్షన్లను కాపీ చేయడానికి వీలు కల్పించేందుకు "--emit-relocs" ఆప్షన్ జోడించబడింది.
- వర్చువల్ అడ్రెస్ స్పేస్లో సెక్షన్ల చిరునామాలను స్థిరపరిచే ముందు, వాటి క్రమాన్ని యాదృచ్ఛికం చేయడానికి "--shuffle-sections" అనే ఆప్షన్ జోడించబడింది.
- ఇన్పుట్ ఫైల్ల మధ్య డిపెండెన్సీ సమాచారాన్ని CSV ఫార్మాట్లో ప్రింట్ చేయడానికి "--print-dependencies" మరియు "--print-dependencies=full" ఆప్షన్లు జోడించబడ్డాయి. ఉదాహరణకు, లింక్ చేసేటప్పుడు కొన్ని ఆబ్జెక్ట్ ఫైల్లను చేర్చడానికి గల కారణాలను విశ్లేషించడానికి లేదా ఫైల్ల మధ్య డిపెండెన్సీలను తగ్గించడానికి పనిచేస్తున్నప్పుడు వీటిని ఉపయోగించవచ్చు.
- "--warn-once" మరియు "--warn-textrel" అనే ఆప్షన్లు జోడించబడ్డాయి.
- libxxhash పై ఆధారపడటం తొలగించబడింది.
మూలం: opennet.ru
