Linux కెర్నల్కు రస్ట్ డెవలప్మెంట్ టూల్స్ జోడించే సమస్యను చర్చించడానికి ప్రతిపాదన
నిక్ డెసాగ్నియర్ (నిక్ డెసాల్నియర్స్), అందించడానికి Googleలో పని చేసేవారు మద్దతు క్లింగ్ కంపైలర్ను ఉపయోగించి Linux కెర్నల్ను నిర్మించడం మరియు కూడా సహాయం రస్ట్ కంపైలర్లోని బగ్లను పరిష్కరించండి, అతను ఇచ్చింది ఒక సమావేశంలో నిర్వహించండి Linux ప్లంబర్స్ కాన్ఫరెన్స్ 2020 రస్ట్లో కెర్నల్ కాంపోనెంట్లను డెవలప్ చేయడం సాధ్యమయ్యేలా చర్చించడానికి సెషన్. నిక్ LLVMకి అంకితమైన మైక్రో-కాన్ఫరెన్స్ను నిర్వహిస్తున్నాడు మరియు కెర్నల్లో రస్ట్ సపోర్ట్ను అనుసంధానించడానికి సాధ్యమయ్యే సాంకేతిక అంశాలను చర్చించడం మంచిది అని నమ్ముతాడు (అతను ఇప్పటికే KBuild కోసం వర్కింగ్ ప్రోటోటైప్ను సిద్ధం చేసాడు) మరియు అలాంటి మద్దతు అవసరమా అని అర్థం చేసుకోండి అస్సలు జోడించబడాలి మరియు రస్ట్ వాడకంపై ఎలాంటి పరిమితులను అంగీకరించాలి.
ఓపెన్ సోర్స్ సమ్మిట్ మరియు ఎంబెడెడ్ లైనక్స్ కాన్ఫరెన్స్లో ఇటీవల జరిగిన చర్చలో, లైనస్ టోర్వాల్డ్స్ అని గుర్తుచేసుకుందాం. దానిని తోసిపుచ్చలేదు రస్ట్ వంటి భాషలలో నాన్-కోర్ కెర్నల్ సబ్సిస్టమ్ల అభివృద్ధికి (ఉదాహరణకు, డ్రైవర్లు) బైండింగ్ల ఆవిర్భావం. రస్ట్లో డ్రైవర్లను అభివృద్ధి చేయగల సామర్థ్యం తక్కువ ప్రయత్నంతో సురక్షితమైన మరియు మెరుగైన డ్రైవర్లను సృష్టించడానికి అనుమతిస్తుంది, ఫ్రీయింగ్ తర్వాత మెమరీ యాక్సెస్, శూన్య పాయింటర్ డిరిఫరెన్స్లు మరియు బఫర్ ఓవర్రన్లు వంటి సమస్యలు లేకుండా ఉంటాయి. ఈ లక్షణాన్ని అమలు చేయడానికి ఇప్పటికే అనేక మూడవ పక్ష ప్రాజెక్ట్లు ఉన్నాయి:
"ఫిష్ ఇన్ ఎ బారెల్" సంస్థ నుండి డెవలపర్లు సిద్ధం రస్ట్ లాంగ్వేజ్లో Linux కెర్నల్ కోసం లోడ్ చేయదగిన మాడ్యూల్లను వ్రాయడానికి టూల్కిట్, భద్రతను పెంచడానికి ఇంటర్ఫేస్లు మరియు కెర్నల్ నిర్మాణాలపై నైరూప్య లేయర్ల సమితిని ఉపయోగిస్తుంది. యుటిలిటీని ఉపయోగించి ఇప్పటికే ఉన్న కెర్నల్ హెడర్ ఫైల్ల ఆధారంగా లేయర్లు స్వయంచాలకంగా రూపొందించబడతాయి బైండ్జెన్. పొరలను నిర్మించడానికి క్లాంగ్ ఉపయోగించబడుతుంది. ఇంటర్లేయర్లకు అదనంగా, అసెంబుల్డ్ మాడ్యూల్స్ స్టాటిక్లిబ్ ప్యాకేజీని ఉపయోగిస్తాయి.
హాంకాంగ్లోని చైనీస్ యూనివర్సిటీ పరిశోధకులు అభివృద్ధి రస్ట్లోని ఎంబెడెడ్ సిస్టమ్లు మరియు ఇంటర్నెట్ ఆఫ్ థింగ్స్ పరికరాల కోసం డ్రైవర్లను అభివృద్ధి చేసే ప్రాజెక్ట్, ఇది కెర్నల్ హెడర్ ఫైల్ల ఆధారంగా లేయర్లను రూపొందించడానికి బైండ్జెన్ను కూడా ఉపయోగిస్తుంది. కెర్నల్లో మార్పులు చేయకుండా డ్రైవర్ భద్రతను మెరుగుపరచడానికి ఫ్రేమ్వర్క్ మిమ్మల్ని అనుమతిస్తుంది - కెర్నల్లో డ్రైవర్ల కోసం అదనపు ఐసోలేషన్ స్థాయిలను సృష్టించే బదులు, మరింత సురక్షితమైన రస్ట్ లాంగ్వేజ్ని ఉపయోగించి కంపైలేషన్ దశలో సమస్యలను నిరోధించాలని ప్రతిపాదించబడింది. సరైన ఆడిట్ నిర్వహించకుండా తొందరపడి యాజమాన్య డ్రైవర్లను అభివృద్ధి చేసే పరికరాల తయారీదారుల ద్వారా ఇటువంటి విధానం డిమాండ్లో ఉండవచ్చని భావించబడుతుంది.
ఫ్రేమ్వర్క్ డెవలపర్లు C2 రస్ట్ C కోడ్ని రస్ట్కి ప్రసారం చేయడానికి, ఖర్చు చేస్తారు కనిష్ట మాన్యువల్ సవరణలతో కెర్నల్ మాడ్యూల్లను మార్చడంపై ప్రయోగాలు. C2Rustలో ఇంకా సపోర్ట్ చేయని GCC ఎక్స్టెన్షన్లను ఉపయోగించే కోడ్ కెర్నల్లోని అనేక భాగాలలో ఉపయోగించడం గుర్తించబడిన సమస్యల్లో ఒకటి. ఈ సమస్యను పరిష్కరించడానికి, C2Rust GCC అట్రిబ్యూట్ల ఇన్లైన్, కోల్డ్, అలియాస్, యూజ్డ్ మరియు సెక్షన్కి మద్దతును జోడించాలని ప్లాన్ చేస్తుంది, అలాగే ఇన్లైన్ అసెంబ్లర్ యొక్క సామర్థ్యాలను విస్తరించండి మరియు సమలేఖనం చేయబడిన మరియు ప్యాక్ చేయబడిన నిర్మాణాలతో సమస్యలను పరిష్కరించడానికి (ఉదాహరణకు, xregs_state) . మాన్యువల్ పని అవసరమయ్యే ముఖ్యమైన సమస్యలు ఏమిటంటే, నాన్-ట్రివియల్ C మాక్రోలను రస్ట్ మాక్రోలుగా అనువదించలేకపోవడం మరియు రకాలను పునర్నిర్వచించాల్సిన అవసరం ఉంది, ఎందుకంటే C2Rust C రకాలను libc ప్యాకేజీలో నిర్వచనాలలోకి అనువదిస్తుంది, అయితే ఈ ప్యాకేజీ కెర్నల్ మాడ్యూళ్లలో ఉపయోగించబడదు.