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

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

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

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

  • రకాల కోసం అమలు చేయబడిన మద్దతు శ్రేణులు ఏదైనా పరిమాణం. మునుపు, అన్ని పూర్ణాంకాల విలువలకు జెనరిక్ ఫంక్షన్‌లను నిర్వచించడంలో అసమర్థత కారణంగా, ప్రామాణిక లైబ్రరీ అంతర్నిర్మిత లక్షణ మద్దతును 32 మూలకాల పరిమాణంలో ఉన్న శ్రేణులకు మాత్రమే అందించింది (ప్రతి పరిమాణానికి సంబంధించిన లక్షణాలు స్థిరంగా నిర్వచించబడ్డాయి). స్థిరమైన జెనరిక్స్ ("కాన్స్ట్ జెనరిక్స్") యొక్క కార్యాచరణను సృష్టించినందుకు ధన్యవాదాలు, ఏదైనా శ్రేణి పరిమాణం కోసం సాధారణ ఫంక్షన్‌లను నిర్వచించడం సాధ్యమైంది, అయితే అవి కంపైలర్‌లో అమలు చేయబడినప్పటికీ స్థిరమైన భాషా లక్షణాలలో ఇంకా చేర్చబడలేదు. ఇప్పుడు చేరి ఏ పరిమాణం యొక్క శ్రేణి లక్షణాల కోసం ప్రామాణిక లైబ్రరీలో.

    ఉదాహరణకు, రస్ట్ 1.47లోని క్రింది నిర్మాణం శ్రేణి యొక్క కంటెంట్‌లను ప్రింట్ చేస్తుంది, అయితే ఇది ఇంతకు ముందు లోపం ఏర్పడుతుంది:

    fn ప్రధాన() {
    xs = [0; 34];

    println!("{:?}", xs);
    }

  • షార్ట్ ట్రేస్‌ల అవుట్‌పుట్ (బ్యాక్‌ట్రేస్), అత్యవసర పరిస్థితుల్లో అవుట్‌పుట్ అందించబడింది. చాలా సందర్భాలలో ఆసక్తి లేని అంశాలు, కానీ అవుట్‌పుట్‌ను అస్తవ్యస్తం చేయడం మరియు సమస్య యొక్క ప్రాథమిక కారణాల నుండి దృష్టిని మరల్చడం వంటివి ట్రేస్ నుండి మినహాయించబడ్డాయి. పూర్తి ట్రేస్‌ని తిరిగి ఇవ్వడానికి, మీరు ఎన్విరాన్‌మెంట్ వేరియబుల్ "RUST_BACKTRACE=full"ని ఉపయోగించవచ్చు. ఉదాహరణకు, కోడ్ కోసం

    fn ప్రధాన() {
    భయాందోళనలు!();
    }

    గతంలో, ట్రేస్ అవుట్‌పుట్ 23 దశల్లో ఉండేది, కానీ ఇప్పుడు అది తగ్గించబడుతుంది
    సారాన్ని వెంటనే గ్రహించడానికి మిమ్మల్ని అనుమతించే 3 దశలు:

    థ్రెడ్ 'ప్రధాన' 'స్పష్టమైన భయాందోళన' వద్ద భయాందోళనకు గురైంది, src/main.rs:2:5
    స్టాక్ బ్యాక్‌ట్రేస్:
    0: std::panicking::begin_panic
    వద్ద /rustc/d…d75a/library/std/src/panicking.rs:497
    1: ప్లేగ్రౌండ్:: ప్రధాన
    ./src/main.rs:2 వద్ద
    2: కోర్::ops:: ఫంక్షన్::FnOnce::call_one
    వద్ద /rustc/d…d75a/library/core/src/ops/function.rs:227

  • rustc కంపైలర్ ఉపయోగించి నిర్మించడానికి నవీకరించబడింది LLVM 11 (తుప్పు ఉపయోగాలు బ్యాకెండ్‌గా LLVM కోడ్ ఉత్పత్తి) అదే సమయంలో, వెర్షన్ 8 వరకు పాత LLVMలతో నిర్మించగల సామర్థ్యం అలాగే ఉంచబడుతుంది, కానీ డిఫాల్ట్‌గా (లో rust-lang/llvm-project) ఇప్పుడు LLVM 11ని ఉపయోగిస్తున్నారు. LLVM 11 రాబోయే రోజుల్లో విడుదలయ్యే అవకాశం ఉంది.
  • విండోస్ ప్లాట్‌ఫారమ్‌లో, "-C కంట్రోల్-ఫ్లో-గార్డ్" ఫ్లాగ్ ఉపయోగించి యాక్టివేట్ చేయబడిన కంట్రోల్ ఫ్లో సమగ్రత తనిఖీలను (కంట్రోల్ ఫ్లో గార్డ్) ఎనేబుల్ చేయడానికి rustc కంపైలర్ మద్దతును అందిస్తుంది. ఇతర ప్లాట్‌ఫారమ్‌లలో ఈ ఫ్లాగ్ ప్రస్తుతానికి విస్మరించబడింది.
  • APIల యొక్క కొత్త భాగం స్థిరీకరించబడిన వాటితో సహా స్థిరమైన వర్గానికి బదిలీ చేయబడింది
    గుర్తింపు::కొత్త_రా,
    పరిధి:: is_empty,
    పరిధిని కలుపుకొని:: is_empty,
    ఫలితం::as_deref,
    ఫలితం::as_deref_mut,
    వెక్:: లీక్,
    పాయింటర్::offset_from,
    f32::TAU మరియు
    f64::TAU.

  • స్థిరాంకాలకి బదులుగా ఏదైనా సందర్భంలో ఉపయోగించగల అవకాశాన్ని నిర్ణయించే “const” లక్షణం, పద్ధతులలో ఉపయోగించబడుతుంది:
    • సున్నా కాకుండా అన్ని పూర్ణాంకాల కోసం కొత్తది;
    • చెక్డ్_యాడ్, చెక్డ్_సబ్, చెక్డ్_ముల్, చెక్డ్_నెగ్, చెక్డ్_స్ఎల్, చెక్డ్_ష్ఆర్, శాచురేటింగ్_యాడ్, సాచురేటింగ్_సబ్ మరియు సాచురేటింగ్_ముల్ అన్ని పూర్ణాంకాల కోసం;
    • is_ascii_alphabetic, is_ascii_uppercase, is_ascii_చిన్న అక్షరం, is_ascii_alphanumeric, is_ascii_digit, is_ascii_hexdigit, is_ascii_Punctuation, is_ascii_graphic, is_ascii_whitespace and is_ascichari_ రకాలు మరియు
  • FreeBSD కోసం చేరి FreeBSD 11.4 నుండి టూల్‌కిట్ (FreeBSD 10 LLVM 11కి మద్దతు ఇవ్వదు).

మూలం: opennet.ru

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