మొజిల్లా ప్రాజెక్ట్ ద్వారా స్థాపించబడిన రస్ట్ 1.73 సాధారణ-ప్రయోజన ప్రోగ్రామింగ్ లాంగ్వేజ్ విడుదల, కానీ ఇప్పుడు స్వతంత్ర లాభాపేక్ష లేని సంస్థ రస్ట్ ఫౌండేషన్ ఆధ్వర్యంలో అభివృద్ధి చేయబడింది, ప్రచురించబడింది. భాష మెమరీ భద్రతపై దృష్టి పెడుతుంది మరియు చెత్త సేకరించేవాడు మరియు రన్టైమ్ (ప్రామాణిక లైబ్రరీ యొక్క ప్రాథమిక ప్రారంభ మరియు నిర్వహణకు రన్టైమ్ తగ్గించబడింది) వినియోగాన్ని నివారించేటప్పుడు అధిక ఉద్యోగ సమాంతరతను సాధించడానికి మార్గాలను అందిస్తుంది.
రస్ట్ యొక్క మెమరీ హ్యాండ్లింగ్ పద్ధతులు పాయింటర్లను మానిప్యులేట్ చేసేటప్పుడు డెవలపర్ను లోపాల నుండి కాపాడతాయి మరియు తక్కువ-స్థాయి మెమరీ హ్యాండ్లింగ్ కారణంగా తలెత్తే సమస్యల నుండి రక్షిస్తాయి, అనగా మెమరీ ప్రాంతాన్ని విడుదల చేసిన తర్వాత యాక్సెస్ చేయడం, శూన్య పాయింటర్లను డిఫెరెన్సింగ్ చేయడం, బఫర్ ఓవర్రన్లు మొదలైనవి. లైబ్రరీలను పంపిణీ చేయడానికి, బిల్డ్లను అందించడానికి మరియు డిపెండెన్సీలను నిర్వహించడానికి, ప్రాజెక్ట్ కార్గో ప్యాకేజీ మేనేజర్ను అభివృద్ధి చేస్తుంది. లైబ్రరీలను హోస్ట్ చేయడానికి crates.io రిపోజిటరీకి మద్దతు ఉంది.
రిఫరెన్స్ చెకింగ్, ఆబ్జెక్ట్ యాజమాన్యాన్ని ట్రాక్ చేయడం, ఆబ్జెక్ట్ జీవితకాలాన్ని (స్కోప్లు) ట్రాక్ చేయడం మరియు కోడ్ అమలు సమయంలో మెమరీ యాక్సెస్ యొక్క ఖచ్చితత్వాన్ని అంచనా వేయడం ద్వారా కంపైల్ సమయంలో రస్ట్లో మెమరీ భద్రత అందించబడుతుంది. రస్ట్ పూర్ణాంకాల ఓవర్ఫ్లోల నుండి రక్షణను కూడా అందిస్తుంది, ఉపయోగించే ముందు వేరియబుల్ విలువలను తప్పనిసరిగా ప్రారంభించడం అవసరం, ప్రామాణిక లైబ్రరీలో లోపాలను మెరుగ్గా నిర్వహిస్తుంది, డిఫాల్ట్గా మార్పులేని సూచనలు మరియు వేరియబుల్స్ భావనను వర్తింపజేస్తుంది, లాజికల్ లోపాలను తగ్గించడానికి బలమైన స్టాటిక్ టైపింగ్ను అందిస్తుంది.
ప్రధాన ఆవిష్కరణలు:
- డిఫాల్ట్ ప్రోగ్రామ్ క్రాష్ హ్యాండ్లర్ (పానిక్) ద్వారా జారీ చేయబడిన సందేశాల ఆకృతి పునఃరూపకల్పన చేయబడింది. "పానిక్!" మాక్రోలో పేర్కొన్న వచనం ఇప్పుడు కొటేషన్ గుర్తులు లేకుండా ప్రత్యేక లైన్లో చూపబడింది, సందేశాన్ని చదవడం సులభతరం చేస్తుంది మరియు సమూహ కోట్లు ఉన్నప్పుడు లేదా బహుళ పంక్తులలో విభజించబడినప్పుడు గందరగోళాన్ని తొలగిస్తుంది. fn మెయిన్() {లెట్ ఫైల్ = "ferris.txt"; భయాందోళన!("ఓహ్! {ఫైల్:?} దొరకలేదు!"); } అక్కడ థ్రెడ్ 'మెయిన్' 'అరెరె! "ferris.txt" కనుగొనబడలేదు!', src/main.rs:3:5 థ్రెడ్ 'మెయిన్' src/main.rs:3:5 వద్ద భయాందోళనకు గురైంది: అయ్యో! "ferris.txt" కనుగొనబడలేదు!
“assert_eq” మరియు “assert_ne” మాక్రోలు ట్రిగ్గర్ చేయబడినప్పుడు చూపబడే సందేశాల అవుట్పుట్ కూడా మళ్లీ పని చేయబడింది. fn మెయిన్() { assert_eq!("🦀", "🐟", "ferris is not a fish"); } 'నిర్ధారణ విఫలమైంది' వద్ద 'ప్రధాన' థ్రెడ్ భయాందోళనకు గురైంది: `(ఎడమ == కుడి)` ఎడమ: `"🦀"`, కుడి: `"🐟"`: ఫెర్రిస్ చేప కాదు', src/main.rs: 2 :5 థ్రెడ్ 'మెయిన్' src/main.rs వద్ద భయాందోళనకు గురైంది.
- RFC 3184కి అనుగుణంగా, థ్రెడ్-లోకల్ (థ్రెడ్_లోకల్) లోకల్ కీ స్టోరేజ్ కీలను నేరుగా మానిప్యులేట్ చేసే సామర్థ్యం జోడించబడింది. > మరియు LocalKey > "with(|inner| ...)" మూసివేతను ఉపయోగించకుండా, get(), set(), take() మరియు replace() పద్ధతులను ఉపయోగించడం ద్వారా, దీని కోసం అదనపు ప్రారంభ కోడ్ను అమలు చేయవలసిన అవసరాన్ని తొలగిస్తుంది మాక్రో "థ్రెడ్_లోకల్!"ని ఉపయోగిస్తున్నప్పుడు కొత్త థ్రెడ్ల కోసం డిఫాల్ట్ విలువలు పేర్కొనబడ్డాయి థ్రెడ్_లోకల్! {స్థిర విషయాలు: సెల్ > = సెల్ :: కొత్త(Vec::new()); } fn f() { // was THINGS.with(|i| i.set(vec![32, 1, 2])); // THINGS.setగా మారింది(vec![3, 1, 2]); // ... // v = THINGS.తో(|i| i.take()); // లెట్ v: వెక్ అయింది = THINGS.take(); }
- API యొక్క కొత్త భాగం స్థిరమైన వర్గానికి తరలించబడింది, ఇందులో పద్ధతులు మరియు లక్షణాల అమలులు స్థిరీకరించబడ్డాయి:
- సంతకం చేయని {పూర్ణాంకం} ::div_ceil
- సంతకం చేయలేదు {integer} ::next_multiple_of
- సంతకం చేయలేదు {integer} ::checked_next_multiple_of
- std::ffi::FromBytesUntilNulError
- std::os::unix::fs::chown
- std::os::unix::fs::fchown
- std::os::unix::fs::lfchown
- స్థానిక కీ:: >::పొందండి
- స్థానిక కీ:: >:: సెట్
- స్థానిక కీ:: >::తీసుకోండి
- స్థానిక కీ:: >::భర్తీ చేయండి
- స్థానిక కీ:: >::అరువుతో
- స్థానిక కీ:: >::అరువు_మూటతో
- స్థానిక కీ:: >:: సెట్
- స్థానిక కీ:: >::తీసుకోండి
- స్థానిక కీ:: >::భర్తీ చేయండి
- స్థిరాంకాలకి బదులుగా ఏదైనా సందర్భంలో ఉపయోగించగల అవకాశాన్ని నిర్ణయించే “const” లక్షణం ఫంక్షన్లలో ఉపయోగించబడుతుంది:
- rc::బలహీన::కొత్త
- సమకాలీకరణ::బలహీన::కొత్త
- NonNull::as_ref
- కంపైలర్ GCC మరియు క్లాంగ్ మాదిరిగానే “.comment” విభాగంలో సంస్కరణ సమాచారాన్ని అందిస్తుంది.
- aarch64-unknown-teeos, csky-unknown-linux-gnuabiv2, riscv64-linux-android, riscv64gc-unknown-hermit, x86_64-unikraft-linux-musl మరియు x86_64xunknown-linu అనే ప్లాట్ఫారమ్ల కోసం మూడవ స్థాయి మద్దతు అమలు చేయబడింది. -ఓహోస్. మూడవ స్థాయి ప్రాథమిక మద్దతును కలిగి ఉంటుంది, కానీ ఆటోమేటెడ్ టెస్టింగ్ లేకుండా, అధికారిక బిల్డ్లను ప్రచురించడం లేదా కోడ్ని నిర్మించవచ్చో లేదో తనిఖీ చేయడం.
- లక్ష్య ప్లాట్ఫారమ్ wasm32-wasi-preview1-థ్రెడ్లకు రెండవ స్థాయి మద్దతు అమలు చేయబడింది. రెండవ స్థాయి మద్దతు అసెంబ్లీ హామీని కలిగి ఉంటుంది.
మూలం: opennet.ru