Vydanie programovacieho jazyka Rust 1.61

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

  • Z hlavnej funkcie je možné definovať vlastné návratové kódy. Pôvodne mohla Rustova hlavná funkcia vrátiť iba typ „()“ (jednotka), ktorý vždy označoval stav úspešného ukončenia, pokiaľ vývojár výslovne nezavolal funkciu „process::exit(code)“. V Rust 1.26 pomocou nestabilnej vlastnosti Termination v hlavnej funkcii bolo možné vrátiť hodnoty „Ok“ a „Err“, zodpovedajúce kódom EXIT_SUCCESS a EXIT_FAILURE v programoch C. V Rust 1.61 bola vlastnosť Termination stabilná a bol navrhnutý samostatný typ ExitCode, ktorý predstavuje špecifický návratový kód, ktorý abstrahuje typy návratov špecifické pre platformu tým, že poskytuje preddefinované konštanty SUCCESS a FAILURE a metódu From vrátiť ľubovoľný návratový kód . použite std::process::ExitCode; fn main() -> ExitCode { if !check_foo() { return ExitCode::from(8); } Kód ukončenia::SUCCESS }
  • Stabilizovali sa ďalšie možnosti funkcií definovaných pomocou výrazu „const fn“, ktoré možno volať nielen ako regulárne funkcie, ale namiesto konštánt ich použiť aj v akomkoľvek kontexte. Tieto funkcie sa počítajú v čase kompilácie, nie v čase behu, takže podliehajú určitým obmedzeniam, ako napríklad schopnosť čítať iba z konštánt. V novej verzii sú vo vnútri const funkcií povolené základné operácie s ukazovateľmi funkcií (vytváranie, odovzdávanie a prehadzovanie ukazovateľov je povolené, ale nie volanie funkcie ukazovateľom); hranice vlastností pre generické parametre const funkcií, ako napríklad T: Copy; dynamicky prenosné vlastnosti (dyn Trait); impl Typy vlastností pre argumenty funkcií a návratové hodnoty.
  • Prúd spracováva Stdin, Stdout a Stderr v std::io má teraz statickú životnosť („static“), keď je uzamknutý, čo umožňuje konštrukcie ako „let out = std::io::stdout().lock();“ so získaním kľučky a nastavením zámku v jednom výraze.
  • Nová časť API bola presunutá do kategórie stabilných, vrátane metód a implementácií vlastností boli stabilizované:
    • Pin::static_mut
    • Pin::static_ref
    • Vec::retain_mut
    • VecDeque::retain_mut
    • Zápis pre kurzor
    • std::os::unix::net::SocketAddr::from_pathname
    • std::process::ExitCode
    • std::process::Ukončenie
    • std::thread::JoinHandle::je_dokončené
  • 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:
    • ::offset a ::offset
    • ::wrapping_offset a ::wrapping_offset
    • ::add a ::add
    • ::sub a ::sub
    • ::wrapping_add a ::wrapping_add
    • ::wrapping_sub a ::wrapping_sub
    • ::as_mut_ptr
    • ::as_ptr_range
    • ::as_mut_ptr_range

Okrem toho si môžete všimnúť článok „Rust: Kritická retrospektíva“ so súhrnom dojmov z jazyka Rust po napísaní 100 XNUMX riadkov kódu počas vývoja operačného systému mikrojadra Xous používaného vo firmvéri. Medzi nevýhody patrí ťažko zrozumiteľná syntax, neúplnosť a neustály vývoj jazyka, nedostatok opakovateľných zostavení, typické problémy s dôverou v závislosti v Crates.io a potreba zachovať určitú disciplínu pri písaní bezpečného kódu. Funkcie, ktoré prekonali očakávania, zahŕňajú nástroje na refaktorovanie kódu a prepracovanie „hackov“ pridaných počas rýchleho prototypovania.

Zdroj: opennet.ru

Pridať komentár