మోల్డ్ లింకర్ యొక్క విడుదల ప్రచురించబడింది, ఇది Linux సిస్టమ్లలో 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లో కూడా ఉపయోగించే లింకర్ ప్లగిన్ APIని ఉపయోగిస్తుంది. బంగారు లింకర్లు. ప్రారంభించబడినప్పుడు, LTO ఇతర లింకర్ల కంటే స్వల్పంగా మాత్రమే వేగంగా ఉంటుంది, ఎందుకంటే ఎక్కువ సమయం లింక్ చేయడం కంటే కోడ్ ఆప్టిమైజేషన్లను అమలు చేయడానికి వెచ్చిస్తారు.
- హోస్ట్ మరియు టార్గెట్ ప్లాట్ఫారమ్లలో RISC-V (RV64) ఆర్కిటెక్చర్కు మద్దతు జోడించబడింది.
- పోస్ట్-లింకింగ్ దశలో ఆప్టిమైజేషన్ల తదుపరి అప్లికేషన్ కోసం ఇన్పుట్ ఫైల్ల నుండి అవుట్పుట్ ఫైల్లకు రీలొకేషన్ విభాగాలను కాపీ చేయడాన్ని ఎనేబుల్ చేయడానికి “--emit-relocs” ఎంపిక జోడించబడింది.
- వర్చువల్ అడ్రస్ స్పేస్లో వాటి చిరునామాలను ఫిక్సింగ్ చేయడానికి ముందు విభాగాల క్రమాన్ని యాదృచ్ఛికంగా మార్చడానికి “--shuffle-sections” ఎంపిక జోడించబడింది.
- ఇన్పుట్ ఫైల్ల మధ్య డిపెండెన్సీల గురించి CSV ఫార్మాట్ సమాచారాన్ని అవుట్పుట్ చేయడానికి “--print-dependencies” మరియు “--print-dependencies=full” ఎంపికలు జోడించబడ్డాయి, ఉదాహరణకు, నిర్దిష్ట ఆబ్జెక్ట్ ఫైల్లను లింక్ చేసేటప్పుడు కనెక్షన్ కోసం కారణాలను విశ్లేషించడానికి వీటిని ఉపయోగించవచ్చు. లేదా ఫైళ్ల మధ్య కనిష్ట పని డిపెండెన్సీలను నిర్వహిస్తున్నప్పుడు.
- "--వార్న్-ఒన్స్" మరియు "--వార్న్-టెక్స్ట్రెల్" ఎంపికలు జోడించబడ్డాయి.
- libxxhashపై ఆధారపడటం తీసివేయబడింది.
మూలం: opennet.ru