Rust 1.55 programavimo kalbos leidimas

Paskelbtas „Mozilla“ projekto įkurtos, bet dabar nepriklausomos ne pelno organizacijos „Rust Foundation“ globojamos sistemos programavimo kalbos „Rust 1.55“ leidimas. Kalba orientuota į atminties saugą, suteikia automatinį atminties valdymą ir suteikia priemones pasiekti aukštą užduočių lygiagretumą nenaudojant šiukšlių rinktuvo ar vykdymo laiko (vykdymo laikas sumažinamas iki pagrindinės standartinės bibliotekos inicijavimo ir priežiūros).

„Rust“ automatinis atminties valdymas pašalina klaidas manipuliuojant rodyklėmis ir apsaugo nuo problemų, kylančių dėl žemo lygio atminties manipuliavimo, pvz., prieigos prie atminties srities, kai ji buvo išlaisvinta, nulinių rodyklės nuorodų, buferio viršijimo ir kt. Bibliotekoms platinti, surinkimui užtikrinti ir priklausomybėms valdyti projekte kuriama Krovinių paketų tvarkyklė. Crates.io saugykla palaikoma bibliotekų prieglobai.

Pagrindinės naujovės:

  • „Cargo“ paketo tvarkyklė turi galimybę sujungti pasikartojančias klaidas ir įspėjimus, atsirandančius kūrimo metu. Vykdant komandas, tokias kaip „krovinio bandymas“ ir „krovinio patikrinimas – visi tikslai“, dėl kurių sukuriami keli paketo su skirtingais parametrais versijos, vartotojui dabar rodoma pasikartojančios problemos suvestinė, o ne rodoma. kelis identiškus įspėjimus pakartotinai kuriant tą patį failą. $ krovinys +1.55.0 patikrinimas —visi taikiniai Tikrinama foo v0.1.0 įspėjimas: funkcija niekada nenaudojama: 'foo' —> src/lib.rs:9:4 | 9 | fn foo() {} | ^^^ | = pastaba: '#[warn(dead_code)]' įjungtas pagal numatytuosius įspėjimus: 'foo' (lib) sugeneravo 1 įspėjimą: 'foo' (lib testas) sugeneravo 1 įspėjimą (1 dublikatas) Baigtas kūrimo tikslas [unoptimized + debuginfo] (s) per 0.84 sek
  • Slankaus kablelio analizės kodas standartinėje bibliotekoje buvo perkeltas į greitesnį ir tikslesnį Eisel-Lemire algoritmą, kuris išsprendė kai kurias anksčiau pastebėtas skaičių apvalinimo ir analizavimo problemas su labai dideliu skaitmenų skaičiumi.
  • Galimybė šablonuose nurodyti neuždarytas sritis buvo stabilizuotas („X...“ interpretuojamas kaip diapazonas, kuris prasideda reikšme X ir baigiasi didžiausia sveikojo skaičiaus tipo reikšme): suderinti x kaip u32 { 0 => println! ("nulis!"), 1.. => println!("teigiamas skaičius!"), }
  • Išplėsti klaidų variantai, kuriuos apima std::io::ErrorKind (klasifikuoja klaidas į kategorijas, pvz., NotFound ir ShouldBlock). Anksčiau klaidos, kurios netilpo į esamas kategorijas, pateko į kategoriją ErrorKind::Other, kuri taip pat buvo naudojama trečiosios šalies kodo klaidoms. Dabar yra atskira vidinė kategorija ErrorKind::Uncategorized klaidoms, kurios netelpa į esamas kategorijas, o kategorija ErrorKind::Other apsiriboja klaidomis, kurių nėra standartinėje bibliotekoje (standartinės bibliotekos funkcijos, kurios grąžina io::Error nebenaudokite ErrorKind:: kategorijos Kita).
  • Nauja API dalis buvo perkelta į stabiliųjų kategoriją, įskaitant stabilizuotus bruožų metodus ir įgyvendinimą:
    • Surištas::klonuotas
    • Drenažas::as_str
    • IntoInnerError::into_error
    • IntoInnerError::into_parts
    • MaybeUninit::sume_init_mut
    • MaybeUninit::sume_init_ref
    • MaybeUninit::write
    • masyvas::žemėlapis
    • ops::ControlFlow
    • x86::_bittest
    • x86::_bittestandcomplement
    • x86::_bittestandreset
    • x86::_bittestandset
    • x86_64::_bittest64
    • x86_64::_bittestandcomplement64
    • x86_64::_bittestandreset64
    • x86_64::_bittestandset64
  • Atributas „const“, nurodantis galimybę jį naudoti bet kuriame kontekste, o ne konstantose, naudojamas metode str::from_utf8_unchecked.
  • Trečiasis paramos lygis įdiegtas platformai powerpc64le-unknown-freebsd. Trečiasis lygis apima pagrindinį palaikymą, bet be automatinio testavimo, oficialių versijų paskelbimo ar patikrinimo, ar kodą galima sukurti.

Šaltinis: opennet.ru

Добавить комментарий