Izdaja programskega jezika Rust 1.54

Izšla je izdaja sistemskega programskega jezika Rust 1.54, 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:

  • Dodana možnost uporabe makrov, podobnih funkcijam, znotraj atributov (proceduralni makri in makri, ustvarjeni z uporabo makra »macro_rules!«). Takšni makri se od funkcij razlikujejo po simbolu “!” za imenom (makro!(...)) in zamenjava izvornega besedila makra namesto generiranja klica funkcije. Klicanje makrov znotraj atributov je lahko koristno za vključitev vsebine iz drugih datotek v dokumentiranje komentarjev. Če želite na primer vstaviti vsebino datoteke README in rezultat izvajanja skripta, lahko podate: #![doc = include_str!("README.md")] #[path = concat!(env!("OUT_DIR" "), "/generated.rs" )] mod ustvarjen;
  • Vgrajene funkcije prevajalnika (Intrinsics) za platformo wasm32 so bile stabilizirane, kar omogoča uporabo navodil SIMD v WebAssembly. Večina funkcij, kot je v128_bitselect, je na voljo v "varnem" načinu, vendar nekatere funkcije, ki delujejo s kazalci (na primer v128_load), ostajajo "nevarne".
  • Vrnila se je privzeta uporaba inkrementalnega prevajanja, ki vam omogoča, da znova zgradite samo spremenjene dele kode, kar lahko znatno skrajša čas, potreben za izdelavo projekta pri ponovnem prevajanju po manjših spremembah. Inkrementalno prevajanje je bilo v izdaji 1.52.1 onemogočeno zaradi skritih napak, ki so se pojavile po dodajanju dodatnega preverjanja za nalaganje podatkov iz predpomnilnika diska.
  • Nov del API-jev je bil prenesen v stabilno kategorijo, vključno z naslednjimi stabiliziranimi:
      BTreeMap::into_keys
    • BTreeMap::into_values
    • HashMap::into_keys
    • HashMap::into_values
    • arch::wasm32
    • VecDeque::binary_search
    • VecDeque::binary_search_by
    • VecDeque::binary_search_by_key
    • VecDeque::partition_point
  • V cargo-tree so bile dodane možnosti: “—prune ” za odstranitev paketa iz grafa odvisnosti, “—depth” za prikaz samo elementov dane ravni gnezdenja v drevesu odvisnosti, “—edges no-proc- makro«, da skrijete odvisnosti proceduralnih makrov.

Vir: opennet.ru

Dodaj komentar