Ilmus programmeerimiskeel Rust 1.47

Avaldatud programmeerimiskeele versioon 1.47 Rust, mille on loonud Mozilla projekt. Keel on keskendunud mĂ€lusĂŒsteemi turvalisele töötlusele, tagab automaatse mĂ€lu haldamise ja pakub vahendeid kĂ”rge paralleelsuse saavutamiseks ĂŒlesannete tĂ€itmisel, ilma et oleks vaja jÀÀtme kogijat ja runtime (kĂ€itamine piirdub pĂ”hialustamise ja standardraamatukogu hooldamisega).

Rustis automaatne mÀlu haldus vabastab arendaja nÀidikutest ja kaitseb madala taseme mÀlu kÀsitlusega seotud probleemide eest, nagu nÀiteks mÀlu juurde pÀÀsemine pÀrast selle vabastamist, nullnÀidikute dereferentsimine, puhverserverist vÀlja minemine jne. Teegikogude levitamiseks, koostamise tagamiseks ja sÔltuvuste haldamiseks areneb vÀlja pakihaldur. Cargo. Raamatukogude paigutamiseks toetatakse registrit crates.io.

Peamised uuendused:

  • On rakendatud toetust tĂŒĂŒbitel vahemikele mÔÔtmatud. Varem, kuna ei olnud vĂ”imalik mÀÀrata generilisi funktsioone kĂ”igi tĂ€isarvude jaoks, pakkus standardraamatukogu sisseehitatud toetust tĂŒĂŒbitel ainult vahemikele, mille suurus ei ĂŒletanud 32 elementi (iga suuruse tĂŒĂŒp oli mÀÀratud staatiliselt). TĂ€nu konstandi generikate funktsionaalsuse loomisele on nĂŒĂŒd vĂ”imalik mÀÀratleda generilisi funktsioone mis tahes suurusega vahemike jaoks, kuid need ei ole veel stabiliseeritud keele omaduste hulka lisatud, kuigi need on teostatud kompilaatoris ja nĂŒĂŒd kaasatud standardraamatukogus vahemike tĂŒĂŒpide jaoks, olenemata suurusest.

    NÀiteks jÀrgmine konstruktsioon Rust 1.47 toob esile massiivi sisu, kuigi see oleks varem pÔhjustanud vea:

    fn main() {
    let xs = [0; 34];

    println!(«{:?}», xs);
    }

  • Tagatud on lĂŒhemad jĂ€lgimisjooned (backtrace), mis kuvatakse erakorraliste olukordade korral. JĂ€lgimisjoontest on vĂ€lja jĂ€etud elemendid, mis ei ole enamikus olukordades huvipakkuvad, kuid segavad vĂ€ljundit ja hĂ€irivad tĂ€helepanu probleemide esmaste pĂ”hjuste leidmisel. Terve jĂ€lgimise saamiseks saab kasutada keskkonnamuutujat «RUST_BACKTRACE=full». NĂ€iteks koodi puhul

    fn main() {
    panic!();
    }

    varem kuvatud jĂ€lgimine 23 sammust, nĂŒĂŒd on see vĂ€hendatud
    3 sammuks, mis aitavad kohe tuvastada sisu:

    thread ‘main’ panicked at ‘explicit panic’, src/main.rs:2:5
    stack backtrace:
    0: std::panicking::begin_panic
    at /rustc/d
d75a/library/std/src/panicking.rs:497
    1: playground::main
    at ./src/main.rs:2
    2: core::ops::function::FnOnce::call_once
    at /rustc/d
d75a/library/core/src/ops/function.rs:227

  • Kompilaator rustc on vĂ€rskendatud versiooniga, mis kasutab LLVM 11 (Rust kasutab LLVM tagasiharu koodigeneratsiooniks ). Samuti on sĂ€ilinud vĂ”imalus kompileerida vanade LLVM versioonidega, alates versioonist 8, kuid vaikesĂ€tetena (rust-lang/llvm-project ) kasutatakse nĂŒĂŒd LLVM 11. LLVM 11 kĂ€ivitamine on oodata jĂ€rgmisel nĂ€dalal.) nĂŒĂŒd kasutatakse LLVM 11. LLVM 11 vĂ€ljaanne on oodata lĂ€hiajal.
  • Windows platvormil rustc kompilaatoris on tagatud tĂ€iendavate kontrollide aktiveerimine töötĂ”rgete kaitseks (Control Flow Guard), mida saab aktiveerida flagi „-C control-flow-guard“ abil. Teistel platvormidel seda lippu praegu ignoreeritakse.
  • Uue API osa on tĂ”lgitud stabiilsete ridade hulka, sealhulgas on stabiliseeritud
    Ident::new_raw,
    Range::is_empty,
    RangeInclusive::is_empty,
    Result::as_deref,
    Result::as_deref_mut,
    Vec::leak,
    pointer::offset_from,
    f32::TAU ja
    f64::TAU.
  • MĂ€rgistus „const”, mis mÀÀratleb kasutamise vĂ”imaluse mis tahes kontekstis konstantide asemel, on rakendatud meetodites:
    • new kĂ”igi mitte-nullsete tĂ€isarvude jaoks;
    • checked_add, checked_sub, checked_mul, checked_neg, checked_shl, checked_shr, saturating_add, saturating_sub ja saturating_mul kĂ”igi tĂ€isarvude jaoks;
    • is_ascii_alphabetic, is_ascii_uppercase, is_ascii_lowercase, is_ascii_alphanumeric, is_ascii_digit, is_ascii_hexdigit, is_ascii_punctuation, is_ascii_graphic, is_ascii_whitespace ja is_ascii_control char ja u8 tĂŒĂŒpide jaoks.
  • FreeBSD jaoks kasutatakse FreeBSD 11.4 tööriistakomplekt (FreeBSD 10 ei toeta LLVM 11).

Allikas: opennet.ru

Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne veebihosting DDoS kaitsega, VPS VDS serverid | ProHoster