Rust 1.52 Programlingvo-Eldono

La eldono de la sistema programlingvo Rust 1.52, fondita de la projekto Mozilla, sed nun disvolvita sub la aŭspicioj de la sendependa neprofitcela organizaĵo Rust Foundation, estis publikigita. La lingvo temigas memorsekurecon, disponigas aŭtomatan memoradministradon, kaj disponigas la rimedojn por atingi altan taskoparalelecon sen uzado de rubkolektilo aŭ rultempo (rultempo estas reduktita al baza inicialigo kaj prizorgado de la norma biblioteko).

La aŭtomata memoradministrado de Rust eliminas erarojn dum manipulado de montriloj kaj protektas kontraŭ problemoj ekestiĝantaj de malalt-nivela memormanipulado, kiel ekzemple alirado de memorregiono post kiam ĝi estis liberigita, nulaj montriloj dereferences, bufrotranspasoj, ktp. Por distribui bibliotekojn, certigi kunigon kaj administri dependecojn, la projekto disvolvas la Cargo-pakaĵmanaĝeron. La deponejo crates.io estas subtenata por gastigado de bibliotekoj.

Ĉefaj novigoj:

  • Forigita ligado al la ordo de ekzekuto de la "kargokontrolo" kaj "kargo clippy" komandoj. Antaŭe, voki "kargo clippy" post "kargokontrolo" ne lanĉis la clippy-ilaĵon (linter) pro la manko de kaŝmemoro apartigo por tiuj ĉekreĝimoj. Nun ĉi tiu problemo estis solvita kaj la ordo en kiu "kargo clippy" kaj "kargokontrolo" estas nomitaj ne plu gravas.
  • Nova parto de la API estis translokigita al la stabila kategorio, inkluzive de la sekvaj metodoj estis stabiligitaj:
    • Argumentoj::as_str
    • char::MAX
    • char::REPLACEMENT_CHARACTER
    • char::UNICODE_VERSION
    • char::decode_utf16
    • char::de_cifero
    • char::from_u32_unchecked
    • char::from_u32
    • slice::partition_point
    • str::rsplit_once
    • str::dividi_unufoje
  • La atributo "const", kiu determinas la eblecon uzi ĝin en iu ajn kunteksto anstataŭ konstantoj, estas uzata en la metodoj:
    • char::len_utf8
    • char::len_utf16
    • char::to_ascii_majuskla
    • char::to_ascii_minuskla
    • char::eq_ignore_ascii_case
    • u8::to_ascii_majuskla
    • u8::al_ascii_minuskla
    • u8::eq_ignore_ascii_case
  • Aldonita lint-kontrolo unsafe_op_in_unsafe_fn por determini ĉu nesekura kodo uzata en nesekuraj funkcioj estas enkadrigita de nesekuraj blokoj.
  • Estas permesite ĵeti ŝanĝeblajn montrilojn al tabeloj en la formon de montriloj al la speco de la tabelelemento. lasu mut x: [uzi; 2] = [0, 0]; lasu p = &mut x kiel *mut uzi; lasu p = &mut x as *const usize;
  • 9 novaj ĉekoj estis aldonitaj al clippy (linter).
  • La administranto de ŝarĝo-pakaĵo nun subtenas la kampon "manifest_path" en JSON por pakaĵoj. Aldonita subteno por specifi licencinformojn en SPDX 3.11-formato al la deponejo crates.io.
  • Estas permesite specifi plurajn filtrilojn dum rulado de testoj, ekzemple ruli "kargotesto - foo bar" ruligos ĉiujn testojn kongruantajn kun la maskoj "foo" kaj "bar".
  • La defaŭlta LLVM ilaro estis ĝisdatigita al LLVM 12.
  • La tria nivelo de subteno estis efektivigita por la platformoj s390x-unknown-linux-musl, riscv32gc-unknown-linux-musl, riscv64gc-unknown-linux-musl kaj powerpc-unknown-openbsd. La tria nivelo implikas bazan subtenon, sed sen aŭtomatigita testado, publikigo de oficialaj konstruoj, kaj konfirmo de kodkonstruebleco.

fonto: opennet.ru

Aldoni komenton