Rust 1.37 Programméiersprooch Fräisetzung

publizéiert System Programméierungssprooch Verëffentlechung roscht 1.37, gegrënnt vum Mozilla-Projet. D'Sprooch konzentréiert sech op Erënnerung Sécherheet, stellt automatesch Erënnerung Gestioun, a stellt e Mëttel fir eng héich Aufgab parallelism erreechen ouni e Gerempels Sammelstécker oder Runtime benotzen.

Rust automatesch Erënnerung Gestioun befreit den Entwéckler vun Pointer Manipulatioun a schützt géint Problemer déi aus niddereg-Niveau Erënnerung Manipulatioun entstinn, wéi no-gratis Erënnerung Accès, Null Pointer dereferences, Puffer Iwwerstonnen, an dergläiche. E Package Manager gëtt entwéckelt fir Bibliothéiken ze verdeelen, Assemblée ze garantéieren an Ofhängegkeete vum Projet ze managen. cargo, erlaabt Iech d'Bibliothéike fir de Programm an engem Klick ze kréien. E Repository gëtt ënnerstëtzt fir Bibliothéiken ze hosten crates.io.

Haaptstrooss Innovatiounen:

  • Am rustc Compiler virgesinn Ënnerstëtzung fir Optimiséierung baséiert op Code Profiling Resultater (PGO, Profil-Guided Optimization),
    erlaabt Iech méi optimal Code ze generéieren baséiert op der Analyse vu Statistiken, déi während der Ausféierung vum Programm gesammelt goufen. Fir e Profil ze generéieren, gëtt de "-C profile-generate" Fändel zur Verfügung gestallt, a fir de Profil während der Assemblée ze benotzen - "-C profile-use" (ufanks gëtt de Programm mam éischte Fändel zesummegesat, leeft ronderëm, an no der Schafung de Profil, et gëtt mat der zweeter Fändel erëm zesummegesat);

  • Wann Dir de Kommando "Cargo Run" ausféiert, wat praktesch ass ze benotzen fir séier Konsolapplikatiounen ze testen, ass d'Fäegkeet automatesch eng ausführbar Datei ze wielen fir ze lafen, wann et e puer ausführbar Dateien am Package sinn. D'Standarddatei fir auszeféieren gëtt duerch d'Default-Run-Direktiv an der [Package] Sektioun mat Package Parameteren festgeluegt, wat Iech erlaabt datt Dir de Dateinumm explizit duerch de Fändel "-bin" spezifizéiert, all Kéier wann Dir "cargo run" leeft;
  • De Kommando "cargo Verkeefer", virdrun geliwwert als separat Pak. De Kommando erlaabt Iech d'Aarbecht mat enger lokaler Kopie vun Ofhängegkeeten ze organiséieren - nodeems Dir "cargo Verkeefer" ausgefouert hutt, ginn all Quellcode vun den Ofhängegkeete vum Projet vun crates.io an e lokalen Verzeechnes erofgelueden, deen dann fir Aarbecht benotzt ka ginn ouni Zougang zu Këschten. io (nodeems de Kommando ausgefouert gouf, gëtt en Hiweis fir d'Konfiguratioun z'änneren gewisen fir de Verzeechnes fir Builds ze benotzen). Dës Feature gëtt scho benotzt fir d'Liwwerung vum rustc Compiler mat Verpakung vun all Ofhängegkeeten an engem Archiv mat der Verëffentlechung ze organiséieren;
  • Et ass elo méiglech Linken op enum Optiounen mat Typ Aliasen ze kreéieren (zum Beispill am Kierper vun der Funktioun "fn increment_or_zero(x: ByteOption) kënnt Dir "ByteOption::None => 0" spezifizéieren), Typ Berechnungskonstruktiounen (‹ MyType‹.. ››::option => N) oder Selbstzougäng (a Block c &self kënnt Dir "Self::Quarter => 25" spezifizéieren);
  • D'Fäegkeet bäigefüügt fir onbenannt Konstanten a Makroen ze kreéieren. Amplaz d'Elementnumm an "const" ze definéieren, kënnt Dir elo de Charakter "_" benotzen fir dynamesch en net widderhuelende Identifizéierer auszewielen, evitéiert Nummkonflikter wann Dir de Macro erëm rufft;
  • D'Fäegkeet bäigefüügt fir den "#[repr(align(N))" Attribut mat Enums ze benotzen mat enger Syntax ähnlech wéi eng AlignN‹T› Struktur mat Ausriichtung ze definéieren an dann AlignN‹MyEnum› ze benotzen;
  • En neien Deel vun der API gouf an déi stabil Kategorie geplënnert, dorënner de BufReader :: Buffer, BufWriter :: Buffer, an
    Zell :: from_mut,
    Zell::as_slice_of_cells,
    DoubleEndedIterator::nth_back,
    Optioun :: xor
    {i,u}{8,16,64,128,size}::reverse_bits, Wrapping::reverse_bits an
    Slice::copy_bannen.

Zousätzlech kann et bemierkt ginn Ufank vum Test de Projet Async-std, déi eng asynchron Variant vun der Rust Standardbibliothéik bitt (en Hafen vun der std-Bibliothéik, an där all Schnëttplazen an enger asynchroniséierter Versioun ugebuede ginn a prett sinn fir mat async / wait Syntax ze benotzen).

Source: opennet.ru

Setzt e Commentaire