Rust 1.61 Programméiersprooch Fräisetzung

D'Verëffentlechung vun der Rust 1.61 allgemeng Zweck Programméierungssprooch, gegrënnt vum Mozilla-Projet, awer elo entwéckelt ënner der Regie vun der onofhängeger Asbl Rust Foundation, gouf publizéiert. D'Sprooch konzentréiert sech op d'Erënnerungssécherheet a stellt d'Moyene fir en héije Jobparallelismus z'erreechen, während d'Benotzung vun engem Gerempels a Runtime vermeit (Runtime gëtt op Basisinitialiséierung an Ënnerhalt vun der Standardbibliothéik reduzéiert).

Rust d'Erënnerungsveraarbechtungsmethoden retten den Entwéckler vu Feeler beim Manipulatioun vu Pointer a schützt géint Probleemer déi entstinn wéinst nidderegen Niveau Memory Handhabung, sou wéi Zougang zu engem Erënnerungsberäich nodeems se befreit gouf, Nullpointer ofgeleent, Pufferiwwerschlag, etc. Fir Bibliothéiken ze verdeelen, Builds ze bidden an Ofhängegkeeten ze managen, entwéckelt de Projet de Cargo Package Manager. De crates.io Repository gëtt ënnerstëtzt fir Bibliothéiken ze hosten.

Gedächtnissécherheet gëtt a Rust zur Zesummesetzungszäit zur Verfügung gestallt duerch Referenzprüfung, Verfollegung vum Objektbesëtzer, Verfollegung vun Objektliewenszäiten (Scope), an d'Korrektheet vum Gedächtniszougang wärend der Code Ausféierung bewäerten. Rust bitt och Schutz géint ganz Zuelen Iwwerschwemmungen, erfuerdert obligatoresch Initialiséierung vu variabelen Wäerter virum Gebrauch, handhabt Feeler besser an der Standardbibliothéik, applizéiert d'Konzept vun onverännerleche Referenzen a Variablen als Standard, bitt staark statesch Tippen fir logesch Feeler ze minimiséieren.

Haaptinnovatiounen:

  • Et ass méiglech Är eege Retourcodes vun der Haaptfunktioun ze definéieren. Ursprénglech konnt Rust d'Haaptrei Funktioun nëmmen Typ zréck "()" (Eenheet), déi ëmmer eng erfollegräich Austrëtt Status uginn, ausser den Entwéckler explizit de "Prozess :: Sortie (Code)" Funktioun genannt. Am Rust 1.26, mat der onbestänneger Terminatiounseigenschaft an der Haaptfunktioun, war et méiglech d'Wäerter "Ok" an "Err" zréckzebréngen, entspriechend den EXIT_SUCCESS an EXIT_FAILURE Coden an C Programmer. Am Rust 1.61 ass d'Terminatiounseigenschaft stabil gemaach ginn, an e separaten ExitCode Typ gouf proposéiert fir e spezifesche Retourcode ze representéieren, deen plattformspezifesch Retourtypen abstrahéiert andeems se béid virdefinéiert Konstanten SUCCESS a FAILURE ubidden, an d'Vun Method. fir e personaliséierte Retourcode zréckzeginn. benotzen std :: Prozess :: ExitCode; fn main() -> ExitCode { if !check_foo() { return ExitCode:: from(8); } ExitCode::SUCCESS }
  • Zousätzlech Fäegkeete vu Funktiounen definéiert mam Ausdrock "const fn" goufen stabiliséiert, déi net nëmmen als regulär Funktiounen genannt kënne ginn, awer och an all Kontext benotzt anstatt Konstanten. Dës Funktiounen ginn an der Zesummesetzungszäit berechent, net bei der Runtime, sou datt se bestëmmte Restriktiounen ënnerleien, sou wéi d'Fäegkeet nëmme vu Konstanten ze liesen. An der neier Versioun, Basis Operatiounen mat Funktioun Pointers sinn bannen const Funktiounen erlaabt (schafen, laanschtgoungen a Goss Pointer ass erlaabt, awer net eng Funktioun duerch Zeeche ruffen); Trait Grenzen fir generesch Parameteren vu const Funktiounen wéi T: Kopie; dynamesch dispatchable Charakteren (dyn Trait); impl Trait Typen fir Funktiounsargumenter a Retourwäerter.
  • De Stream handhabt Stdin, Stdout a Stderr am std :: io hunn elo eng statesch Liewensdauer ("statesch") wann se gespaart ass, fir Konstrukter wéi "lass out = std :: io:: stdout ().lock ();" mat engem Grëff ze kréien an e Spär an engem Ausdrock setzen.
  • En neien Deel vun der API gouf an d'Kategorie vum Stall geplënnert, dorënner d'Methoden an d'Implementatioune vun de Charaktere goufen stabiliséiert:
    • Pin ::static_mut
    • Pin::static_ref
    • Vec::retain_mut
    • VecDeque::retain_mut
    • Schreift fir Cursor<[u8; N]> dir
    • std::os::unix::net::SocketAddr::from_pathname
    • std::process::ExitCode
    • std :: Prozess :: Kënnegung
    • std::thread::JoinHandle::ass_finished
  • Den Attribut "const", wat d'Méiglechkeet bestëmmt et an all Kontext ze benotzen anstatt Konstanten, gëtt a Funktiounen benotzt:
    • <*const T>::offset an <*mut T>::offset
    • <*const T>::wrapping_offset an <*mut T>::wrapping_offset
    • <*const T>::add an <*mut T>::add
    • <*const T>::sub an <*mut T>::sub
    • <*const T>::wrapping_add an <*mut T>::wrapping_add
    • <*const T>::wrapping_sub an <*mut T>::wrapping_sub
    • <[T]>::as_mut_ptr
    • <[T]>::as_ptr_range
    • <[T]>::as_mut_ptr_range

Zousätzlech kënnt Dir den Artikel "Rust: A Critical Retrospective" mat engem Resumé vun Impressiounen vun der Rust Sprooch notéieren nodeems Dir 100 Tausend Zeilen Code dran schreift während der Entwécklung vum Xous Mikrokernel Betriebssystem an der Firmware benotzt. Nodeeler enthalen schwiereg ze verstoen Syntax, Onvollstännegkeet a weider Entwécklung vun der Sprooch, Mangel u widderholl Builds, typesch Probleemer mat Ofhängegkeetsvertrauen an Crates.io, an d'Notzung fir eng gewëssen Disziplin ze halen fir séchere Code ze schreiwen. Features, déi d'Erwaardungen iwwerschratt hunn, enthalen Tools fir Code ze refactoréieren an "Hacks" ëmzeschaffen, déi wärend der rapider Prototyping bäigefüügt ginn.

Source: opennet.ru

Setzt e Commentaire