Vydanie programovacieho jazyka Rust 1.68

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

  • Správca balíkov Cargo a úložisko crates.io stabilizovali podporu pre protokol Sparse, ktorý definuje nový spôsob práce s indexom, ktorý odráža dostupné verzie všetkých balíkov existujúcich v úložisku. Nový protokol umožňuje výrazne zvýšiť rýchlosť práce s crates.io a vyriešiť problémy so škálovaním s ďalším rastom počtu balíkov v úložisku.

    Aby sa znížilo oneskorenie spôsobené sťahovaním úplného indexu, Sparse namiesto prístupu k indexu pomocou Git zahŕňa priame sťahovanie cez HTTPS iba nevyhnutných údajov indexu, ktoré pokrývajú závislosti konkrétneho projektu. Na poskytovanie údajov indexu sa používa nová služba index.crates.io. V predvolenom nastavení sa nový protokol plánuje používať vo vetve Rust 1.70 a predtým, aby ste ho povolili, môžete nastaviť premennú prostredia "CARGO_REGISTRIES_CRATES_IO_PROTOCOL=sparse" alebo pridať parameter "protocol =" do "[registres. crates-io]" časti súboru .cargo/config.toml 'sparse'.

  • Pridané makro „pin!“, ktoré umožňuje vytvoriť štruktúru Pin<&mut T> z výrazu „T“ s lokálnym pripnutím jeho stavu (na rozdiel od Box::pin nealokuje pamäť na halde, ale viaže na úrovni zásobníka).
  • Bol navrhnutý štandardný obslužný program chýb pri prideľovaní pamäte, ktorý sa používa pri použití štandardného balíka alokácie. Aplikácie, ktoré povoľujú iba alloc (bez std), teraz zavolajú obslužný program „panic!“, keď zlyhá alokácia pamäte, čo môže byť voliteľne zachytené pomocou „#[panic_handler]“. Programy používajúce knižnicu std budú naďalej tlačiť informácie o chybe do stderr a zlyhávajú.
  • Nová časť API bola presunutá do kategórie stabilných, vrátane metód a implementácií vlastností boli stabilizované:
    • {core,std}::pin::pin!
    • impl Od za {f32,f64}
    • std::path::MAIN_SEPARATOR_STR
    • impl DerefMut pre PathBuf
  • Atribút „const“, ktorý určuje možnosť jeho použitia v akomkoľvek kontexte namiesto konštánt, sa používa vo funkcii VecDeque::new.
  • Pre prácu na platforme Android je teraz potrebné minimálne NDK r25 (API 19), t.j. Minimálna podporovaná verzia Androidu bola zvýšená na 4.4 (KitKat).
  • Tretia úroveň podpory bola implementovaná pre platformu Sony PlayStation Vita (armv7-sony-vita-newlibeabihf). 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ť.

Zdroj: opennet.ru

Pridať komentár