Rust 1.52 programmeerimiskeele väljalase

Ilmus Mozilla projektiga rajatud, kuid nüüdseks sõltumatu mittetulundusühingu Rust Foundation egiidi all arendatud süsteemi programmeerimiskeele Rust 1.52 väljalase. Keel keskendub mälu ohutusele, pakub automaatset mäluhaldust ja pakub vahendeid ülesannete suure paralleelsuse saavutamiseks ilma prügikogujat või käitusaega kasutamata (käitusaeg taandub standardse teegi põhikäivitamise ja hoolduseni).

Rusti automaatne mäluhaldus välistab osutitega manipuleerimisel tekkivad vead ja kaitseb madala tasemega mäluga manipuleerimisest tulenevate probleemide eest, nagu mälupiirkonnale juurdepääs pärast selle vabastamist, null-osuti viited, puhvri ületamised jne. Teekide levitamiseks, komplekteerimise tagamiseks ja sõltuvuste haldamiseks arendatakse projektis Cargo paketihaldurit. Hoidlat crates.io toetatakse teekide majutamiseks.

Peamised uuendused:

  • Eemaldatud käskude “cargo check” ja “cargo clippy” täitmise järjekorra sidumine. Varem ei käivitanud "cargo clippy" kutsumine pärast "lastikontrolli" utiliiti clippy (linter), kuna nende kontrollirežiimide vahemälu ei eraldatud. Nüüd on see probleem lahendatud ja järjekord, milles “lastilõike” ja “lastikontroll” kutsutakse, ei oma enam tähtsust.
  • API uus osa on üle viidud stabiilsesse kategooriasse, sealhulgas on stabiliseeritud järgmised meetodid:
    • Argumendid::as_str
    • char::MAX
    • char::REPLACEMENT_CHARACTER
    • char::UNICODE_VERSION
    • char::decode_utf16
    • char::from_digit
    • char::from_u32_unchecked
    • char::from_u32
    • slice::partition_point
    • str::rsplit_once
    • str::split_onece
  • Atribuuti “const”, mis määrab võimaluse kasutada seda konstantide asemel mis tahes kontekstis, kasutatakse järgmistes meetodites:
    • char::len_utf8
    • char::len_utf16
    • char::to_ascii_suurtähega
    • char::to_ascii_lowercase
    • char::eq_ignore_ascii_case
    • u8::to_ascii_suurtähega
    • u8::to_ascii_väiksed tähed
    • u8::eq_ignore_ascii_case
  • Lisatud on lintkontroll unsafe_op_in_unsafe_fn, et teha kindlaks, kas ebaturvalistes funktsioonides kasutatav ebaturvaline kood on raamitud ebaturvaliste plokkidega.
  • Massiividele on lubatud heita muudetavaid viiteid massiivi elemendi tüübile viitavateks osutiteks. let mut x: [usize; 2] = [0, 0]; olgu p = &mut x as *mut use; olgu p = &mut x as *const usize;
  • Clippyle (linter) on lisatud 9 uut tšekki.
  • Kaubapaketi haldur toetab nüüd pakettide jaoks JSON-i välja „manifest_path”. Lisati tugi litsentsiteabe täpsustamiseks SPDX 3.11 formaadis crates.io hoidlasse.
  • Testide käitamisel on lubatud määrata mitu filtrit, näiteks "lasti test - foo bar" käivitamisel käitatakse kõik testid, mis vastavad maskidele "foo" ja "bar".
  • Vaikimisi LLVM-i tööriistakomplekt on värskendatud versioonile LLVM 12.
  • Kolmas tugitase on rakendatud platvormidele s390x-unknown-linux-musl, riscv32gc-unknown-linux-musl, riscv64gc-unknown-linux-musl ja powerpc-unknown-openbsd. Kolmas tase hõlmab põhituge, kuid ilma automaatse testimiseta, ametlike järelversioonide avaldamise või koodi loomiseta.

Allikas: opennet.ru

Lisa kommentaar