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

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

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

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

  • కార్గో ప్యాకేజీ మేనేజర్ ప్రత్యామ్నాయ ప్యాకేజీ రిజిస్ట్రీలతో పనిచేయడానికి సాధనాలను జోడించారు, అది crates.io పబ్లిక్ రిజిస్ట్రీతో కలిసి ఉంటుంది. ఉదాహరణకు, యాజమాన్య అప్లికేషన్‌ల డెవలపర్‌లు ఇప్పుడు వారి స్వంత ప్రైవేట్ రిజిస్ట్రీని ఉపయోగించవచ్చు, ఇది Cargo.tomlలో డిపెండెన్సీలను జాబితా చేసేటప్పుడు ఉపయోగించవచ్చు మరియు వారి ఉత్పత్తులకు crates.io మాదిరిగానే సంస్కరణ మోడల్‌ను వర్తింపజేయవచ్చు, అలాగే రెండు క్రేట్‌లకు డిపెండెన్సీలను సూచించవచ్చు. io మరియు మీ స్వంత రిజిస్ట్రీకి.

    .cargo/configకి బాహ్య రిజిస్ట్రీలను జోడించడానికి ($HOMEలో లేదా ప్యాకేజీ డైరెక్టరీలో ఉంది)
    అందించారు విభాగం “[రిజిస్ట్రీలు]”, మరియు బాహ్య రిజిస్ట్రీని ఉపయోగించడానికి, Cargo.tomlలోని ప్రతి డిపెండెన్సీ వివరణలో “రిజిస్ట్రీ” ఎంపిక కనిపించింది. అదనపు రిజిస్ట్రీకి కనెక్ట్ చేయడానికి, ~/.cargo/credentials ఫైల్‌లో ధృవీకరణ టోకెన్‌ను ఉంచండి మరియు ఆదేశాన్ని అమలు చేయండి
    "కార్గో లాగిన్ --రిజిస్ట్రీ=మై-రిజిస్ట్రీ" మరియు ప్యాకేజీని ప్రచురించడానికి -
    "కార్గో పబ్లిష్ -రిజిస్ట్రీ=నా-రిజిస్ట్రీ";

  • “?” ఆపరేటర్‌ని ఉపయోగించడానికి పూర్తి మద్దతు జోడించబడింది. పరీక్షలలో వైద్యులు, డాక్యుమెంటేషన్ నుండి ఉదాహరణ కోడ్‌ను పరీక్షలుగా ఉపయోగించడానికి మిమ్మల్ని అనుమతిస్తుంది. గతంలో ఆపరేటర్
    "?" "fn మెయిన్()" ఫంక్షన్ సమక్షంలో లేదా "#[test]" ఫంక్షన్‌లలో మాత్రమే పరీక్ష అమలు సమయంలో లోపాలను నిర్వహించడానికి ఉపయోగించవచ్చు;

  • విధానపరమైన మాక్రోలను ఉపయోగించి నిర్వచించబడిన అనుకూల లక్షణాలలో సురక్షితం టోకెన్ల యొక్క ఏకపక్ష సెట్లను ఉపయోగించగల సామర్థ్యం (“#[attr($tokens)]”, “#[attr[$tokens]] మరియు #[attr{$tokens}]”). ఇంతకుముందు, మూలకాలను స్ట్రింగ్ లిటరల్స్ ఉపయోగించి చెట్టు/పునరావృత రూపంలో మాత్రమే పేర్కొనవచ్చు, ఉదాహరణకు “#[foo(bar, baz(quux, foo = “bar”)))]”, కానీ ఇప్పుడు గణనలను ఉపయోగించడం సాధ్యమవుతుంది (' #[పరిధి(0. .10)]') మరియు “#[బౌండ్(T: MyTrait)]” వంటి నిర్మాణాలు;
  • స్థిరీకరించిన రకాలు (లక్షణం) నుండి ప్రయత్నించండి и ప్రయత్నించండి, ఎర్రర్ హ్యాండ్లింగ్‌తో టైప్ కన్వర్షన్‌లను అనుమతిస్తుంది. ఉదాహరణకు, పూర్ణాంక రకాలతో from_be_bytes వంటి పద్ధతులు శ్రేణులను ఇన్‌పుట్‌గా ఉపయోగిస్తాయి, అయితే డేటా తరచుగా స్లైస్ రకంలో వస్తుంది మరియు శ్రేణులు మరియు స్లైస్‌ల మధ్య మార్చడం మాన్యువల్‌గా చేయడం సమస్యాత్మకం. కొత్త లక్షణాల సహాయంతో, పేర్కొన్న ఆపరేషన్‌ను .try_into()కి కాల్ చేయడం ద్వారా ఫ్లైలో నిర్వహించవచ్చు, ఉదాహరణకు, “లెట్ num = u32::from_be_bytes(slice.try_into()?)”. ఎల్లప్పుడూ విజయవంతమైన మార్పిడుల కోసం (ఉదాహరణకు, రకం u8 నుండి u32 వరకు), ఎర్రర్ రకం జోడించబడింది అమోఘమైన, పారదర్శక వినియోగాన్ని అనుమతిస్తుంది
    "From" యొక్క అన్ని అమలుల కోసం ప్రయత్నించండి;

  • ఫంక్షన్ నిలిపివేయబడింది CommandExt::before_exec, ఇది కార్యనిర్వాహకుడిని అమలు చేయడానికి ముందు హ్యాండ్లర్‌ను అమలు చేయడానికి అనుమతించింది, ఇది ఫోర్క్() కాల్ తర్వాత ఫోర్క్ చేయబడిన చైల్డ్ ప్రాసెస్ సందర్భంలో అమలు చేయబడుతుంది. అటువంటి పరిస్థితులలో, ఫైల్ డిస్క్రిప్టర్లు మరియు మ్యాప్ చేయబడిన మెమరీ ప్రాంతాలు వంటి పేరెంట్ ప్రాసెస్ యొక్క కొన్ని వనరులు నకిలీ చేయబడవచ్చు, ఇది నిర్వచించబడని ప్రవర్తన మరియు లైబ్రరీల తప్పు ఆపరేషన్‌కు దారితీయవచ్చు.
    before_execకి బదులుగా అసురక్షిత ఫంక్షన్‌ని ఉపయోగించమని సిఫార్సు చేయబడింది CommandExt::pre_exec.

  • 8 నుండి 64 బిట్‌ల పరిమాణంలో స్థిరీకరించబడిన మరియు సంతకం చేయని అణు పూర్ణాంకాల రకాలు (ఉదాహరణకు, పరమాణువు8), అలాగే సంతకం చేసిన రకాలు నాన్ జీరోఐ[8|16|32|64|128].
  • ఏదైనా::type_id, Error::type_id, slice::sort_by_cached_key, str::escape_*, str::split_ascii_whitespace, Instant::checked_[add|subతో సహా APIలోని కొత్త భాగం స్థిరమైన వర్గానికి తరలించబడింది. ] మరియు SystemTime పద్ధతులు స్థిరీకరించబడ్డాయి ::checked_[add|sub]. iter::from_fn మరియు iter:: అనుచరుల ఫంక్షన్‌లు స్థిరీకరించబడ్డాయి;
  • అన్ని పూర్ణాంకాల రకాల కోసం, చెక్డ్_పౌ, సాచురేటింగ్_పౌ, ర్యాపింగ్_పౌ మరియు ఓవర్‌ఫ్లోవింగ్_పౌ పద్ధతులు అమలు చేయబడతాయి;
  • “-C linker-plugin-lto” బిల్డ్ ఎంపికను పేర్కొనడం ద్వారా లింకింగ్ దశలో ఆప్టిమైజేషన్‌లను ఎనేబుల్ చేసే సామర్థ్యం జోడించబడింది.

మూలం: opennet.ru

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