రస్ట్ భాషకు మద్దతుతో Linux కెర్నల్ కోసం పాచెస్ యొక్క ఎనిమిదవ వెర్షన్

Miguel Ojeda, Rust-for-Linux ప్రాజెక్ట్ రచయిత, Linux కెర్నల్ డెవలపర్‌ల పరిశీలన కోసం రస్ట్ భాషలో పరికర డ్రైవర్‌లను అభివృద్ధి చేయడానికి v8 భాగాల విడుదలను ప్రతిపాదించారు. ఇది సంస్కరణ సంఖ్య లేకుండా ప్రచురించబడిన మొదటి సంస్కరణను పరిగణనలోకి తీసుకుని, ప్యాచ్‌ల యొక్క సవరించిన సంస్కరణ. రస్ట్ మద్దతు ప్రయోగాత్మకంగా పరిగణించబడుతుంది, కానీ ఇప్పటికే linux-తదుపరి బ్రాంచ్‌లో చేర్చబడింది, 5.20/6.0 యొక్క పతనం విడుదలలో విలీనం చేయబడిందని పేర్కొంది మరియు కెర్నల్ సబ్‌సిస్టమ్‌లపై సంగ్రహణ లేయర్‌లను సృష్టించే పనిని ప్రారంభించడానికి తగినంత పరిణతి చెందింది, అలాగే డ్రైవర్‌లను వ్రాయడం. మరియు మాడ్యూల్స్. ఈ అభివృద్ధికి Google మరియు ISRG (ఇంటర్నెట్ సెక్యూరిటీ రీసెర్చ్ గ్రూప్) నిధులు సమకూరుస్తుంది, ఇది లెట్స్ ఎన్‌క్రిప్ట్ ప్రాజెక్ట్ స్థాపకుడు మరియు ఇంటర్నెట్ భద్రతను మెరుగుపరచడానికి HTTPS మరియు సాంకేతికతల అభివృద్ధిని ప్రోత్సహిస్తుంది.

కొత్త వెర్షన్‌లో:

  • టూల్‌కిట్ మరియు అలోక్ లైబ్రరీ యొక్క వేరియంట్, లోపాలు సంభవించినప్పుడు "పానిక్" స్థితిని సృష్టించే అవకాశం లేకుండా, రస్ట్ 1.62 విడుదల కోసం నవీకరించబడింది. మునుపు ఉపయోగించిన సంస్కరణతో పోలిస్తే, రస్ట్ టూల్‌కిట్ కెర్నల్ ప్యాచ్‌లలో ఉపయోగించిన const_fn_trait_bound ఫంక్షనాలిటీకి మద్దతును స్థిరీకరించింది.
  • బైండింగ్ కోడ్ ప్రత్యేక క్రేట్ ప్యాకేజీ "బైండింగ్స్"గా విభజించబడింది, ఇది ప్రధాన ప్యాకేజీ "కెర్నల్"కి మాత్రమే మార్పులు చేస్తే పునర్నిర్మాణాన్ని సులభతరం చేస్తుంది.
  • స్థూల “concat_idents!” అమలు విధానపరమైన స్థూల రూపంలో తిరిగి వ్రాయబడింది, ఇది concat_idents కార్యాచరణతో ముడిపడి ఉండదు మరియు స్థానిక వేరియబుల్స్‌కు సూచనలను ఉపయోగించడానికి అనుమతిస్తుంది.
  • “static_assert!” మాక్రో తిరిగి వ్రాయబడింది, స్థిరాంకాలకి బదులుగా ఏ సందర్భంలోనైనా “core::assert!()”ని ఉపయోగించడానికి అనుమతిస్తుంది.
  • మాక్రో "బిల్డ్_ఎర్రర్!" మాడ్యూల్‌ల కోసం “RUST_BUILD_ASSERT_{WARN,ALLOW}” మోడ్ సెట్ చేయబడినప్పుడు పని చేయడానికి స్వీకరించబడింది.
  • "kernel/configs/rust.config" సెట్టింగులతో ప్రత్యేక ఫైల్ జోడించబడింది.
  • స్థూల ప్రత్యామ్నాయాలలో ప్రాసెస్ చేయబడిన “*.i” ఫైల్‌లు “*.rsi”గా పేరు మార్చబడ్డాయి.
  • C కోడ్ కోసం ఉపయోగించిన వాటి కంటే భిన్నమైన ఆప్టిమైజేషన్ స్థాయిలతో రస్ట్ భాగాలను నిర్మించడానికి మద్దతు నిలిపివేయబడింది.
  • ఫైల్ సిస్టమ్‌లతో పని చేయడానికి బైండింగ్‌లను అందించే fs మాడ్యూల్ జోడించబడింది. రస్ట్‌లో వ్రాయబడిన సాధారణ ఫైల్ సిస్టమ్ యొక్క ఉదాహరణ అందించబడింది.
  • సిస్టమ్ క్యూలతో పని చేయడానికి వర్క్‌క్యూ మాడ్యూల్ జోడించబడింది (work_struct మరియు workqueue_struct కెర్నల్ స్ట్రక్చర్‌లపై బైండింగ్‌లను అందిస్తుంది).
  • అసమకాలిక ప్రోగ్రామింగ్ పద్ధతుల (అసింక్) అమలుతో kasync మాడ్యూల్ అభివృద్ధి కొనసాగింది. రస్ట్‌లో వ్రాయబడిన కోర్-లెవల్ TCP సర్వర్‌కి ఉదాహరణ జోడించబడింది.
  • [థ్రెడ్] హ్యాండ్లర్ రకాలు మరియు [థ్రెడెడ్]రిజిస్ట్రేషన్` రకాలను ఉపయోగించి రస్ట్ భాషలో అంతరాయాలను నిర్వహించగల సామర్థ్యం జోడించబడింది.
  • ఫైల్_ఆపరేషన్స్ స్ట్రక్చర్ వంటి ఫంక్షన్ పాయింటర్ల పట్టికలతో పని చేయడం సులభతరం చేయడానికి విధానపరమైన మాక్రో "#[vtable]" జోడించబడింది.
  • ద్విముఖ లింక్డ్ జాబితాల అమలు జోడించబడింది "unsafe_list::List".
  • రీడ్ లాక్ ప్రస్తుత థ్రెడ్‌కు కట్టుబడి ఉందో లేదో తనిఖీ చేయడానికి RCU (రీడ్-కాపీ-అప్‌డేట్) మరియు గార్డ్ రకానికి ప్రారంభ మద్దతు జోడించబడింది.
  • కెర్నల్ థ్రెడ్‌లను సృష్టించడానికి మరియు స్వయంచాలకంగా ప్రారంభించడానికి టాస్క్:: స్పాన్() ఫంక్షన్ జోడించబడింది. Task ::wake_up() పద్ధతిని కూడా జోడించారు.
  • జాప్యాలను ఉపయోగించడానికి మిమ్మల్ని అనుమతించే ఆలస్యం మాడ్యూల్ జోడించబడింది (msleep()పై రేపర్).

ప్రతిపాదిత మార్పులు డ్రైవర్లు మరియు కెర్నల్ మాడ్యూల్‌లను అభివృద్ధి చేయడానికి రస్ట్‌ని రెండవ భాషగా ఉపయోగించడం సాధ్యపడుతుంది. రస్ట్ సపోర్ట్ అనేది డిఫాల్ట్‌గా ప్రారంభించబడని ఒక ఐచ్ఛికంగా అందించబడుతుంది మరియు కెర్నల్‌కు అవసరమైన బిల్డ్ డిపెండెన్సీలలో రస్ట్‌ని చేర్చడానికి దారితీయదు. డ్రైవర్‌లను అభివృద్ధి చేయడానికి రస్ట్‌ని ఉపయోగించడం వలన మీరు తక్కువ ప్రయత్నంతో సురక్షితమైన మరియు మెరుగైన డ్రైవర్‌లను సృష్టించవచ్చు, మెమరీ ఏరియాని విడుదల చేసిన తర్వాత యాక్సెస్ చేయడం, శూన్య పాయింటర్‌లను డిఫరెన్సింగ్ చేయడం మరియు బఫర్ ఓవర్‌రన్‌లు వంటి సమస్యల నుండి విముక్తి పొందగలరు.

రిఫరెన్స్ చెకింగ్, ఆబ్జెక్ట్ యాజమాన్యం మరియు ఆబ్జెక్ట్ లైఫ్‌టైమ్ (స్కోప్)ను ట్రాక్ చేయడం, అలాగే కోడ్ అమలు సమయంలో మెమరీ యాక్సెస్ యొక్క ఖచ్చితత్వాన్ని మూల్యాంకనం చేయడం ద్వారా కంపైల్ సమయంలో మెమరీ-సేఫ్ హ్యాండ్లింగ్ రస్ట్‌లో అందించబడుతుంది. రస్ట్ పూర్ణాంకాల ఓవర్‌ఫ్లోల నుండి రక్షణను కూడా అందిస్తుంది, ఉపయోగించే ముందు వేరియబుల్ విలువలను తప్పనిసరిగా ప్రారంభించడం అవసరం, ప్రామాణిక లైబ్రరీలో లోపాలను మెరుగ్గా నిర్వహిస్తుంది, డిఫాల్ట్‌గా మార్పులేని సూచనలు మరియు వేరియబుల్స్ భావనను వర్తింపజేస్తుంది, లాజికల్ లోపాలను తగ్గించడానికి బలమైన స్టాటిక్ టైపింగ్‌ను అందిస్తుంది.

మూలం: opennet.ru

ఒక వ్యాఖ్యను జోడించండి