మొజిల్లా ప్రాజెక్ట్ ద్వారా స్థాపించబడిన రస్ట్ 1.65 సాధారణ-ప్రయోజన ప్రోగ్రామింగ్ లాంగ్వేజ్ విడుదల, కానీ ఇప్పుడు స్వతంత్ర లాభాపేక్ష లేని సంస్థ రస్ట్ ఫౌండేషన్ ఆధ్వర్యంలో అభివృద్ధి చేయబడింది, ప్రచురించబడింది. భాష మెమరీ భద్రతపై దృష్టి పెడుతుంది మరియు చెత్త సేకరించేవాడు మరియు రన్టైమ్ (ప్రామాణిక లైబ్రరీ యొక్క ప్రాథమిక ప్రారంభ మరియు నిర్వహణకు రన్టైమ్ తగ్గించబడింది) వినియోగాన్ని నివారించేటప్పుడు అధిక ఉద్యోగ సమాంతరతను సాధించడానికి మార్గాలను అందిస్తుంది.
రస్ట్ యొక్క మెమరీ హ్యాండ్లింగ్ పద్ధతులు పాయింటర్లను మానిప్యులేట్ చేసేటప్పుడు డెవలపర్ను లోపాల నుండి కాపాడతాయి మరియు తక్కువ-స్థాయి మెమరీ హ్యాండ్లింగ్ కారణంగా తలెత్తే సమస్యల నుండి రక్షిస్తాయి, అనగా మెమరీ ప్రాంతాన్ని విడుదల చేసిన తర్వాత యాక్సెస్ చేయడం, శూన్య పాయింటర్లను డిఫెరెన్సింగ్ చేయడం, బఫర్ ఓవర్రన్లు మొదలైనవి. లైబ్రరీలను పంపిణీ చేయడానికి, బిల్డ్లను అందించడానికి మరియు డిపెండెన్సీలను నిర్వహించడానికి, ప్రాజెక్ట్ కార్గో ప్యాకేజీ మేనేజర్ను అభివృద్ధి చేస్తుంది. లైబ్రరీలను హోస్ట్ చేయడానికి crates.io రిపోజిటరీకి మద్దతు ఉంది.
రిఫరెన్స్ చెకింగ్, ఆబ్జెక్ట్ యాజమాన్యాన్ని ట్రాక్ చేయడం, ఆబ్జెక్ట్ జీవితకాలాన్ని (స్కోప్లు) ట్రాక్ చేయడం మరియు కోడ్ అమలు సమయంలో మెమరీ యాక్సెస్ యొక్క ఖచ్చితత్వాన్ని అంచనా వేయడం ద్వారా కంపైల్ సమయంలో రస్ట్లో మెమరీ భద్రత అందించబడుతుంది. రస్ట్ పూర్ణాంకాల ఓవర్ఫ్లోల నుండి రక్షణను కూడా అందిస్తుంది, ఉపయోగించే ముందు వేరియబుల్ విలువలను తప్పనిసరిగా ప్రారంభించడం అవసరం, ప్రామాణిక లైబ్రరీలో లోపాలను మెరుగ్గా నిర్వహిస్తుంది, డిఫాల్ట్గా మార్పులేని సూచనలు మరియు వేరియబుల్స్ భావనను వర్తింపజేస్తుంది, లాజికల్ లోపాలను తగ్గించడానికి బలమైన స్టాటిక్ టైపింగ్ను అందిస్తుంది.
ప్రధాన ఆవిష్కరణలు:
- జెనరిక్ అనుబంధ రకాలకు (GAT, జెనరిక్ అసోసియేటెడ్ రకాలు) మద్దతు జోడించబడింది, ఇది మరొక రకంతో అనుబంధించబడిన టైప్ మారుపేర్లను సృష్టించడం సాధ్యం చేస్తుంది మరియు టైప్ కన్స్ట్రక్టర్లను లక్షణాలతో అనుబంధించడానికి మిమ్మల్ని అనుమతిస్తుంది. లక్షణం ఫూ {టైప్ బార్<'x>; }
- "లెట్ ... else" వ్యక్తీకరణ అమలు చేయబడింది, ఇది "లెట్" వ్యక్తీకరణ లోపల నేరుగా నమూనా సరిపోలే పరిస్థితిని తనిఖీ చేయడానికి మరియు నమూనా సరిపోలకపోతే ఏకపక్ష కోడ్ని అమలు చేయడానికి మిమ్మల్ని అనుమతిస్తుంది. సరే(కౌంట్) = u64::from_str(count_str) else {panic!("పూర్ణాంకాన్ని అన్వయించలేము: '{count_str}'"); };
- రద్దు చేయవలసిన బ్లాక్ను గుర్తించడానికి బ్లాక్ పేరు (లేబుల్) ఉపయోగించి, పేరున్న బ్లాక్లను ముందుగానే నిష్క్రమించడానికి బ్రేక్ స్టేట్మెంట్ వినియోగాన్ని అనుమతించండి. లెట్ ఫలితం = 'బ్లాక్: {do_thing(); if condition_not_met() {బ్లాక్ 1; } చేయి_తదుపరి_పని(); if condition_not_met() {బ్రేక్ 'బ్లాక్ 2; } do_last_thing(); 3 };
- Linux కోసం, గతంలో macOS ప్లాట్ఫారమ్ కోసం మాత్రమే అందుబాటులో ఉన్న డీబగ్గింగ్ సమాచారాన్ని (split-debuginfo) విడిగా సేవ్ చేసే సామర్థ్యం జోడించబడింది. "-Csplit-debuginfo=unpacked" ఎంపికను పేర్కొన్నప్పుడు, DWARF ఆకృతిలోని debuginfo డేటా ".dwo" పొడిగింపుతో అనేక ప్రత్యేక ఆబ్జెక్ట్ ఫైల్లలో సేవ్ చేయబడుతుంది. "-Csplit-debuginfo=packed"ని పేర్కొనడం వలన ప్రాజెక్ట్ కోసం మొత్తం debuginfo డేటాను కలిగి ఉన్న ".dwp" ఆకృతిలో ఒకే ప్యాకేజీ సృష్టించబడుతుంది. ELF ఆబ్జెక్ట్ల .debug_* విభాగంలో నేరుగా డీబగిన్ఫోను ఏకీకృతం చేయడానికి, మీరు "-Csplit-debuginfo=off" ఎంపికను ఉపయోగించవచ్చు.
- API యొక్క కొత్త భాగం స్థిరమైన వర్గానికి తరలించబడింది, ఇందులో పద్ధతులు మరియు లక్షణాల అమలులు స్థిరీకరించబడ్డాయి:
- std::backtrace::Backtrace
- బౌండ్:: as_ref
- std::io::read_to_string
- <*const T>::cast_mut
- <*mut T>::cast_const
- స్థిరాంకాలకి బదులుగా ఏదైనా సందర్భంలో ఉపయోగించగల అవకాశాన్ని నిర్ణయించే “const” లక్షణం <*const T&>::offset_from మరియు <*mut T>::offset_from ఫంక్షన్లలో ఉపయోగించబడుతుంది.
- LSP (లాంగ్వేజ్ సర్వర్ ప్రోటోకాల్) ప్రోటోకాల్ అమలును రస్ట్-ఎనలైజర్కి బదిలీ చేసే చివరి దశలో భాగంగా, రస్ట్ లాంగ్వేజ్ సర్వర్ (RLS) యొక్క గడువు ముగిసిన అమలును ఒక స్టబ్ సర్వర్తో భర్తీ చేయడం ద్వారా దానికి మారాలనే సూచనతో హెచ్చరిక జారీ చేయబడింది. రస్ట్-ఎనలైజర్ ఉపయోగించి.
- సంకలనం సమయంలో, MIR ఇంటర్మీడియట్ కోడ్ యొక్క ఇన్లైన్ విస్తరణకు మద్దతు ప్రారంభించబడింది, ఇది సాధారణ క్రేట్ ప్యాకేజీల సంకలనాన్ని 3-10% వేగవంతం చేస్తుంది.
- షెడ్యూల్ చేయబడిన నిర్మాణాలను వేగవంతం చేయడానికి, కార్గో ప్యాకేజీ మేనేజర్ క్యూలో అమలు కోసం వేచి ఉన్న ఉద్యోగాల క్రమబద్ధీకరణను అందిస్తుంది.
అదనంగా, మీరు ఆటోమోటివ్ ఇన్ఫర్మేషన్ సిస్టమ్స్ యొక్క భాగాలను అభివృద్ధి చేయడానికి వోల్వోలో రస్ట్ లాంగ్వేజ్ యొక్క ఉపయోగం గురించి ఇంటర్వ్యూను గమనించవచ్చు. రస్ట్లో ఇప్పటికే ఉన్న మరియు పరీక్షించిన కోడ్ని తిరిగి వ్రాయడానికి ప్రణాళికలు లేవు, కానీ కొత్త కోడ్ కోసం, తక్కువ ఖర్చుతో నాణ్యతను మెరుగుపరచడానికి రస్ట్ ప్రాధాన్య ఎంపికలలో ఒకటి. ఆటోమోటివ్ అసోసియేషన్లు AUTOSAR (ఆటోమోటివ్ ఓపెన్ సిస్టమ్ ఆర్కిటెక్చర్) మరియు SAE (సొసైటీ ఆఫ్ ఆటోమోటివ్ ఇంజనీర్స్)లో రస్ట్ లాంగ్వేజ్ వినియోగానికి సంబంధించిన వర్కింగ్ గ్రూపులు కూడా సృష్టించబడ్డాయి.
అదనంగా, Google యొక్క ఇంజినీరింగ్ వైస్ ప్రెసిడెంట్ డేవిడ్ క్లీడర్మాచర్, గుప్తీకరణ కీలను రస్ట్లోకి నిర్వహించడానికి Android ప్లాట్ఫారమ్లో ఉపయోగించిన కోడ్ యొక్క అనువాదం గురించి అలాగే స్టాక్లో HTTPS ప్రోటోకాల్ ద్వారా DNS అమలులో రస్ట్ను ఉపయోగించడం గురించి మాట్లాడారు. UWB- చిప్ల కోసం (అల్ట్రా-వైడ్బ్యాండ్) మరియు టెన్సర్ G2 చిప్తో అనుబంధించబడిన వర్చువలైజేషన్ ఫ్రేమ్వర్క్ (Android వర్చువలైజేషన్ ఫ్రేమ్వర్క్)లో. రస్ట్లో తిరిగి వ్రాయబడిన బ్లూటూత్ మరియు Wi-Fi కోసం కొత్త స్టాక్లు కూడా Android కోసం అభివృద్ధి చేయబడుతున్నాయి. సాధారణ వ్యూహం ఏమిటంటే, భద్రతను క్రమంగా బలోపేతం చేయడం, ముందుగా అత్యంత హాని కలిగించే మరియు కీలకమైన సాఫ్ట్వేర్ భాగాలను రస్ట్గా మార్చడం ద్వారా, ఆపై ఇతర సంబంధిత సబ్సిస్టమ్లకు విస్తరించడం. గత సంవత్సరం, Android ప్లాట్ఫారమ్ను అభివృద్ధి చేయడానికి అనుమతించబడిన భాషల జాబితాలో రస్ట్ భాష చేర్చబడింది.
మూలం: opennet.ru