విడుదలైంది వైల్డ్ లింకర్ 0.9.0 — రస్ట్లో వ్రాయబడిన ఒక కొత్త అధిక-పనితీరు గల లింకర్. ఈ విడుదల గిట్హబ్లో జాబితా చేయబడింది. మే 21, XXX సంవత్సరాలఈ ప్రాజెక్ట్ పునరావృత అభివృద్ధిని వేగవంతం చేసే ఒక లింకర్గా రూపొందించబడింది: రచయితలు అంతిమంగా ఇంక్రిమెంటల్ లింకింగ్ను సాధించాలని కోరుకుంటున్నారు, అయినప్పటికీ అది ప్రస్తుత వెర్షన్లో ఇంకా అమలు చేయబడలేదు. ఈ కోడ్ ద్వంద్వ లైసెన్స్ క్రింద పంపిణీ చేయబడింది. అపాచీ 2.0 / MIT.
Wild 0.9 లో ప్రధాన మార్పు సపోర్ట్ లింకర్ ప్లగిన్ APIగోల్డ్ లింకర్లో ప్రవేశపెట్టబడిన మరియు GNU ld మరియు Mold ద్వారా కూడా మద్దతు ఇవ్వబడిన ఒక ఇంటర్ఫేస్. వైల్డ్ కోసం, ఇది మార్గాన్ని తెరుస్తుంది లింకర్-ప్లగిన్ LTO — లింకర్ ప్లగిన్ ద్వారా లింక్ టైమ్ ఆప్టిమైజేషన్లు. ఇది ప్రధానంగా C, C++, మరియు మిక్స్డ్-కోడ్ ప్రాజెక్ట్లకు ఉపయోగకరంగా ఉంటుందని డెవలపర్లు ప్రత్యేకంగా పేర్కొన్నారు, అయితే శుద్ధమైన రస్ట్ ప్రాజెక్ట్లు సాధారణంగా అంతర్గతంగా LTOని నిర్వహిస్తాయి. ఈ ఫీచర్కు మద్దతు ఇవ్వడంలో ఇప్పటికీ కొన్ని తెలిసిన సమస్యలు ఉన్నాయి, మరియు ప్లగిన్ ద్వారా లింక్ చేయడం నెమ్మదిగా ఉండవచ్చు.
0.9లోని పనిలో గణనీయమైన భాగం వైల్డ్ను ఆవల బదిలీ చేయడానికి సంబంధించిన సన్నాహాలకు సంబంధించింది. Linux/ELF. ELF-కు ప్రత్యేకమైన లాజిక్ను అబ్స్ట్రాక్షన్ల నుండి బయటకు తరలించడం జరిగింది, మరియు దానికి మద్దతు ఇచ్చే పని ప్రారంభమైంది. మాక్-ఓ и WebAssemblyఈ సామర్థ్యాలు ఇంకా ఆచరణాత్మక వినియోగానికి సిద్ధంగా లేవు, కానీ మొదటి అంశాలు ఇప్పటికే అందుబాటులోకి వచ్చాయి: Mach-O పార్సింగ్, సెక్షన్ మరియు సెగ్మెంట్ ప్రాసెసింగ్, సింబల్ టేబుల్, కోడ్ సిగ్నేచర్, ఫ్యాట్ బైనరీ, అలాగే wasm సెక్షన్లు, సింబల్స్ మరియు రీలోకేషన్లకు ప్రాథమిక మద్దతు.
వైల్డ్ లింకర్ 0.9లో కీలక మార్పులు:
లింకర్ ప్లగిన్లకు మద్దతు. లింకర్-ప్లగిన్ LTO కోసం మరియు కొన్ని GCC/GNU ld/Mold బిల్డ్ స్క్రిప్ట్లతో అనుకూలత కోసం అవసరమైన లింకర్ ప్లగిన్ APIలకు మద్దతు జోడించబడింది. అలాగే, హోల్-ఆర్కైవ్, థిన్LTO, ఓపెన్ ఫైల్ పరిమితి మరియు LTO సమయంలో డెడ్ కోడ్ తొలగింపుతో సహా ప్లగిన్ కాల్బ్యాక్లకు సంబంధించిన కొన్ని సమస్యలు పరిష్కరించబడ్డాయి.
లింకర్ స్క్రిప్ట్ల మద్దతులో భారీ విస్తరణ. PROVIDE మరియు PROVIDE_HIDDEN ఆదేశాలు, ASSERT పార్సింగ్ మరియు అమలు, MEMORY, ORIGIN, LENGTH, LOADADDR, ALIGNOF, SEGMENT_START, సంఖ్యాత్మక లిటరల్స్లో K మరియు M సఫిక్స్లకు మద్దతు, లాజికల్, బిట్వైస్ మరియు యూనరీ ఆపరేటర్లు, మరియు ఇన్పుట్ ఫైల్ పేర్ల ద్వారా సరిపోల్చడం వంటివి అమలు చేయబడ్డాయి. ఇది సిస్టమ్ సాఫ్ట్వేర్ మరియు లో-లెవల్ ప్రాజెక్ట్లలో తరచుగా కనిపించే సంక్లిష్టమైన లింక్ స్క్రిప్ట్లతో వైల్డ్ను అనుకూలతకు మరింత దగ్గరగా తీసుకువస్తుంది.
RISC-V, AArch64, x86-64 మరియు LoongArch64 కోసం మెరుగుదలలు. RISC-V కాల్ రిలాక్సేషన్, HI20 రిలాక్సేషన్, R_RISCV_ALIGN, వైరుధ్య ISA ఎక్స్టెన్షన్ల తనిఖీ, అదనపు AArch64 రీలోకేషన్లు, AArch64 కోసం రేంజ్-ఎక్స్టెన్షన్ థంక్లు, రిలాక్సేషన్లతో కూడిన అనేక x86-64 రీలోకేషన్ల నిర్వహణ, మరియు LoongArch64 కోసం రేంజ్ మరియు అలైన్మెంట్ స్పష్టీకరణలు జోడించబడ్డాయి.
కొత్త అనుకూలత ఎంపికలు. --dependency-file, --auxiliary, --exclude-libs, --enable-new-dtags, --disable-new-dtags, --trace, --nmagic, --compress-debug-sections, --pack-dynamic-relocs=relr, --use-android-relr-tags, మరియు స్పేస్-రహిత రూపం -o/path లకు మద్దతు జోడించబడింది.
స్థిరంగా కదిలే వస్తువుల ఉత్పత్తి. తదుపరి లింకింగ్లో పాల్గొనగలిగే మధ్యంతర ఆబ్జెక్ట్ ఫైల్స్ అయిన స్టాటిక్ రీలోకేటబుల్స్ను సృష్టించడానికి మద్దతు జోడించబడింది.
"వేగవంతమైన" విడుదలపై దృష్టి పెట్టకుండా పనితీరు మెరుగుదలలు. 0.9లో ఎటువంటి ప్రధాన పనితీరు మెరుగుదలలు లేవని, కానీ పనితీరులో క్షీణత కూడా లేదని రచయితలు స్పష్టంగా పేర్కొన్నారు. స్థానిక ఆప్టిమైజేషన్లలో వెర్షన్ స్క్రిప్ట్లలో నాన్-గ్లోబల్ మ్యాచర్ల కోసం ఒక ఫాస్ట్ పాత్, అటామిక్ ఆపరేషన్ల సంఖ్యలో తగ్గింపు, రిలాక్సేషన్ స్కాన్ల సమయంలో సెక్షన్ మరియు సింబల్ అడ్రస్ల సమాంతర గణన, మరియు ఇప్పటికే పరిష్కరించబడిన సెక్షన్ల పునఃప్రక్రియను తగ్గించడం వంటివి ఉన్నాయి.
అనేక అనుకూలత పరిష్కారాలు. బలహీనమైన నిర్వచించబడని చిహ్నాలు, .ctors/.dtors, RELRO, వెర్షన్ స్క్రిప్ట్లు, SFrame, IFUNC, --version/-v, నిర్వచించబడని చిహ్న దోషాలు, హెచ్చరికలు, డీబగ్ రీలోకేషన్లు, .eh_frame, SHT_SYMTAB_SHNDX, డైనమిక్ ఆబ్జెక్ట్ యొక్క స్టాటిక్ లింకింగ్, మరియు లింకర్ స్క్రిప్ట్లతో కూడిన అనేక సందర్భాల నిర్వహణను సరిచేయబడింది.
డాక్యుమెంటేషన్ మరియు ప్రాజెక్ట్ నిర్వహణ. ప్రవర్తనా నియమావళి, LLM వినియోగ విధానం, పాలనా పత్రాలు, లింకర్ స్క్రిప్ట్ల మద్దతు మాత్రిక, GCC 16.1తో -fuse-ld=wildను ఉపయోగించడానికి సూచనలు, మరియు బ్రూ (Brew) ద్వారా ఇన్స్టాలేషన్ వంటివి జోడించబడ్డాయి. ఈ రిపోజిటరీని wild-linker అనే ప్రత్యేక గిట్హబ్ ఆర్గనైజేషన్కు కూడా తరలించారు.
ప్రస్తుతానికి వైల్డ్ అధికారికంగా ప్రధానంగా దృష్టి సారించారు Linux మరియు ELF. ప్రాజెక్ట్ యొక్క README మద్దతును పేర్కొంటుంది. x86-64, ARM64, RISC-V riscv64gc మరియు ప్రారంభ మద్దతు లూంగ్ఆర్చ్64 న Linux; స్టాటిక్ బైనరీలు, స్టాటిక్-PIE, డైనమిక్గా లింక్ చేయబడిన ఎగ్జిక్యూటబుల్స్, మరియు .so ఫైల్లను నిర్మించగలదు, డీబగ్ సమాచారం, GNU జాబ్సర్వర్, మరియు కొన్ని లింకర్ స్క్రిప్ట్లతో పనిచేస్తుంది. ఇంక్రిమెంటల్ లింకింగ్, మరింత సంక్లిష్టమైన లింకర్ స్క్రిప్ట్లు, Mach-O, మరియు Windows ప్రస్తుతం నెరవేరని లేదా అసంపూర్తిగా ఉన్న అవకాశాలుగా వర్గీకరించబడ్డాయి.
ఆచరణాత్మకంగా చెప్పాలంటే, Wild 0.9 ఇప్పటికే ఉన్న బిల్డ్ ఎకోసిస్టమ్తో అనుకూలతను విస్తరిస్తుంది, ELF పరిధిని దాటి విస్తరించడం ప్రారంభిస్తుంది, మరియు పెద్ద C/C++ మరియు మిశ్రమ ప్రాజెక్ట్లలో లింకర్ వాడకాన్ని కష్టతరం చేసే సందర్భాలకు మద్దతును జోడిస్తుంది. రస్ట్ డెవలపర్లకు, భవిష్యత్ ఇంక్రిమెంటల్ లింకింగ్ కోసం Wild ఒక సంభావ్య ఆధారంగా ఆసక్తికరంగా ఉంటుంది, మరియు సిస్టమ్ డెవలపర్లకు, GNU ld, LLD, మరియు Mold లకు మరో వేగవంతమైన పోటీదారుగా నిలుస్తుంది.
మూలం: linux.org.ru
