రస్ట్-ఫర్- ప్రాజెక్ట్ రచయిత మిగెల్ ఓజెడాLinuxకెర్నల్ డెవలపర్ల పరిశీలన కోసం ప్రతిపాదించబడింది Linux రస్ట్లో డివైస్ డ్రైవర్లను అభివృద్ధి చేయడానికి v8 కాంపోనెంట్ల విడుదల. వెర్షన్ నంబర్ లేకుండా ప్రచురించబడిన మొదటి వెర్షన్ను పరిగణనలోకి తీసుకుంటే, ఇది ప్యాచ్ల యొక్క 8వ సవరణ. రస్ట్ సపోర్ట్ ప్రయోగాత్మకమైనదిగా పరిగణించబడుతున్నప్పటికీ, ఇది ఇప్పటికే linux-next బ్రాంచ్లో చేర్చబడింది మరియు ఫాల్ 5.20/6.0 విడుదలలో విలీనం చేయడానికి ప్రణాళిక చేయబడింది. కెర్నల్ సబ్సిస్టమ్లపై అబ్స్ట్రాక్షన్ లేయర్లను సృష్టించడంపై పని ప్రారంభించడానికి, అలాగే డ్రైవర్లు మరియు మాడ్యూళ్లను వ్రాయడానికి ఇది తగినంత పరిపక్వత చెందింది. ఈ అభివృద్ధికి గూగుల్ మరియు ISRG (ఇంటర్నెట్ సెక్యూరిటీ రీసెర్చ్ గ్రూప్) నిధులు సమకూరుస్తున్నాయి. ISRG అనేది Let's Encrypt ప్రాజెక్ట్ వ్యవస్థాపకుడు, ఇది HTTPSను మరియు ఇంటర్నెట్ భద్రతను మెరుగుపరిచే సాంకేతికతల అభివృద్ధిని ప్రోత్సహిస్తుంది.
కొత్త వెర్షన్లో:
- లోపాల వల్ల సంభవించే పానిక్ జనరేషన్లు లేని టూల్చెయిన్ మరియు అలోక్ లైబ్రరీ వేరియంట్ను రస్ట్ 1.62కు అప్డేట్ చేశారు. గతంలో ఉపయోగించిన వెర్షన్తో పోలిస్తే, రస్ట్ టూల్చెయిన్ ఇప్పుడు కెర్నల్ ప్యాచ్లలో ఉపయోగించే const_fn_trait_bound ఫంక్షనాలిటీకి మద్దతు ఇస్తుంది.
- బైండింగ్స్ కోడ్ "బైండింగ్స్" అనే ప్రత్యేక క్రేట్ ప్యాకేజీగా విభజించబడింది, ఇది ప్రధాన "కెర్నల్" ప్యాకేజీలో మాత్రమే మార్పులు చేసిన సందర్భంలో రీబిల్డింగ్ను సులభతరం చేస్తుంది.
- "concat_idents!" మాక్రో యొక్క ఇంప్లిమెంటేషన్ను, concat_idents ఫంక్షనాలిటీకి సంబంధం లేని మరియు లోకల్ వేరియబుల్స్కు రిఫరెన్స్లను ఉపయోగించడానికి అనుమతించే ఒక ప్రొసీజరల్ మాక్రోగా తిరిగి వ్రాయబడింది.
- స్థిరాంకాలకు బదులుగా ఏ సందర్భంలోనైనా "core::assert!()" ను ఉపయోగించడానికి వీలుగా "static_assert!" మాక్రో తిరిగి వ్రాయబడింది.
- మాడ్యూల్స్ కోసం "RUST_BUILD_ASSERT_{WARN,ALLOW}" మోడ్ సెట్ చేయబడినప్పుడు పనిచేసేలా "build_error!" మాక్రో స్వీకరించబడింది.
- "kernel/configs/rust.config" అనే ప్రత్యేక ఫైల్ను సెట్టింగ్లతో జోడించడం జరిగింది.
- మాక్రో ప్రత్యామ్నాయాలలో ప్రాసెస్ చేయబడిన "*.i" ఫైల్లు "*.rsi"గా పేరు మార్చబడ్డాయి.
- C కోడ్ కోసం ఉపయోగించే వాటికి భిన్నమైన ఆప్టిమైజేషన్ స్థాయిలతో రస్ట్ కాంపోనెంట్లను నిర్మించడానికి మద్దతు నిలిపివేయబడింది.
- ఫైల్ సిస్టమ్లతో పనిచేయడానికి బైండింగ్లను అందించే fs మాడ్యూల్ జోడించబడింది. రస్ట్లో వ్రాయబడిన ఒక సాధారణ ఫైల్ సిస్టమ్ ఉదాహరణ అందించబడింది.
- సిస్టమ్ క్యూలతో పని చేయడానికి వర్క్క్యూ మాడ్యూల్ జోడించబడింది (ఇది కెర్నల్ స్ట్రక్చర్లైన work_struct మరియు workqueue_struct లకు బైండింగ్లను అందిస్తుంది).
- అసింక్రోనస్ ప్రోగ్రామింగ్ (async) పద్ధతులను అమలు చేస్తూ, kasync మాడ్యూల్ అభివృద్ధి చేయబడుతూనే ఉంది. రస్ట్లో వ్రాయబడిన కెర్నల్-స్థాయి TCP సర్వర్ యొక్క ఒక ఉదాహరణ జోడించబడింది.
- [Threaded]Handler traits మరియు [Threaded]Registration types ఉపయోగించి రస్ట్ భాషలో ఇంటరప్ట్లను నిర్వహించే సామర్థ్యాన్ని జోడించడం జరిగింది.
- file_operations స్ట్రక్చర్ వంటి ఫంక్షన్ పాయింటర్ల పట్టికలతో పని చేయడాన్ని సులభతరం చేయడానికి "#[vtable]" అనే ప్రొసీజరల్ మాక్రోను జోడించడం జరిగింది.
- "unsafe_list::List" అనే డబుల్లీ లింక్డ్ లిస్ట్ ఇంప్లిమెంటేషన్ జోడించబడింది.
- RCU (రీడ్-కాపీ-అప్డేట్) కోసం ప్రాథమిక మద్దతు మరియు ప్రస్తుత థ్రెడ్కు రీడ్ లాక్ బంధించబడిందో లేదో తనిఖీ చేయడానికి ఒక గార్డ్ రకం జోడించబడింది.
- కెర్నల్ థ్రెడ్లను సృష్టించడానికి మరియు స్వయంచాలకంగా ప్రారంభించడానికి Task::spawn() ఫంక్షన్ జోడించబడింది. Task::wake_up() మెథడ్ కూడా జోడించబడింది.
- డిలే మాడ్యూల్ జోడించబడింది, ఇది డిలేలను ఉపయోగించడానికి అనుమతిస్తుంది (msleep() పై వ్రాపర్).
ప్రతిపాదిత మార్పులు డ్రైవర్లు మరియు కెర్నల్ మాడ్యూల్లను అభివృద్ధి చేయడానికి రస్ట్ని రెండవ భాషగా ఉపయోగించడం సాధ్యపడుతుంది. రస్ట్ సపోర్ట్ అనేది డిఫాల్ట్గా ప్రారంభించబడని ఒక ఐచ్ఛికంగా అందించబడుతుంది మరియు కెర్నల్కు అవసరమైన బిల్డ్ డిపెండెన్సీలలో రస్ట్ని చేర్చడానికి దారితీయదు. డ్రైవర్లను అభివృద్ధి చేయడానికి రస్ట్ని ఉపయోగించడం వలన మీరు తక్కువ ప్రయత్నంతో సురక్షితమైన మరియు మెరుగైన డ్రైవర్లను సృష్టించవచ్చు, మెమరీ ఏరియాని విడుదల చేసిన తర్వాత యాక్సెస్ చేయడం, శూన్య పాయింటర్లను డిఫరెన్సింగ్ చేయడం మరియు బఫర్ ఓవర్రన్లు వంటి సమస్యల నుండి విముక్తి పొందగలరు.
రిఫరెన్స్ చెకింగ్, ఆబ్జెక్ట్ యాజమాన్యం మరియు ఆబ్జెక్ట్ లైఫ్టైమ్ (స్కోప్)ను ట్రాక్ చేయడం, అలాగే కోడ్ అమలు సమయంలో మెమరీ యాక్సెస్ యొక్క ఖచ్చితత్వాన్ని మూల్యాంకనం చేయడం ద్వారా కంపైల్ సమయంలో మెమరీ-సేఫ్ హ్యాండ్లింగ్ రస్ట్లో అందించబడుతుంది. రస్ట్ పూర్ణాంకాల ఓవర్ఫ్లోల నుండి రక్షణను కూడా అందిస్తుంది, ఉపయోగించే ముందు వేరియబుల్ విలువలను తప్పనిసరిగా ప్రారంభించడం అవసరం, ప్రామాణిక లైబ్రరీలో లోపాలను మెరుగ్గా నిర్వహిస్తుంది, డిఫాల్ట్గా మార్పులేని సూచనలు మరియు వేరియబుల్స్ భావనను వర్తింపజేస్తుంది, లాజికల్ లోపాలను తగ్గించడానికి బలమైన స్టాటిక్ టైపింగ్ను అందిస్తుంది.
మూలం: opennet.ru
