మొజిల్లా ప్రాజెక్ట్ ద్వారా స్థాపించబడిన రస్ట్ 1.64 సాధారణ-ప్రయోజన ప్రోగ్రామింగ్ లాంగ్వేజ్ విడుదల, కానీ ఇప్పుడు స్వతంత్ర లాభాపేక్ష లేని సంస్థ రస్ట్ ఫౌండేషన్ ఆధ్వర్యంలో అభివృద్ధి చేయబడింది, ప్రచురించబడింది. భాష మెమరీ భద్రతపై దృష్టి పెడుతుంది మరియు చెత్త సేకరించేవాడు మరియు రన్టైమ్ (ప్రామాణిక లైబ్రరీ యొక్క ప్రాథమిక ప్రారంభ మరియు నిర్వహణకు రన్టైమ్ తగ్గించబడింది) వినియోగాన్ని నివారించేటప్పుడు అధిక ఉద్యోగ సమాంతరతను సాధించడానికి మార్గాలను అందిస్తుంది.
రస్ట్ యొక్క మెమరీ హ్యాండ్లింగ్ పద్ధతులు పాయింటర్లను మానిప్యులేట్ చేసేటప్పుడు డెవలపర్ను లోపాల నుండి కాపాడతాయి మరియు తక్కువ-స్థాయి మెమరీ హ్యాండ్లింగ్ కారణంగా తలెత్తే సమస్యల నుండి రక్షిస్తాయి, అనగా మెమరీ ప్రాంతాన్ని విడుదల చేసిన తర్వాత యాక్సెస్ చేయడం, శూన్య పాయింటర్లను డిఫెరెన్సింగ్ చేయడం, బఫర్ ఓవర్రన్లు మొదలైనవి. లైబ్రరీలను పంపిణీ చేయడానికి, బిల్డ్లను అందించడానికి మరియు డిపెండెన్సీలను నిర్వహించడానికి, ప్రాజెక్ట్ కార్గో ప్యాకేజీ మేనేజర్ను అభివృద్ధి చేస్తుంది. లైబ్రరీలను హోస్ట్ చేయడానికి crates.io రిపోజిటరీకి మద్దతు ఉంది.
రిఫరెన్స్ చెకింగ్, ఆబ్జెక్ట్ యాజమాన్యాన్ని ట్రాక్ చేయడం, ఆబ్జెక్ట్ జీవితకాలాన్ని (స్కోప్లు) ట్రాక్ చేయడం మరియు కోడ్ అమలు సమయంలో మెమరీ యాక్సెస్ యొక్క ఖచ్చితత్వాన్ని అంచనా వేయడం ద్వారా కంపైల్ సమయంలో రస్ట్లో మెమరీ భద్రత అందించబడుతుంది. రస్ట్ పూర్ణాంకాల ఓవర్ఫ్లోల నుండి రక్షణను కూడా అందిస్తుంది, ఉపయోగించే ముందు వేరియబుల్ విలువలను తప్పనిసరిగా ప్రారంభించడం అవసరం, ప్రామాణిక లైబ్రరీలో లోపాలను మెరుగ్గా నిర్వహిస్తుంది, డిఫాల్ట్గా మార్పులేని సూచనలు మరియు వేరియబుల్స్ భావనను వర్తింపజేస్తుంది, లాజికల్ లోపాలను తగ్గించడానికి బలమైన స్టాటిక్ టైపింగ్ను అందిస్తుంది.
ప్రధాన ఆవిష్కరణలు:
- కంపైలర్, కార్గో ప్యాకేజీ మేనేజర్ మరియు libstd ప్రామాణిక లైబ్రరీలో Linux ఎన్విరాన్మెంట్ కోసం అవసరాలు పెంచబడ్డాయి - Glibc కోసం కనీస అవసరాలు వెర్షన్ 2.11 నుండి 2.17కి మరియు Linux కెర్నల్ వెర్షన్ 2.6.32 నుండి 3.2కి పెంచబడ్డాయి. libstdతో నిర్మించిన రస్ట్ అప్లికేషన్ ఎక్జిక్యూటబుల్స్కు కూడా పరిమితులు వర్తిస్తాయి. పంపిణీ కిట్లు RHEL 7, SLES 12-SP5, Debian 8 మరియు Ubuntu 14.04 కొత్త అవసరాలను తీరుస్తాయి. RHEL 6, SLES 11-SP4, Debian 7 మరియు Ubuntu 12.04లకు మద్దతు నిలిపివేయబడుతుంది. పాత Linux కెర్నల్తో వాతావరణంలో రస్ట్-బిల్ట్ ఎక్జిక్యూటబుల్లను ఉపయోగించే వినియోగదారులు తమ సిస్టమ్లను అప్గ్రేడ్ చేయడానికి, కంపైలర్ యొక్క పాత విడుదలలపై ఉండడానికి లేదా అనుకూలతను కొనసాగించడానికి లేయర్లతో వారి స్వంత libstd ఫోర్క్ను నిర్వహించడానికి ప్రోత్సహించబడతారు.
పాత Linux సిస్టమ్లకు మద్దతును ముగించడానికి గల కారణాలలో పాత పరిసరాలతో అనుకూలతను కొనసాగించడానికి పరిమిత వనరులు ఉన్నాయి. LLVM మరియు క్రాస్-కంపైలేషన్ యుటిలిటీలలో పెరుగుతున్న సంస్కరణ అవసరాల నేపథ్యంలో, లెగసీ గ్లిబ్సికి నిరంతర ఇంటిగ్రేషన్ సిస్టమ్లో తనిఖీ చేస్తున్నప్పుడు లెగసీ సాధనాలను ఉపయోగించడం అవసరం. పాత కెర్నల్లతో అనుకూలతను నిర్ధారించడానికి లేయర్లను నిర్వహించాల్సిన అవసరం లేకుండా libstdలో కొత్త సిస్టమ్ కాల్లను ఉపయోగించగల సామర్థ్యం కారణంగా కెర్నల్ వెర్షన్ అవసరాలు పెరగడం.
- IntoFuture లక్షణం స్థిరీకరించబడింది, ఇది IntoIteratorని పోలి ఉంటుంది, కానీ "for ... in ..." లూప్లకు బదులుగా ".await"ని ఉపయోగించడం ద్వారా రెండో దాని నుండి భిన్నంగా ఉంటుంది. IntoFutureతో కలిపినప్పుడు, ".await" కీవర్డ్ ఫ్యూచర్ లక్షణాన్ని మాత్రమే కాకుండా, ఫ్యూచర్గా మార్చగల ఏవైనా ఇతర రకాలను కూడా ఆశించవచ్చు.
- రస్ట్ విడుదలలతో అందించబడిన యుటిలిటీల సేకరణలో రస్ట్-ఎనలైజర్ యుటిలిటీ చేర్చబడింది. rustup (రస్టప్ కాంపోనెంట్ యాడ్ రస్ట్-ఎనలైజర్) ఉపయోగించి ఇన్స్టాలేషన్ కోసం యుటిలిటీ కూడా అందుబాటులో ఉంది.
- కార్గో ప్యాకేజీ మేనేజర్ రస్ట్ వెర్షన్లు మరియు రిపోజిటరీ URLల వంటి ప్యాకేజీల మధ్య సాధారణ ఫీల్డ్ విలువల నకిలీని తొలగించడానికి వర్క్స్పేస్ వారసత్వాన్ని కలిగి ఉంటుంది. ఒకేసారి అనేక లక్ష్య ప్లాట్ఫారమ్ల కోసం రూపొందించడానికి మద్దతు కూడా జోడించబడింది (మీరు ఇప్పుడు “--టార్గెట్” ఎంపికలో ఒకటి కంటే ఎక్కువ పారామితులను పేర్కొనవచ్చు).
- API యొక్క కొత్త భాగం స్థిరమైన వర్గానికి తరలించబడింది, ఇందులో పద్ధతులు మరియు లక్షణాల అమలులు స్థిరీకరించబడ్డాయి:
- భవిష్యత్తు::ఇంటో ఫ్యూచర్
- num::NonZero*::checked_mul
- num::NonZero*::checked_pow
- num::NonZero*::saturating_mul
- num::NonZero*::saturating_pow
- num::NonZeroI*::abs
- num::NonZeroI*::checked_abs
- num::NonZeroI*::overflowing_abs
- num::NonZeroI*::saturating_abs
- num::NonZeroI*::unsigned_abs
- num::NonZeroI*::wrapping_abs
- num::NonZeroU*::checked_add
- num::NonZeroU*::checked_next_power_of_to
- num::NonZeroU*::saturating_add
- os::unix::process::CommandExt::process_group
- os::windows::fs::FileTypeExt::is_symlink_dir
- os::windows::fs::FileTypeExt::is_symlink_file
- C-అనుకూల రకాలు, గతంలో std::ffi మాడ్యూల్లో స్థిరీకరించబడ్డాయి, కోర్ మరియు alloc లైబ్రరీకి జోడించబడ్డాయి:
- కోర్::ffi::CStr
- కోర్::ffi::FromBytesWithNulError
- alloc::ffi::CString
- alloc::ffi::FromVecWithNulError
- alloc::ffi::IntoStringError
- alloc::ffi::NulError
- గతంలో std::os::రా మాడ్యూల్లో స్థిరీకరించబడిన C రకాలు కోర్::ffi మరియు std::ffi మాడ్యూల్లకు జోడించబడ్డాయి (ఉదాహరణకు, c_uint మరియు c_ulong రకాలు uint మరియు ulong C రకాలకు ప్రతిపాదించబడ్డాయి):
- ffi::c_char
- ffi::c_డబుల్
- ffi::c_float
- ffi::c_int
- ffi::c_long
- ffi::c_longlong
- ffi::c_schar
- ffi::c_short
- ffi::c_uchar
- ffi::c_uint
- ffi::c_ulong
- ffi::c_ulonglong
- ffi::c_ushort
- పోల్ మెకానిజంతో ఉపయోగం కోసం తక్కువ-స్థాయి హ్యాండ్లర్లు స్థిరీకరించబడ్డాయి (భవిష్యత్తులో ఇది పుల్ మరియు పిన్ వంటి తక్కువ-స్థాయి నిర్మాణాలను ఉపయోగించాల్సిన అవసరం లేని సరళీకృత APIని అందించడానికి ప్రణాళిక చేయబడింది):
- భవిష్యత్తు::poll_fn
- పని:: సిద్ధంగా!
- స్థిరాంకాలకి బదులుగా ఏదైనా సందర్భంలో ఉపయోగించగల అవకాశాన్ని నిర్ణయించే “const” లక్షణం స్లైస్::from_raw_parts ఫంక్షన్లో ఉపయోగించబడుతుంది.
- డేటాను మరింత సంక్షిప్తంగా నిల్వ చేయడానికి, Ipv4Addr, Ipv6Addr, SocketAddrV4 మరియు SocketAddrV6 నిర్మాణాల మెమరీ లేఅవుట్ మార్చబడింది. నిర్మాణాల యొక్క తక్కువ-స్థాయి మానిప్యులేషన్ కోసం std::mem::transmuteని ఉపయోగించే సింగిల్ క్రేట్ ప్యాకేజీలతో అనుకూలత సమస్య ఉండవచ్చు.
- Windows ప్లాట్ఫారమ్ కోసం రస్ట్ కంపైలర్ యొక్క బిల్డ్ PGO ఆప్టిమైజేషన్లను (ప్రొఫైల్-గైడెడ్ ఆప్టిమైజేషన్) ఉపయోగిస్తుంది, ఇది కోడ్ కంపైలేషన్ పనితీరును 10-20% పెంచడం సాధ్యం చేసింది.
- కంపైలర్ నిర్దిష్ట నిర్మాణాలలో ఉపయోగించని ఫీల్డ్ల గురించి కొత్త హెచ్చరికను అమలు చేసింది.
అదనంగా, మీరు రస్ట్ లాంగ్వేజ్ కంపైలర్ యొక్క ప్రత్యామ్నాయ అమలు అభివృద్ధిపై స్థితి నివేదికను గమనించవచ్చు, ఇది gccrs ప్రాజెక్ట్ (GCC రస్ట్) ద్వారా తయారు చేయబడింది మరియు GCCలో చేర్చడానికి ఆమోదించబడింది. ఫ్రంటెండ్ను ఏకీకృతం చేసిన తర్వాత, LLVM డెవలప్మెంట్లను ఉపయోగించి నిర్మించబడిన rustc కంపైలర్ను ఇన్స్టాల్ చేయాల్సిన అవసరం లేకుండా రస్ట్ భాషలో ప్రోగ్రామ్లను కంపైల్ చేయడానికి ప్రామాణిక GCC సాధనాలను ఉపయోగించవచ్చు. అభివృద్ధి ట్రాక్లో ఉన్నంత వరకు మరియు ఏవైనా ఊహించని సమస్యలను మినహాయించి, రస్ట్ ఫ్రంటెండ్ వచ్చే ఏడాది మేలో షెడ్యూల్ చేయబడిన GCC 13 విడుదలలో విలీనం చేయబడుతుంది. రస్ట్ యొక్క GCC 13 అమలు బీటా స్థితిలో ఉంటుంది, డిఫాల్ట్గా ఇంకా ప్రారంభించబడలేదు.
మూలం: opennet.ru