మొజిల్లా ప్రాజెక్ట్ ద్వారా స్థాపించబడిన రస్ట్ 1.60 సాధారణ-ప్రయోజన ప్రోగ్రామింగ్ లాంగ్వేజ్ విడుదల, కానీ ఇప్పుడు స్వతంత్ర లాభాపేక్ష లేని సంస్థ రస్ట్ ఫౌండేషన్ ఆధ్వర్యంలో అభివృద్ధి చేయబడింది, ప్రచురించబడింది. భాష మెమరీ భద్రతపై దృష్టి పెడుతుంది మరియు చెత్త సేకరించేవాడు మరియు రన్టైమ్ (ప్రామాణిక లైబ్రరీ యొక్క ప్రాథమిక ప్రారంభ మరియు నిర్వహణకు రన్టైమ్ తగ్గించబడింది) వినియోగాన్ని నివారించేటప్పుడు అధిక ఉద్యోగ సమాంతరతను సాధించడానికి మార్గాలను అందిస్తుంది.
రస్ట్ యొక్క మెమరీ హ్యాండ్లింగ్ పద్ధతులు పాయింటర్లను మానిప్యులేట్ చేసేటప్పుడు డెవలపర్ను లోపాల నుండి కాపాడతాయి మరియు తక్కువ-స్థాయి మెమరీ హ్యాండ్లింగ్ కారణంగా తలెత్తే సమస్యల నుండి రక్షిస్తాయి, అనగా మెమరీ ప్రాంతాన్ని విడుదల చేసిన తర్వాత యాక్సెస్ చేయడం, శూన్య పాయింటర్లను డిఫెరెన్సింగ్ చేయడం, బఫర్ ఓవర్రన్లు మొదలైనవి. లైబ్రరీలను పంపిణీ చేయడానికి, బిల్డ్లను అందించడానికి మరియు డిపెండెన్సీలను నిర్వహించడానికి, ప్రాజెక్ట్ కార్గో ప్యాకేజీ మేనేజర్ను అభివృద్ధి చేస్తుంది. లైబ్రరీలను హోస్ట్ చేయడానికి crates.io రిపోజిటరీకి మద్దతు ఉంది.
రిఫరెన్స్ చెకింగ్, ఆబ్జెక్ట్ యాజమాన్యాన్ని ట్రాక్ చేయడం, ఆబ్జెక్ట్ జీవితకాలాన్ని (స్కోప్లు) ట్రాక్ చేయడం మరియు కోడ్ అమలు సమయంలో మెమరీ యాక్సెస్ యొక్క ఖచ్చితత్వాన్ని అంచనా వేయడం ద్వారా కంపైల్ సమయంలో రస్ట్లో మెమరీ భద్రత అందించబడుతుంది. రస్ట్ పూర్ణాంకాల ఓవర్ఫ్లోల నుండి రక్షణను కూడా అందిస్తుంది, ఉపయోగించే ముందు వేరియబుల్ విలువలను తప్పనిసరిగా ప్రారంభించడం అవసరం, ప్రామాణిక లైబ్రరీలో లోపాలను మెరుగ్గా నిర్వహిస్తుంది, డిఫాల్ట్గా మార్పులేని సూచనలు మరియు వేరియబుల్స్ భావనను వర్తింపజేస్తుంది, లాజికల్ లోపాలను తగ్గించడానికి బలమైన స్టాటిక్ టైపింగ్ను అందిస్తుంది.
ప్రధాన ఆవిష్కరణలు:
- పరీక్ష సమయంలో కోడ్ కవరేజీని అంచనా వేయడానికి ఉపయోగించే కవరేజ్ డేటాను రూపొందించడానికి rustc కంపైలర్ స్థిరీకరించబడిన LLVM-ఆధారిత వ్యవస్థను కలిగి ఉంది. అసెంబ్లీ సమయంలో కవరేజ్ డేటాను ప్రారంభించడానికి, మీరు తప్పనిసరిగా "-Cinstrument-coverage" ఫ్లాగ్ని ఉపయోగించాలి, ఉదాహరణకు, "RUSTFLAGS="-C ఇన్స్ట్రుమెంట్-కవరేజ్" కార్గో బిల్డ్" కమాండ్తో అసెంబ్లీని ప్రారంభించండి. ఈ విధంగా కంపైల్ చేయబడిన ఎక్జిక్యూటబుల్ ఫైల్ని అమలు చేసిన తర్వాత, default.profraw ఫైల్ ప్రస్తుత డైరెక్టరీలో సేవ్ చేయబడుతుంది, ప్రాసెసింగ్ కోసం మీరు llvm-tools-preview కాంపోనెంట్ నుండి llvm-profdata యుటిలిటీని ఉపయోగించవచ్చు. llvm-profdata ద్వారా ప్రాసెస్ చేయబడిన అవుట్పుట్ ఉల్లేఖన కోడ్ కవరేజ్ నివేదికను రూపొందించడానికి llvm-covకి పంపబడుతుంది. సోర్స్ కోడ్కు లింక్ గురించి సమాచారం పరిశీలించబడుతున్న ఎక్జిక్యూటబుల్ ఫైల్ నుండి తీసుకోబడింది, ఇందులో కవరేజ్ కౌంటర్లు మరియు కోడ్ మధ్య కనెక్షన్ గురించి అవసరమైన డేటా ఉంటుంది. 1| 1|fn ప్రధాన() { 2| 1| println!("హలో, వరల్డ్!"); 3| 1|}
- కార్గో ప్యాకేజీ మేనేజర్లో, “-టైమింగ్స్” ఫ్లాగ్కు మద్దతు స్థిరీకరించబడింది, ఇది బిల్డ్ యొక్క పురోగతి మరియు ప్రతి దశ యొక్క అమలు సమయంపై వివరణాత్మక నివేదికను కలిగి ఉంటుంది. అసెంబ్లీ ప్రక్రియ పనితీరును ఆప్టిమైజ్ చేయడానికి నివేదిక ఉపయోగకరంగా ఉండవచ్చు.
- కార్గో ప్యాకేజీ మేనేజర్ షరతులతో కూడిన సంకలనం మరియు ఐచ్ఛిక డిపెండెన్సీల ఎంపిక కోసం కొత్త సింటాక్స్ను అందిస్తుంది, [ఫీచర్స్] విభాగంలో పేరు పెట్టబడిన లక్షణాల జాబితాను జాబితా చేయడం ద్వారా Cargo.toml ఫైల్లో కాన్ఫిగర్ చేయబడింది మరియు ప్యాకేజీ బిల్డ్ సమయంలో లక్షణాలను ప్రారంభించడం ద్వారా సక్రియం చేయబడుతుంది. “--ఫీచర్స్” ఫ్లాగ్ని ఉపయోగించడం. కొత్త సంస్కరణ ప్రత్యేక నేమ్స్పేస్లు మరియు బలహీనమైన డిపెండెన్సీలలో డిపెండెన్సీలకు మద్దతును జోడిస్తుంది.
మొదటి సందర్భంలో, ఈ డిపెండెన్సీని లక్షణంగా సూచించకుండా ఐచ్ఛిక డిపెండెన్సీకి స్పష్టంగా లింక్ చేయడానికి “[ఫీచర్స్]” విభాగంలో “dep:” ఉపసర్గతో మూలకాలను ఉపయోగించడం సాధ్యమవుతుంది. రెండవ సందర్భంలో, “?” గుర్తుతో గుర్తు పెట్టడానికి మద్దతు జోడించబడింది. ("ప్యాకేజీ-పేరు?/ఫీచర్-పేరు") ఐచ్ఛిక డిపెండెన్సీలు కొన్ని ఇతర ఆస్తి ఇచ్చిన ఐచ్ఛిక డిపెండెన్సీని కలిగి ఉంటే మాత్రమే చేర్చాలి. ఉదాహరణకు, దిగువ ఉదాహరణలో, serde ప్రాపర్టీని ఎనేబుల్ చేయడం వలన "serde" డిపెండెన్సీని అలాగే "rgb" డిపెండెన్సీకి "serde" ప్రాపర్టీని ఎనేబుల్ చేస్తుంది, కానీ "rgb" డిపెండెన్సీని వేరే చోట ఎనేబుల్ చేస్తే మాత్రమే: [డిపెండెన్సీలు] serde = { వెర్షన్ = " 1.0.133", ఐచ్ఛికం = true } rgb = { వెర్షన్ = "0.8.25", ఐచ్ఛికం = నిజం } [లక్షణాలు] serde = ["dep:serde", "rgb?/serde"]
- గత విడుదలలో నిలిపివేయబడిన ఇంక్రిమెంటల్ కంపైలేషన్కు మద్దతు తిరిగి ఇవ్వబడింది. ఫీచర్ నిలిపివేయబడటానికి కారణమైన కంపైలర్ బగ్ పరిష్కరించబడింది.
- మోనోటోనిక్ టైమింగ్ యొక్క హామీతో తక్షణ టైమర్లను అందించడంలో కొన్ని సమస్యలు పరిష్కరించబడ్డాయి, ఇది స్లీప్ మోడ్లో సిస్టమ్ గడిపిన సమయాన్ని పరిగణనలోకి తీసుకుంటుంది. గతంలో, టైమర్ను ఆపరేట్ చేయడానికి OS API సాధ్యమైనప్పుడల్లా ఉపయోగించబడింది, ఇది హార్డ్వేర్ సమస్యలు, వర్చువలైజేషన్ వాడకం లేదా ఆపరేటింగ్ సిస్టమ్లో లోపాలు వంటి సమయ మార్పులను విచ్ఛిన్నం చేసే సమస్యాత్మక పరిస్థితులను పరిగణనలోకి తీసుకోలేదు.
- API యొక్క కొత్త భాగం స్థిరమైన వర్గానికి తరలించబడింది, ఇందులో పద్ధతులు మరియు లక్షణాల అమలులు స్థిరీకరించబడ్డాయి:
- ఆర్క్:: new_cyclic
- Rc:: new_cyclic
- స్లైస్::EscapeAscii
- <[u8]>::escape_ascii
- u8::escape_ascii
- Vec::spare_capacity_mut
- బహుశాUninit::assume_init_drop
- బహుశాUninit::assume_init_read
- i8::abs_diff
- i16::abs_diff
- i32::abs_diff
- i64::abs_diff
- i128::abs_diff
- isize::abs_diff
- u8::abs_diff
- u16::abs_diff
- u32::abs_diff
- u64::abs_diff
- u128::abs_diff
- ఉపయోగించండి::abs_diff
- io::ErrorKind కోసం ప్రదర్శన
- ఎగ్జిట్కోడ్ కోసం
- కొరకు కాదు ! ("నెవర్" అని టైప్ చేయండి)
- _Op_Assign<$t>
- arch ::is_aarch64_feature_detected!
- mips64-openwrt-linux-musl* మరియు armv7-unknown-linux-uclibceabi (softfloat) ప్లాట్ఫారమ్ల కోసం మూడవ స్థాయి మద్దతు అమలు చేయబడింది. మూడవ స్థాయి ప్రాథమిక మద్దతును కలిగి ఉంటుంది, కానీ ఆటోమేటెడ్ టెస్టింగ్ లేకుండా, అధికారిక బిల్డ్లను ప్రచురించడం లేదా కోడ్ని నిర్మించవచ్చో లేదో తనిఖీ చేయడం.
- కంపైలర్ LLVM 14ని ఉపయోగించడానికి మార్చబడింది.
అదనంగా, మీరు గమనించవచ్చు:
- rustc_codegen_gcc బ్యాకెండ్ ఉపయోగించి rustc కంపైలర్ను బూట్స్ట్రాప్ చేయడానికి మద్దతు జోడించబడింది, ఇది GCC ప్రాజెక్ట్ నుండి libgccjit లైబ్రరీని rustcలో కోడ్ జెనరేటర్గా ఉపయోగించడానికి మిమ్మల్ని అనుమతిస్తుంది, ఇది GCCలో అందుబాటులో ఉన్న ఆర్కిటెక్చర్లు మరియు ఆప్టిమైజేషన్లకు మద్దతును అందించడానికి rustcని అనుమతిస్తుంది. కంపైలర్ ప్రమోషన్ అంటే rustc కంపైలర్ను నిర్మించడానికి rustcలో GCC-ఆధారిత కోడ్ జనరేటర్ను ఉపయోగించగల సామర్థ్యం. ప్రాక్టికల్ వైపు, ఈ ఫీచర్ rustcలో ఇంతకు ముందు సపోర్ట్ చేయని ఆర్కిటెక్చర్ల కోసం రస్ట్ ప్రోగ్రామ్లను రూపొందించడానికి మిమ్మల్ని అనుమతిస్తుంది.
- uutils coreutils 0.0.13 టూల్కిట్ విడుదల అందుబాటులో ఉంది, దీని లోపల రస్ట్ భాషలో తిరిగి వ్రాయబడిన GNU Coreutils ప్యాకేజీ యొక్క అనలాగ్ అభివృద్ధి చేయబడుతోంది. Coreutils సార్ట్, క్యాట్, chmod, chown, chroot, cp, date, dd, echo, hostname, id, ln మరియు ls వంటి వందకు పైగా యుటిలిటీలతో వస్తుంది. ప్రాజెక్ట్ యొక్క లక్ష్యం Coreutils యొక్క క్రాస్-ప్లాట్ఫారమ్ ప్రత్యామ్నాయ అమలును రూపొందించడం, ఇది Windows, Redox మరియు Fuchsia ప్లాట్ఫారమ్లపై అమలు చేయగల సామర్థ్యాన్ని కలిగి ఉంటుంది, అలాగే GPL కాపీ లెఫ్ట్ లైసెన్స్కు బదులుగా అనుమతి పొందిన MIT లైసెన్స్ క్రింద పంపిణీ చేయబడుతుంది.
GNU ప్రాజెక్ట్ నుండి వాటి ప్రతిరూపాలతో cp, dd, df, స్ప్లిట్ మరియు TR యుటిలిటీల యొక్క గణనీయంగా మెరుగుపరచబడిన అనుకూలతతో సహా అనేక యుటిలిటీల అమలును కొత్త వెర్షన్ మెరుగుపరిచింది. ఆన్లైన్ డాక్యుమెంటేషన్ అందించబడింది. కమాండ్ లైన్ ఆర్గ్యుమెంట్లను అన్వయించడానికి క్లాప్ పార్సర్ ఉపయోగించబడుతుంది, ఇది “--హెల్ప్” ఫ్లాగ్ కోసం అవుట్పుట్ను మెరుగుపరిచింది మరియు పొడవైన కమాండ్ల సంక్షిప్తీకరణలకు మద్దతును జోడించింది (ఉదాహరణకు, మీరు “ls -color”కి బదులుగా “ls -col”ని పేర్కొనవచ్చు. ”).
మూలం: opennet.ru