Vydanie programovacieho jazyka Rust 1.67

Bol vydaný univerzálny programovací jazyk Rust 1.67, 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:

  • Pre asynchrónne funkcie s Future::Output je teraz možné špecifikovať anotácie „#[must_use]“, ktoré obsahujú varovanie, ak je vrátená hodnota ignorovaná, čo pomáha identifikovať chyby spôsobené predpokladom, že funkcia zmení hodnoty namiesto vrátenia novej hodnoty. #[must_use] async fn bar() -> u32 { 0 } async fn caller() { bar().await; } varovanie: nepoužitý výstup budúcnosti vrátený `bar`, ktorý musí byť použitý —> src/lib.rs:5:5 | 5 | bar().čakať; | ^^^^^^^^^^^^ | = poznámka: `#[warn(unused_must_use)]` je štandardne zapnuté
  • Aktualizovaná bola implementácia frontov FIFO std::sync::mpsc (multi-producer single-consumer), ktorá bola prepnutá na používanie modulu crossbeam-channel pri zachovaní predchádzajúceho API. Nová implementácia sa vyznačuje riešením množstva problémov, vyšším výkonom a zjednodušenou údržbou kódu.
  • Nová časť API bola presunutá do kategórie stabilných, vrátane metód a implementácií vlastností boli stabilizované:
    • {integer}::checked_ilog
    • {integer}::checked_ilog2
    • {integer}::checked_ilog10
    • {integer}::ilog
    • {celé číslo}::ilog2
    • {celé číslo}::ilog10
    • NonZeroU*::ilog2
    • NonZeroU*::ilog10
    • NonZero*::BITS
  • Atribút „const“, ktorý určuje možnosť jeho použitia v akomkoľvek kontexte namiesto konštánt, sa používa vo funkciách:
    • char::from_u32
    • char::from_digit
    • char::to_digit
    • core::char::from_u32
    • core::char::from_digit
  • Tretia úroveň podpory bola implementovaná pre používanie Rustu v jadre Linuxu (linuxkernel), ako aj pre Sony PlayStation 1 (mipsel-sony-psx), PowerPC s AIX (powerpc64-ibm-aix), QNX Neutrino RTOS ( aarch64-unknown-nto-) platformy qnx710, x86_64-pc-nto-qnx710). Tretia úroveň zahŕňa základnú podporu, ale bez automatického testovania, zverejňovania oficiálnych verzií alebo kontroly, či je možné kód zostaviť.

Okrem toho si môžeme všimnúť, že ARM zverejnilo opravy, ktoré umožňujú použitie jazyka Rust na vývoj ovládačov a modulov jadra Linuxu zostavených pre systémy založené na architektúre AArch64.

Zdroj: opennet.ru

Pridať komentár