క్లాంగ్ కంపైలర్ని ఉపయోగించి డెబియన్ గ్నూ/లైనక్స్ను నిర్మించే పనిలో పేరుగాంచిన సిల్వెస్ట్రే లెడ్రూ, రస్ట్ భాషలో తిరిగి వ్రాయబడిన ప్రత్యామ్నాయ యుటిలిటీస్, కోర్యుటిల్స్ని ఉపయోగించి విజయవంతమైన ప్రయోగాన్ని నివేదించారు. Coreutilsలో sort, cat, chmod, chown, chroot, cp, date, dd, echo, hostname, id, ln మరియు ls వంటి యుటిలిటీలు ఉంటాయి. కోర్యుటిల్స్ యొక్క రస్ట్ వెర్షన్ యొక్క డెబియన్లో ఏకీకరణ యొక్క మొదటి దశ కోసం, క్రింది లక్ష్యాలు సెట్ చేయబడ్డాయి:
- డెబియన్ మరియు ఉబుంటు కోసం కోర్యూటిల్స్కు రస్ట్ ప్రత్యామ్నాయాన్ని ప్యాకేజీ చేయండి.
- rust-coreutils ఉపయోగించి గ్నోమ్ డెస్క్టాప్తో డెబియన్ను బూట్ చేస్తోంది.
- రిపోజిటరీ నుండి 1000 అత్యంత ప్రజాదరణ పొందిన ప్యాకేజీలను ఇన్స్టాల్ చేస్తోంది.
- రస్ట్-కోరెటిల్స్తో కూడిన వాతావరణంలో Firefox, LLVM/Clang మరియు Linux కెర్నల్ మూలాల నుండి రూపొందించండి.
Rust/coreutils కోసం 100 కంటే ఎక్కువ ప్యాచ్లను సృష్టించిన తర్వాత, మేము అన్ని ఉద్దేశించిన లక్ష్యాలను విజయవంతంగా సాధించగలిగాము. కొనసాగుతున్న పనిలో తప్పిపోయిన యుటిలిటీలు మరియు ఎంపికల అమలు, కోడ్ యొక్క నాణ్యత మరియు ఏకరూపతను మెరుగుపరచడం, టెస్ట్ సూట్ను అభివృద్ధి చేయడం మరియు GNU Coreutils నుండి టెస్ట్ సూట్ను అమలు చేస్తున్నప్పుడు సంభవించే క్రాష్లను తొలగించడం వంటివి ఉన్నాయి (141లో 613 పరీక్షలు ఇప్పటివరకు విజయవంతంగా నడుస్తున్నాయి. )
రస్ట్-కోరెటిల్స్ ప్యాకేజీని సృష్టించేటప్పుడు, కోర్యూటిల్స్ ప్యాకేజీని భర్తీ చేయకూడదని నిర్ణయించారు, కానీ వాటికి సమాంతరంగా పని చేసే సామర్థ్యాన్ని అందించడానికి. రస్ట్ భాషలోని యుటిలిటీ ఎంపికలు /usr/lib/cargo/bin/లో ఇన్స్టాల్ చేయబడ్డాయి మరియు ఈ డైరెక్టరీని PATH ఎన్విరాన్మెంట్ వేరియబుల్కి జోడించడం ద్వారా యాక్టివేట్ చేయబడతాయి. రస్ట్ మరియు వివిధ చిన్న క్రేట్ ప్యాకేజీలతో సహా అన్ని బిల్డ్ డిపెండెన్సీలను రిపోజిటరీలోకి డౌన్లోడ్ చేయడం ద్వారా రస్ట్-కోరెటిల్స్ ప్యాకేజీని సృష్టించడం సంక్లిష్టంగా మారింది.
బూట్ ఇమేజ్ని సృష్టించడం సమస్య కాదు, అయితే రస్ట్-కోరెటిల్స్తో పర్యావరణం కోసం ప్యాకేజీలను స్వీకరించడానికి చాలా పని అవసరం, ఎందుకంటే అనేక పోస్ట్-ఇన్స్టాల్ స్క్రిప్ట్లు కోర్యూటిల్స్ సెట్ నుండి యుటిలిటీలను పిలుస్తాయి. అవసరమైన ఎంపికలు లేకపోవటం వలన అత్యధిక సంఖ్యలో సమస్యలు సంభవించాయి, ఉదాహరణకు, "cp" యుటిలిటీకి "--archive" మరియు "--no-dereference" ఎంపికలు లేవు, "ln" "-కి మద్దతు ఇవ్వలేదు. సాపేక్ష” ఎంపిక, mktemp “-t” , సమకాలీకరణ "-fs"లో, ఇన్స్టాల్లో - "--ఓనర్" మరియు "-గ్రూప్"కు మద్దతు ఇవ్వలేదు. ప్రవర్తనలో తేడాల కారణంగా ఇతర సమస్యలు తలెత్తాయి, ఉదాహరణకు, ఇన్పుట్ ఫైల్గా /dev/nullని పేర్కొనడానికి ఇన్స్టాల్ యుటిలిటీ మద్దతు ఇవ్వలేదు, mkdirకి “-పేరెంట్” బదులుగా “--పేరెంట్స్” ఎంపిక ఉంది, మొదలైనవి.
పెద్ద కోడ్ స్థావరాల అసెంబ్లీని పరీక్షిస్తున్నప్పుడు, పెద్ద సమస్యలు తలెత్తలేదు. Firefox మరియు LLVM/Clangలను నిర్మించేటప్పుడు, పైథాన్ స్క్రిప్ట్లు మరియు cmake ఉపయోగించబడతాయి, కాబట్టి coreutils స్థానంలో వాటిని ప్రభావితం చేయలేదు. Linux కెర్నల్ను రూపొందించడం సాపేక్షంగా సాఫీగా సాగింది, కేవలం రెండు సమస్యలు మాత్రమే క్రాప్ అవుతాయి: సింబాలిక్ లింక్తో chownని ఉపయోగిస్తున్నప్పుడు లోపం అవుట్పుట్ మరియు ln యుటిలిటీలో “-n” ఎంపిక లేకపోవడం.
మూలం: opennet.ru