మొజిల్లా ప్రాజెక్ట్ ద్వారా స్థాపించబడిన రస్ట్ 1.74 సాధారణ-ప్రయోజన ప్రోగ్రామింగ్ లాంగ్వేజ్ విడుదల, కానీ ఇప్పుడు స్వతంత్ర లాభాపేక్ష లేని సంస్థ రస్ట్ ఫౌండేషన్ ఆధ్వర్యంలో అభివృద్ధి చేయబడింది, ప్రచురించబడింది. భాష మెమరీ భద్రతపై దృష్టి పెడుతుంది మరియు చెత్త సేకరించేవాడు మరియు రన్టైమ్ (ప్రామాణిక లైబ్రరీ యొక్క ప్రాథమిక ప్రారంభ మరియు నిర్వహణకు రన్టైమ్ తగ్గించబడింది) వినియోగాన్ని నివారించేటప్పుడు అధిక ఉద్యోగ సమాంతరతను సాధించడానికి మార్గాలను అందిస్తుంది.
రస్ట్ యొక్క మెమరీ హ్యాండ్లింగ్ పద్ధతులు పాయింటర్లను మానిప్యులేట్ చేసేటప్పుడు డెవలపర్ను లోపాల నుండి కాపాడతాయి మరియు తక్కువ-స్థాయి మెమరీ హ్యాండ్లింగ్ కారణంగా తలెత్తే సమస్యల నుండి రక్షిస్తాయి, అనగా మెమరీ ప్రాంతాన్ని విడుదల చేసిన తర్వాత యాక్సెస్ చేయడం, శూన్య పాయింటర్లను డిఫెరెన్సింగ్ చేయడం, బఫర్ ఓవర్రన్లు మొదలైనవి. లైబ్రరీలను పంపిణీ చేయడానికి, బిల్డ్లను అందించడానికి మరియు డిపెండెన్సీలను నిర్వహించడానికి, ప్రాజెక్ట్ కార్గో ప్యాకేజీ మేనేజర్ను అభివృద్ధి చేస్తుంది. లైబ్రరీలను హోస్ట్ చేయడానికి crates.io రిపోజిటరీకి మద్దతు ఉంది.
రిఫరెన్స్ చెకింగ్, ఆబ్జెక్ట్ యాజమాన్యాన్ని ట్రాక్ చేయడం, ఆబ్జెక్ట్ జీవితకాలాన్ని (స్కోప్లు) ట్రాక్ చేయడం మరియు కోడ్ అమలు సమయంలో మెమరీ యాక్సెస్ యొక్క ఖచ్చితత్వాన్ని అంచనా వేయడం ద్వారా కంపైల్ సమయంలో రస్ట్లో మెమరీ భద్రత అందించబడుతుంది. రస్ట్ పూర్ణాంకాల ఓవర్ఫ్లోల నుండి రక్షణను కూడా అందిస్తుంది, ఉపయోగించే ముందు వేరియబుల్ విలువలను తప్పనిసరిగా ప్రారంభించడం అవసరం, ప్రామాణిక లైబ్రరీలో లోపాలను మెరుగ్గా నిర్వహిస్తుంది, డిఫాల్ట్గా మార్పులేని సూచనలు మరియు వేరియబుల్స్ భావనను వర్తింపజేస్తుంది, లాజికల్ లోపాలను తగ్గించడానికి బలమైన స్టాటిక్ టైపింగ్ను అందిస్తుంది.
ప్రధాన ఆవిష్కరణలు:
- ప్యాకేజీ మేనేజర్ మానిఫెస్ట్తో Cargo.toml ఫైల్ ద్వారా లింట్ చెక్లను కాన్ఫిగర్ చేసే సామర్థ్యం జోడించబడింది. ప్రతిస్పందన స్థాయి (నిషేధించు, తిరస్కరించు, హెచ్చరించు, అనుమతించు) వంటి లింట్ సెట్టింగ్లను నిర్వచించడానికి, "[lints]" మరియు "[workspace.lints]" కొత్త విభాగాలు ప్రతిపాదించబడ్డాయి, వీటి గురించి నిర్ణయం తీసుకునేటప్పుడు పరిగణనలోకి తీసుకోబడతాయి పునర్నిర్మాణం. ఉదాహరణకు, “#![ఫర్బిడ్(అసురక్షిత_కోడ్)]” మరియు “#![నిరాకరిస్తున్నప్పుడు (క్లిప్పి)ని సమీకరించేటప్పుడు లేదా జోడించేటప్పుడు “-F”, “-D”, “-W” మరియు “-A” ఫ్లాగ్లను పేర్కొనడానికి బదులుగా :” కోడ్కి గుణాలు) :enum_glob_use)]" ఇప్పుడు కార్గో మానిఫెస్ట్లో ఉపయోగించవచ్చు: [lints.rust] unsafe_code = "నిషేధించు" [lints.clippy] enum_glob_use = "నిరాకరించు"
- క్రేట్ ప్యాకేజీ మేనేజర్ రిపోజిటరీకి కనెక్ట్ చేసినప్పుడు ప్రమాణీకరించే సామర్థ్యాన్ని జోడించారు. ప్రాథమిక పంపిణీలో Linux క్రెడెన్షియల్ స్టోర్లలో (libsecret), macOS (కీచైన్) మరియు Windows (Windows క్రెడెన్షియల్ మేనేజర్) ప్రామాణీకరణ పారామితులను ఉంచడానికి మద్దతు ఉంటుంది, అయితే సిస్టమ్ ప్రారంభంలో మాడ్యులర్ చేయబడింది మరియు నిల్వ చేయడానికి వివిధ ప్రొవైడర్లతో పనిని నిర్వహించడానికి మిమ్మల్ని అనుమతిస్తుంది. టోకెన్లను ఉత్పత్తి చేయడం, ఉదాహరణకు, 1పాస్వర్డ్ పాస్వర్డ్ నిర్వాహికిని ఉపయోగించడం కోసం ప్లగ్ఇన్ సిద్ధం చేయబడింది. ప్యాకేజీలు ప్రచురించబడిందని నిర్ధారించడానికి మాత్రమే కాకుండా, ఏదైనా ఆపరేషన్ కోసం రిపోజిటరీకి ప్రమాణీకరణ అవసరం కావచ్చు. ~/.cargo/config.toml [registry] global-credential-providers = ["కార్గో:టోకెన్", "కార్గో:లిబ్సీక్రెట్"]
- రిటర్న్ టైప్ ప్రొజెక్షన్లకు (impl_trait_projections) మద్దతు స్థిరీకరించబడింది, "async fn" మరియు "->impl Trait" వంటి రిటర్న్ రకాల్లో Self మరియు T::Assocని పేర్కొనడానికి అనుమతిస్తుంది. struct రేపర్<'a, T>(&'a T); // `Self` అని పేర్కొన్న అపారదర్శక రిటర్న్ రకాలు: impl Wrapper<'_, ()> { async fn async_fn() -> Self { /* … */} fn impl_trait() -> impl Iterator { /* … */ } } లక్షణ లక్షణం<'a> { రకం Assoc; fn కొత్త() -> స్వీయ::అసోక్; } impl Trait<'_> కోసం () {type Assoc = (); fn new() {} } // అనుబంధిత రకాన్ని పేర్కొనే అపారదర్శక రిటర్న్ రకాలు: impl<'a, T: Trait<'a>> Wrapper<'a, T> { async fn mk_assoc() -> T::Assoc { /* … */} fn a_few_assocs() -> impl Iterator { /* … */}}
- API యొక్క కొత్త భాగం స్థిరమైన వర్గానికి తరలించబడింది, ఇందులో పద్ధతులు మరియు లక్షణాల అమలులు స్థిరీకరించబడ్డాయి:
- స్థిరాంకాలకి బదులుగా ఏదైనా సందర్భంలో ఉపయోగించగల అవకాశాన్ని నిర్ణయించే “const” లక్షణం ఫంక్షన్లలో ఉపయోగించబడుతుంది:
- కోర్::mem::transmute_copy
- str::is_ascii
- [u8]::is_ascii
- కోర్::num::సంతృప్తత
- Impl నుండి std::process:: Stdio
- Impl నుండి std::process:: Stdio
- impl నుండి std::process::Child{Stdin, Stdout, Stderr}
- impl నుండి std::process::Child{Stdin, Stdout, Stderr}
- std::ffi::OsString::from_encoded_bytes_unchecked
- std::ffi::OsString::into_encoded_bytes
- std::ffi::OsStr::from_encoded_bytes_unchecked
- std::ffi::OsStr::as_encoded_bytes
- std::io::ఎర్రర్::ఇతర
- Impl TryFrom u16 కోసం
- impl నుండి<&[T; N]> Vec కోసం
- impl నుండి<&mut [T; N]> Vec కోసం
- impl నుండి<[T; ఆర్క్<[T]> కోసం N]>
- impl నుండి<[T; N]> Rc<[T]> కోసం
- కంపైలర్, టూల్కిట్, స్టాండర్డ్ లైబ్రరీ మరియు జనరేట్ చేసిన అప్లికేషన్ ఎక్జిక్యూటబుల్లు Apple ప్లాట్ఫారమ్ల కోసం పెరిగిన అవసరాలను కలిగి ఉన్నాయి, ఇప్పుడు అమలు చేయడానికి కనీసం macOS 10.12 Sierra, iOS 10 మరియు tvOS 10 2016లో విడుదల కావాలి.
- i686-pc-windows-gnullvm ప్లాట్ఫారమ్ కోసం మూడవ స్థాయి మద్దతు అమలు చేయబడింది. మూడవ స్థాయి ప్రాథమిక మద్దతును కలిగి ఉంటుంది, కానీ ఆటోమేటెడ్ టెస్టింగ్ లేకుండా, అధికారిక బిల్డ్లను ప్రచురించడం లేదా కోడ్ని నిర్మించవచ్చో లేదో తనిఖీ చేయడం.
- loongarch64-unknown-none లక్ష్యం ప్లాట్ఫారమ్కు రెండవ స్థాయి మద్దతు అమలు చేయబడింది. రెండవ స్థాయి మద్దతు అసెంబ్లీ హామీని కలిగి ఉంటుంది.
అదనంగా, రస్ట్ భాషకు సంబంధించిన రెండు సంఘటనలను గమనించవచ్చు:
- ఓపెన్ సోర్స్ ప్రాజెక్ట్ల భద్రతను బలోపేతం చేయడానికి సృష్టించబడిన OSTIF (ఓపెన్ సోర్స్ టెక్నాలజీ ఇంప్రూవ్మెంట్ ఫండ్), టాస్క్-స్పెసిఫిక్ హైపర్వైజర్లు మరియు వర్చువల్ మెషీన్ మానిటర్లను (VMMలు) రూపొందించడానికి భాగాలను అందించే RustVMM ప్రాజెక్ట్ యొక్క ఆడిట్ ఫలితాలను ప్రచురించింది. ఇంటెల్, అలీబాబా, అమెజాన్, గూగుల్, లినారో మరియు రెడ్ హ్యాట్ వంటి కంపెనీలు ప్రాజెక్ట్ అభివృద్ధిలో పాల్గొంటున్నాయి. ఇంటెల్ క్లౌడ్ హైపర్వైజర్ మరియు డ్రాగన్బాల్ హైపర్వైజర్లు RustVMM ఆధారంగా అభివృద్ధి చేయబడుతున్నాయి. ఆడిట్ కోడ్ బేస్ యొక్క అధిక నాణ్యతను మరియు గరిష్ట భద్రతను సాధించే లక్ష్యంతో నిర్మాణం మరియు అమలులో సాంకేతికతలను ఉపయోగించడాన్ని నిర్ధారించింది. ఆడిట్ సమయంలో, భద్రతపై ప్రత్యక్ష ప్రభావం చూపని 6 సమస్యలు గుర్తించబడ్డాయి.
- బైండర్ ఇంటర్ప్రాసెస్ కమ్యూనికేషన్ మెకానిజం యొక్క కొత్త అమలును Google పరిచయం చేసింది, ఇది రస్ట్ భాషలో తిరిగి వ్రాయబడింది, Linux కెర్నల్ డెవలపర్ మెయిలింగ్ జాబితాకు. ఆండ్రాయిడ్లో మెమరీతో పనిచేసేటప్పుడు భద్రతను బలోపేతం చేయడానికి, సురక్షితమైన ప్రోగ్రామింగ్ టెక్నిక్లను ప్రోత్సహించడానికి మరియు సమస్యలను గుర్తించే సామర్థ్యాన్ని పెంచడానికి ఒక ప్రాజెక్ట్లో భాగంగా ఈ రీవర్క్ జరిగింది (ఆండ్రాయిడ్లో గుర్తించబడిన అన్ని ప్రమాదకరమైన దుర్బలత్వాలలో దాదాపు 70% మెమరీతో పనిచేసేటప్పుడు లోపాల వల్ల సంభవిస్తుంది. ) రస్ట్లో బైండర్ యొక్క అమలు C భాషలోని అసలైన సంస్కరణతో కార్యాచరణలో సమానత్వాన్ని సాధించింది, అన్ని AOSP (Android ఓపెన్-సోర్స్ ప్రాజెక్ట్) పరీక్షలలో ఉత్తీర్ణత సాధించింది మరియు ఫర్మ్వేర్ యొక్క వర్కింగ్ ఎడిషన్లను రూపొందించడానికి ఉపయోగించవచ్చు. రెండు అమలుల పనితీరు దాదాపు ఒకే స్థాయిలో ఉంటుంది (-1.96% మరియు +1.38% లోపల విచలనాలు).
మూలం: opennet.ru