రస్ట్ 1.66 ప్రోగ్రామింగ్ లాంగ్వేజ్ విడుదల

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

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

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

ప్రధాన ఆవిష్కరణలు:

  • పూర్ణాంకాల ప్రాతినిధ్యాలతో కూడిన గణనలలో ("#[repr(Int)]" లక్షణం), గణనలో ఫీల్డ్‌లు ఉన్నప్పటికీ, వివక్షత (గణనలో వేరియంట్ సంఖ్య) యొక్క స్పష్టమైన సూచన అనుమతించబడుతుంది. #[repr(u8)] enum Foo {A(u8), # discriminant 0 B(i8), # discriminant 1 C(bool) = 42, # discriminant 42 }
  • ఫంక్షన్ కోర్ జోడించబడింది::hint::black_box ఇది స్వీకరించిన విలువను అందిస్తుంది. కంపైలర్ ఈ ఫంక్షన్ ఏదో చేస్తుందని భావించినందున, కోడ్ పనితీరు పరీక్షను నిర్వహించేటప్పుడు లేదా రూపొందించిన మెషీన్ కోడ్‌ను పరిశీలించేటప్పుడు లూప్‌ల కోసం కంపైలర్ ఆప్టిమైజేషన్‌లను నిలిపివేయడానికి బ్లాక్_బాక్స్ ఫంక్షన్ ఉపయోగించబడుతుంది (తద్వారా కంపైలర్ కోడ్‌ని ఉపయోగించనిదిగా పరిగణించి దానిని తీసివేయదు). ఉదాహరణకు, దిగువ ఉదాహరణలో, బ్లాక్_బాక్స్(v.as_ptr()) వెక్టార్ v ఉపయోగించబడటం లేదని కంపైలర్‌ను నిరోధిస్తుంది. std::hint::black_boxని ఉపయోగించండి; fn push_cap(v: &mut Vec) { కోసం i in 0..4 {v.push(i); బ్లాక్_బాక్స్(v.as_ptr()); } }
  • "కార్గో" ప్యాకేజీ మేనేజర్ "తొలగించు" ఆదేశాన్ని అందిస్తుంది, ఇది కమాండ్ లైన్ నుండి Cargo.toml మానిఫెస్ట్ నుండి డిపెండెన్సీలను తీసివేయడానికి మిమ్మల్ని అనుమతిస్తుంది.
  • API యొక్క కొత్త భాగం స్థిరమైన వర్గానికి తరలించబడింది, ఇందులో పద్ధతులు మరియు లక్షణాల అమలులు స్థిరీకరించబడ్డాయి:
    • proc_macro::Span::source_text
    • u*::{checked_add_signed, overflowing_add_signed, saturating_add_signed, wrapping_add_signed}
    • i*::{checked_add_unsigned, overflowing_add_unsigned, saturating_add_unsigned, wrapping_add_unsigned}
    • i*::{checked_sub_unsigned, overflowing_sub_unsigned, saturating_sub_unsigned, wrapping_sub_unsigned}
    • BTreeSet::{మొదటి, చివరి, pop_first, pop_last}
    • BTreeMap::{first_key_value, last_key_value, first_entry, last_entry, pop_first, pop_last}
    • WASIని ఉపయోగిస్తున్నప్పుడు stdio లాక్ రకాల కోసం AsFd అమలులను జోడించండి.
    • Impl TryFrom > బాక్స్ కోసం<[T; N]>
    • కోర్:: సూచన::బ్లాక్_బాక్స్
    • వ్యవధి::try_from_secs_{f32,f64}
    • ఎంపిక:: అన్జిప్
    • std::os::fd
  • టెంప్లేట్‌లలో "..X" మరియు "..=X" పరిధులు అనుమతించబడతాయి.
  • rustc కంపైలర్ మరియు LLVM బ్యాకెండ్ యొక్క ఫ్రంట్ ఎండ్‌ను నిర్మించేటప్పుడు, ఫలితంగా కోడ్ యొక్క పనితీరును పెంచడానికి మరియు మెమరీ వినియోగాన్ని తగ్గించడానికి LTO (లింక్ టైమ్ ఆప్టిమైజేషన్) మరియు BOLT (బైనరీ ఆప్టిమైజేషన్ మరియు లేఅవుట్ టూల్) ఆప్టిమైజేషన్ మోడ్‌లు ఉపయోగించబడతాయి.
  • armv5te-none-eabi మరియు thumbv5te-none-eabi ప్లాట్‌ఫారమ్‌ల కోసం స్థాయి XNUMX మద్దతు అమలు చేయబడింది. మూడవ స్థాయి ప్రాథమిక మద్దతును సూచిస్తుంది, అయితే స్వయంచాలక పరీక్ష లేకుండా, అధికారిక నిర్మాణాలను ప్రచురించడం మరియు కోడ్‌ను రూపొందించే సామర్థ్యాన్ని తనిఖీ చేయడం.
  • MacOS జెనరిక్ లైబ్రరీలకు లింక్ చేయడానికి మద్దతు జోడించబడింది.

అదనంగా, రస్ట్ లాంగ్వేజ్ (gccrs) యొక్క ఫ్రంట్-ఎండ్ కంపైలర్ యొక్క GCC కోడ్‌బేస్‌లో చేర్చడాన్ని మేము గమనించవచ్చు. ఫ్రంటెండ్ GCC 13 శాఖలో చేర్చబడింది, ఇది మే 2023లో విడుదల చేయబడుతుంది. GCC 13తో ప్రారంభించి, LLVM డెవలప్‌మెంట్‌లను ఉపయోగించి నిర్మించిన rustc కంపైలర్‌ను ఇన్‌స్టాల్ చేయాల్సిన అవసరం లేకుండానే రస్ట్ ప్రోగ్రామ్‌లను కంపైల్ చేయడానికి ప్రామాణిక GCC టూల్‌కిట్‌ను ఉపయోగించవచ్చు. GCC 13లో రస్ట్ అమలు బీటా స్థితిలో ఉంటుంది, డిఫాల్ట్‌గా ప్రారంభించబడదు.

మూలం: opennet.ru

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