Vydanie programovacieho jazyka Rust 1.37

publikovaný vydanie systémového programovacieho jazyka Hrdza 1.37, ktorú založil projekt Mozilla. Jazyk sa zameriava na bezpečnosť pamäte, poskytuje automatickú správu pamäte a poskytuje prostriedky na dosiahnutie vysokej paralelnosti úloh bez použitia garbage collectora alebo runtime.

Automatická správa pamäte Rust oslobodzuje vývojára od manipulácie s ukazovateľmi a chráni pred problémami vznikajúcimi pri manipulácii s pamäťou na nízkej úrovni, ako sú napríklad prístupy do pamäte po uvoľnení, dereferences nulového ukazovateľa, pretečenie vyrovnávacej pamäte a podobne. Vyvíja sa správca balíkov na distribúciu knižníc, zabezpečenie zostavenia a správu závislostí v rámci projektu. náklad, čo vám umožní získať knižnice potrebné pre program jedným kliknutím. Hostiteľské knižnice podporujú úložisko crates.io.

Hlavné inovácie:

  • V kompilátore rustc zabezpečené podpora optimalizácie na základe výsledkov profilovania kódu (PGO, Profile-Guided Optimization),
    čo vám umožní generovať optimálnejší kód na základe analýzy štatistík nahromadených počas vykonávania programu. Na vygenerovanie profilu je k dispozícii príznak „-C profile-generate“ a na použitie profilu počas zostavovania - „-C profile-use“ (na začiatku je program zostavený s prvým príznakom, beží a po vytvorení profil sa znova zloží s druhou vlajkou);

  • Pri vykonávaní príkazu „cargo run“, ktorý je vhodné použiť na rýchle testovanie konzolových aplikácií, bola pridaná možnosť automaticky vybrať spustiteľný súbor na spustenie, ak je v balíku niekoľko spustiteľných súborov. Predvolený súbor, ktorý sa má spustiť, je určený direktívou default-run v sekcii [package] s parametrami balíka, čo vám umožňuje vyhnúť sa explicitnému zadávaniu názvu súboru pomocou príznaku „-bin“ pri každom spustení „cargo run“;
  • Príkaz „dodávateľa nákladu“, predtým dodávaný ako samostatný balík. Príkaz vám umožňuje organizovať prácu s lokálnou kópiou závislostí – po vykonaní „dodávateľa nákladu“ sa všetky zdrojové kódy závislostí projektu stiahnu z crates.io do lokálneho adresára, ktorý potom možno použiť na prácu bez prístupu k prepravkám. io (po vykonaní príkazu sa zobrazí nápoveda na zmenu konfigurácie na použitie adresára pre zostavy). Táto funkcia sa už používa na organizáciu dodávky kompilátora rustc so zabalením všetkých závislostí do jedného archívu s vydaním;
  • Teraz je možné vytvárať odkazy na možnosti enum pomocou aliasov typu (napríklad v tele funkcie „fn increment_or_zero(x: ByteOption) môžete zadať „ByteOption::None => 0“), typové konštrukcie výpočtu (‹ MyType‹.. ››::option => N) alebo Self prístupy (v blokoch c &self môžete zadať “Self::Quarter => 25”);
  • Pridaná možnosť vytvárať nepomenované konštanty v makrách. Namiesto definovania názvu prvku v "const" môžete teraz použiť znak "_" na dynamický výber neopakujúceho sa identifikátora, čím sa vyhnete konfliktom mien pri opätovnom volaní makra;
  • Pridaná možnosť používať atribút "#[repr(align(N))" s enumami pomocou syntaxe podobnej definovaniu štruktúry AlignN‹T› so zarovnaním a potom pomocou AlignN‹MyEnum›;
  • Nová časť API bola presunutá do stabilnej kategórie, vrátane BufReader::buffer, BufWriter::buffer a
    Cell::from_mut,
    Cell::as_slice_of_cells,
    DoubleEndedIterator::nth_back,
    Možnosť::xor
    {i,u}{8,16,64,128,veľkosť}::reverse_bits, Wrapping::reverse_bits and
    slice::copy_within.

Okrem toho je možné poznamenať začiatok testovania projekt Async-std, ktorá ponúka asynchrónny variant štandardnej knižnice Rust (port knižnice std, v ktorej sú všetky rozhrania ponúkané v async verzii a sú pripravené na použitie so syntaxou async/await).

Zdroj: opennet.ru

Pridať komentár