మొజిల్లా ప్రాజెక్ట్ ద్వారా స్థాపించబడిన సిస్టమ్ ప్రోగ్రామింగ్ లాంగ్వేజ్ రస్ట్ 1.56 విడుదల, కానీ ఇప్పుడు స్వతంత్ర లాభాపేక్ష లేని సంస్థ రస్ట్ ఫౌండేషన్ ఆధ్వర్యంలో అభివృద్ధి చేయబడింది, ప్రచురించబడింది. సాధారణ వెర్షన్ నంబర్తో పాటు, విడుదల రస్ట్ 2021గా కూడా పేర్కొనబడింది మరియు గత మూడు సంవత్సరాల్లో ప్రతిపాదించబడిన మార్పుల స్థిరీకరణను సూచిస్తుంది. రస్ట్ 2021 కూడా రాబోయే మూడేళ్లలో కార్యాచరణను పెంచడానికి ప్రాతిపదికగా పనిచేస్తుంది, అలాగే రస్ట్ 2018 విడుదల గత మూడేళ్లలో భాష అభివృద్ధికి ఎలా ఆధారమైందో.
అనుకూలతను కొనసాగించడానికి, డెవలపర్లు వారి ప్రోగ్రామ్లలో "2015", "2018" మరియు "2021" లేబుల్లను ఉపయోగించవచ్చు, ఇది రస్ట్ యొక్క ఎంచుకున్న ఎడిషన్లకు సంబంధించిన భాషా స్థితి స్లైస్లకు ప్రోగ్రామ్లను లింక్ చేయడానికి అనుమతిస్తుంది. అననుకూల మార్పులను వేరు చేయడానికి ఎడిషన్లు ప్రవేశపెట్టబడ్డాయి మరియు "[ప్యాకేజీ]" విభాగంలోని "ఎడిషన్" ఫీల్డ్ ద్వారా కార్గో ప్యాకేజీల మెటాడేటాలో కాన్ఫిగర్ చేయబడ్డాయి. ఉదాహరణకు, “2018” ఎడిషన్ 2018 చివరి నాటికి స్థిరీకరించబడిన కార్యాచరణను కలిగి ఉంటుంది మరియు అనుకూలతను విచ్ఛిన్నం చేయని అన్ని తదుపరి మార్పులను కూడా కవర్ చేస్తుంది. 2021 ఎడిషన్ అదనంగా ప్రస్తుత 1.56 విడుదలలో ప్రతిపాదించబడిన ఇంటర్ఆపెరాబిలిటీ-బ్రేకింగ్ ఫీచర్లను కలిగి ఉంది మరియు భవిష్యత్తులో అమలు చేయడానికి ఆమోదించబడింది. భాషతో పాటు, సంపాదకులు టూల్స్ మరియు డాక్యుమెంటేషన్ యొక్క స్థితిని కూడా పరిగణనలోకి తీసుకుంటారు.
రస్ట్ 2021లో నమోదు చేయబడిన ప్రధాన అననుకూలతలు:
- క్లోజర్లలో ప్రత్యేక క్యాప్చర్ - క్లోజర్లు ఇప్పుడు పూర్తి ఐడెంటిఫైయర్కు బదులుగా వ్యక్తిగత ఫీల్డ్ పేర్లను క్యాప్చర్ చేయగలవు. ఉదాహరణకు, "|| ax + 1" అనేది "a"కి బదులుగా "ax"ని మాత్రమే క్యాప్చర్ చేస్తుంది.
- శ్రేణుల కోసం IntoIterator లక్షణం: array.into_iter() సూచనల ద్వారా కాకుండా విలువల ద్వారా శ్రేణి మూలకాలపై పునరావృతం చేయడానికి మిమ్మల్ని అనుమతిస్తుంది.
- మాక్రో_రూల్స్లో “|” వ్యక్తీకరణల ప్రాసెసింగ్ మార్చబడింది (బూలియన్ OR) నమూనాలలో - మ్యాచ్లలోని ":pat" స్పెసిఫైయర్ ఇప్పుడు "A | బి".
- కార్గో ప్యాకేజీ మేనేజర్ డిఫాల్ట్గా ఫీచర్ రిసల్వర్ యొక్క రెండవ వెర్షన్ను కలిగి ఉంటుంది, దీనికి మద్దతు రస్ట్ 1.51లో కనిపించింది.
- TryFrom, TryInto మరియు FromIterator లక్షణాలు ప్రిల్యూడ్ స్టాండర్డ్ లైబ్రరీ మాడ్యూల్కు జోడించబడ్డాయి.
- భయాందోళన!(..) మరియు నొక్కిచెప్పండి!(expr, ..) మాక్రోలు ఇప్పుడు ప్రింట్ల్ఎన్!() లాగానే స్ట్రింగ్లను ఫార్మాట్ చేయడానికి format_args!(..)ని ఉపయోగిస్తాయి.
- ident#, ident»..." మరియు ident'...' అనే వ్యక్తీకరణలు భాషా వాక్యనిర్మాణంలో ప్రత్యేకించబడ్డాయి.
- Bare_trait_objects మరియు ellipsis_inclusive_range_patterns హెచ్చరికలు ఎర్రర్లకు తరలించబడ్డాయి.
రస్ట్ 1.56లో కొత్తది:
- Cargo.tomlలో, “[ప్యాకేజీ]” విభాగంలో, రస్ట్-వెర్షన్ ఫీల్డ్ జోడించబడింది, దీని ద్వారా మీరు క్రేట్ ప్యాకేజీ కోసం రస్ట్ యొక్క కనీస మద్దతు వెర్షన్ను నిర్ణయించవచ్చు. ప్రస్తుత వెర్షన్ పేర్కొన్న పారామీటర్తో సరిపోలకపోతే, కార్గో ఎర్రర్ మెసేజ్తో పని చేయడం ఆపివేస్తుంది.
- "బైండింగ్ @ నమూనా" వ్యక్తీకరణలను ఉపయోగించి నమూనా సరిపోలిక చేసినప్పుడు, అదనపు బైండింగ్లను పేర్కొనడానికి మద్దతు అందించబడుతుంది (ఉదాహరణకు, "లెట్ మ్యాట్రిక్స్ @ మ్యాట్రిక్స్ {row_len, .. } = get_matrix();").
- API యొక్క కొత్త భాగం స్థిరమైన వర్గానికి తరలించబడింది, ఇందులో పద్ధతులు మరియు లక్షణాల అమలులు స్థిరీకరించబడ్డాయి:
- std::os::unix::fs::chroot
- అసురక్షిత సెల్::raw_get
- BufWriter:: into_parts
- కోర్::పానిక్::{UnwindSafe, RefUnwindSafe, AssertUnwindSafe}
- వెక్:: కుదించు_కు
- స్ట్రింగ్:: కుదించు_కు
- OsString::shrink_to
- PathBuf:: కుదించు_కు
- బైనరీ హీప్:: కుదించు_కు
- VecDeque::shrink_to
- HashMap::shrink_to
- HashSet::shrink_to
- స్థిరాంకాలకి బదులుగా ఏదైనా సందర్భంలో ఉపయోగించగల అవకాశాన్ని నిర్ణయించే "const" లక్షణం, ఫంక్షన్లలో ఉపయోగించబడుతుంది.
- std::mem:: ట్రాన్స్మ్యూట్
- [T]::మొదట
- [T]:: split_first
- [T]::చివరిది
- [T]::స్ప్లిట్_చివరి
- కంపైలర్ LLVM వెర్షన్ 13ని ఉపయోగించడానికి మార్చబడింది.
- aarch64-apple-ios-sim ప్లాట్ఫారమ్ కోసం రెండవ స్థాయి మద్దతు మరియు powerpc-unknown-freebsd మరియు riscv32imc-esp-espidf ప్లాట్ఫారమ్ల కోసం మూడవ స్థాయి మద్దతు అమలు చేయబడింది. మూడవ స్థాయి ప్రాథమిక మద్దతును కలిగి ఉంటుంది, కానీ ఆటోమేటెడ్ టెస్టింగ్ లేకుండా, అధికారిక బిల్డ్లను ప్రచురించడం లేదా కోడ్ని నిర్మించవచ్చో లేదో తనిఖీ చేయడం.
రస్ట్ మెమరీ భద్రతపై దృష్టి కేంద్రీకరిస్తుంది, ఆటోమేటిక్ మెమరీ నిర్వహణను అందిస్తుంది మరియు చెత్త కలెక్టర్ లేదా రన్టైమ్ను ఉపయోగించకుండా ఉద్యోగ అమలులో అధిక సమాంతరతను సాధించడానికి ఒక మార్గాన్ని అందిస్తుంది (రన్టైమ్ ప్రాథమిక లైబ్రరీ యొక్క ప్రాథమిక ప్రారంభ మరియు నిర్వహణకు తగ్గించబడుతుంది).
రస్ట్ యొక్క ఆటోమేటిక్ మెమరీ మేనేజ్మెంట్ పాయింటర్లను మానిప్యులేట్ చేసేటప్పుడు లోపాలను తొలగిస్తుంది మరియు తక్కువ-స్థాయి మెమరీ మానిప్యులేషన్ నుండి ఉత్పన్నమయ్యే సమస్యల నుండి రక్షిస్తుంది, ఉదాహరణకు మెమరీ ప్రాంతాన్ని విడుదల చేసిన తర్వాత యాక్సెస్ చేయడం, శూన్య పాయింటర్ డెరిఫరెన్స్లు, బఫర్ ఓవర్రన్లు మొదలైనవి. లైబ్రరీలను పంపిణీ చేయడానికి, అసెంబ్లీని నిర్ధారించడానికి మరియు డిపెండెన్సీలను నిర్వహించడానికి, ప్రాజెక్ట్ కార్గో ప్యాకేజీ మేనేజర్ను అభివృద్ధి చేస్తోంది. లైబ్రరీలను హోస్ట్ చేయడానికి crates.io రిపోజిటరీకి మద్దతు ఉంది.
మూలం: opennet.ru