Versió del llenguatge de programació Rust 1.52

S'ha publicat el llançament del llenguatge de programació del sistema Rust 1.52, fundat pel projecte Mozilla, però ara desenvolupat sota els auspicis de l'organització independent sense ànim de lucre Rust Foundation. El llenguatge se centra en la seguretat de la memòria, proporciona una gestió automàtica de la memòria i proporciona els mitjans per aconseguir un paral·lelisme de tasques elevat sense utilitzar un col·lector d'escombraries o temps d'execució (el temps d'execució es redueix a la inicialització i manteniment bàsics de la biblioteca estàndard).

La gestió automàtica de la memòria de Rust estalvia al desenvolupador d'errors en manipular punters i protegeix dels problemes que sorgeixen a causa de la manipulació de la memòria de baix nivell, com ara accedir a una àrea de memòria després d'haver estat alliberada, desreferenciar punters nuls, desbordaments de memòria intermèdia, etc. Per distribuir biblioteques, proporcionar compilacions i gestionar dependències, el projecte desenvolupa el gestor de paquets Cargo. El repositori crates.io és compatible per allotjar biblioteques.

Principals innovacions:

  • S'ha eliminat la vinculació a l'ordre d'execució de les ordres "comprovació de càrrega" i "cargo clippy". Anteriorment, anomenar "cargo clippy" després de "cargo check" no llançava la utilitat clippy (linter) a causa de la manca de separació de la memòria cau per a aquests modes de verificació. Ara aquest problema s'ha resolt i l'ordre en què s'anomenen "cargo clippy" i "cargo check" ja no importa.
  • S'ha transferit una nova part de l'API a la categoria estable, inclosos els mètodes següents s'han estabilitzat:
    • Arguments::as_str
    • char::MAX
    • char::REPLACEMENT_CHARACTER
    • char::UNICODE_VERSION
    • char::decode_utf16
    • char::from_digit
    • char::from_u32_unchecked
    • char::from_u32
    • slice::punt_partició
    • str::rsplit_once
    • str::split_once
  • L'atribut "const", que determina la possibilitat d'utilitzar-lo en qualsevol context en lloc de constants, s'utilitza en els mètodes:
    • char::len_utf8
    • char::len_utf16
    • char::to_ascii_majúscula
    • char::to_ascii_minuscules
    • char::eq_ignore_ascii_case
    • u8::a_ascii_majúscula
    • u8::a_ascii_minúscula
    • u8::eq_ignore_ascii_case
  • S'ha afegit la comprovació de pelusa unsafe_op_in_unsafe_fn per determinar si el codi no segur utilitzat en funcions no segures està emmarcat per blocs no segurs.
  • Es permet llançar punters mutables a matrius en forma de punters al tipus d'element de matriu. deixar mut x: [usize; 2] = [0, 0]; deixa p = &mut x com *mut use; deixa p = &mut x com *const usize;
  • S'han afegit 9 xecs nous a clippy (linter).
  • El gestor de paquets de càrrega ara admet el camp "manifest_path" a JSON per als paquets. S'ha afegit suport per especificar informació de llicència en format SPDX 3.11 al dipòsit crates.io.
  • Es permet especificar diversos filtres quan s'executen proves, per exemple, l'execució de "prova de càrrega - foo bar" executarà totes les proves que coincideixin amb les màscares "foo" i "bar".
  • El conjunt d'eines LLVM predeterminat s'ha actualitzat a LLVM 12.
  • El tercer nivell de suport s'ha implementat per a les plataformes s390x-unknown-linux-musl, riscv32gc-unknown-linux-musl, riscv64gc-unknown-linux-musl i powerpc-unknown-openbsd. El tercer nivell inclou el suport bàsic, però sense proves automatitzades, publicar compilacions oficials o comprovar si es pot crear el codi.

Font: opennet.ru

Afegeix comentari