Vydanie programovacieho jazyka Rust 1.63

Bol vydaný univerzálny programovací jazyk Rust 1.63, založený projektom Mozilla, ale teraz vyvinutý pod záštitou nezávislej neziskovej organizácie Rust Foundation. Jazyk sa zameriava na bezpečnosť pamäte a poskytuje prostriedky na dosiahnutie vysokej paralelnosti úloh, pričom sa vyhýba používaniu zberača odpadu a runtime (beh je zredukovaný na základnú inicializáciu a údržbu štandardnej knižnice).

Metódy spracovania pamäte Rustu chránia vývojára pred chybami pri manipulácii s ukazovateľmi a chránia pred problémami, ktoré vznikajú v dôsledku nízkoúrovňového spracovania pamäte, ako je prístup k oblasti pamäte po jej uvoľnení, dereferencovanie nulových ukazovateľov, pretečenie vyrovnávacej pamäte atď. Na distribúciu knižníc, poskytovanie zostáv a správu závislostí projekt vyvíja správcu balíkov Cargo. Úložisko crates.io je podporované pre hosťovanie knižníc.

Bezpečnosť pamäte je v Rust zabezpečená v čase kompilácie prostredníctvom kontroly referencií, sledovania vlastníctva objektu, sledovania životnosti objektov (rozsahov) a hodnotenia správnosti prístupu do pamäte počas vykonávania kódu. Rust tiež poskytuje ochranu proti pretečeniu celých čísel, vyžaduje povinnú inicializáciu hodnôt premenných pred použitím, lepšie zvláda chyby v štandardnej knižnici, štandardne aplikuje koncept nemenných referencií a premenných, ponúka silné statické typovanie na minimalizáciu logických chýb.

Hlavné inovácie:

  • Pridané rozhranie std::thread::scope API, ktoré vám umožňuje vytvárať vlákna s rozsahom. Na rozdiel od predtým dostupných vlákien, nové std::thread::scope API umožňuje odovzdávanie nestatických údajov, zatiaľ čo vlákna vytvorené pomocou klasického std::thread::spawn API museli vlastniť všetky odovzdané argumenty a nemohli prijímať vypožičané premenné. Rozhranie std::thread::scope API zaisťuje, že všetky vytvorené vlákna sú ukončené pred vrátením údajov, čím poskytuje primerané zabezpečenie mechanizmu výpožičiek.
  • Boli navrhnuté nové typy obalov pre deskriptory súborov – BorrowedFd a OwnedFd, ktoré poskytujú výpožičky a vlastníctvo. Typy sú označené "#[repr(transparent)], čo umožňuje ich priame použitie v externých väzbách C spôsobom, ktorý je vedomý vlastníctva.
  • Poskytuje možnosť volať Condvar::new, Mutex::new a RwLock::new v kontexte konštánt na vytvorenie globálnych statických hodnôt Mutex, RwLock a Condvar ​​bez použitia balíkov lazy_static.
  • Pre funkcie ako fn foo (hodnota: T, f: impl Copy) je povolená syntax ako „foo::“. (32, 3)“, pričom sa výslovne uvádza typ generika.
  • Prechod na používanie techniky NLL (Non-Lexical Lifetimes) na identifikáciu problémov s premennými požičiavania bol dokončený. NLL zohľadňuje na úrovni množiny ukazovateľov v grafe toku vykonávania, čo umožňuje zvýšiť kvalitu kontroly premenných výpožičiek (kontrola výpožičiek) a umožňuje vykonávanie niektorých typov správneho kódu, použitie tzv. čo predtým viedlo k chybe. Podpora pre starý mechanizmus, ktorý používal celoživotné viazanie na lexikálnej úrovni, bola teraz úplne odstránená z rustc a použitie nového NLL bolo implementované v celom rozsahu.
  • Nová časť API bola presunutá do kategórie stabilných, vrátane metód a implementácií vlastností boli stabilizované:
    • pole::from_fn
    • Box::into_pin
    • BinaryHeap::try_reserve
    • BinaryHeap::try_reserve_exact
    • OsString::try_reserve
    • OsString::try_reserve_exact
    • PathBuf::try_reserve
    • PathBuf::try_reserve_exact
    • Cesta::try_existuje
    • Ref::filter_map
    • RefMut::filter_map
    • NonNull::<[T]>::len
    • ToOwned::clone_into
    • Ipv6Addr::to_ipv4_mapped
    • unix::io::AsFd
    • unix::io::BorrowedFd<'fd>
    • unix::io::OwnedFd
    • okná::io::AsHandle
    • windows::io::BorrowedHandle

      Zdroj: opennet.ru
Kúpte si spoľahlivý hosting pre stránky s DDoS ochranou, VPS VDS servery 🔥 Kúpte si spoľahlivý webhosting s ochranou DDoS, VPS VDS servery | ProHoster