Izdaja programskega jezika Rust 1.52

Izšla je izdaja sistemskega programskega jezika Rust 1.52, ki ga je utemeljil projekt Mozilla, zdaj pa se razvija pod okriljem neodvisne neprofitne organizacije Rust Foundation. Jezik se osredotoča na varnost pomnilnika, zagotavlja samodejno upravljanje pomnilnika in zagotavlja sredstva za doseganje visoke vzporednosti opravil brez uporabe zbiralnika smeti ali izvajalnega okolja (izvajalni čas je zmanjšan na osnovno inicializacijo in vzdrževanje standardne knjižnice).

Rustovo samodejno upravljanje pomnilnika reši razvijalca pred napakami pri manipulaciji s kazalci in ščiti pred težavami, ki nastanejo zaradi manipulacije s pomnilnikom na nizki ravni, kot je dostop do območja pomnilnika, potem ko je bilo osvobojeno, dereferenciranje ničelnih kazalcev, prekoračitev medpomnilnika itd. Za distribucijo knjižnic, zagotavljanje gradenj in upravljanje odvisnosti projekt razvija upravitelja paketov Cargo. Repozitorij crates.io je podprt za gostovanje knjižnic.

Glavne novosti:

  • Odstranjena vezava na vrstni red izvajanja ukazov »cargo check« in »cargo clippy«. Prejšnje klicanje »cargo clippy« za »cargo check« ni zagnalo pripomočka clippy (linter) zaradi pomanjkanja ločevanja predpomnilnika za te načine preverjanja. Zdaj je ta težava odpravljena in vrstni red, v katerem se kličeta »cargo clippy« in »cargo check« ni več pomemben.
  • Nov del API-ja je bil prenesen v stabilno kategorijo, vključno s stabiliziranimi naslednjimi metodami:
    • Argumenti::as_str
    • char::MAX
    • char::REPLACEMENT_CHARACTER
    • char::UNICODE_VERSION
    • char::decode_utf16
    • char::from_digit
    • char::from_u32_neoznačeno
    • char::from_u32
    • slice::partition_point
    • str::rsplit_once
    • str::split_once
  • Atribut »const«, ki določa možnost uporabe v kateremkoli kontekstu namesto konstant, se uporablja v metodah:
    • char::len_utf8
    • char::len_utf16
    • char::to_ascii_uppercase
    • char::to_ascii_male črke
    • char::eq_ignore_ascii_case
    • u8::to_ascii_uppercase
    • u8::to_ascii_male črke
    • u8::eq_ignore_ascii_case
  • Dodano preverjanje lint unsafe_op_in_unsafe_fn za ugotavljanje, ali je nevarna koda, uporabljena v nevarnih funkcijah, uokvirjena z nevarnimi bloki.
  • Spremenljive kazalce na matrike je dovoljeno pretvoriti v obliko kazalcev na vrsto elementa matrike. naj mut x: [uporaba; 2] = [0, 0]; naj p = &mut x kot *mut uporabi; naj p = &mut x kot *const uporaba;
  • V clippy (linter) je bilo dodanih 9 novih preverjanj.
  • Upravitelj paketov cargo zdaj podpira polje »manifest_path« v JSON za pakete. Dodana podpora za podajanje informacij o licenci v formatu SPDX 3.11 v repozitorij crates.io.
  • Pri izvajanju testov je dovoljeno določiti več filtrov, na primer izvajanje "cargo test - foo bar" bo zagnalo vse teste, ki se ujemajo z maskama "foo" in "bar".
  • Privzeti komplet orodij LLVM je bil posodobljen na LLVM 12.
  • Tretja raven podpore je bila implementirana za platforme s390x-unknown-linux-musl, riscv32gc-unknown-linux-musl, riscv64gc-unknown-linux-musl in powerpc-unknown-openbsd. Tretja raven vključuje osnovno podporo, vendar brez avtomatiziranega testiranja, objave uradnih gradenj ali preverjanja, ali je kodo mogoče zgraditi.

Vir: opennet.ru

Dodaj komentar