Rust 1.55 Programméiersprooch Fräisetzung

D'Verëffentlechung vun der Systemprogramméierungssprooch Rust 1.55, 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 Erënnerung Sécherheet, stellt automatesch Erënnerung Gestioun, a stellt d'Mëttel fir eng héich Aufgab parallelism ze erreechen ouni e Gerempels Sammelstécker oder Runtime benotzen (Runtime ass reduzéiert op Basis initialization an Ënnerhalt vun der Standard Bibliothéik).

D'automatesch Erënnerungsmanagement vum Rust eliminéiert Feeler beim Manipulatioun vun Pointer a schützt géint Probleemer déi aus der Manipulatioun vun der Gedächtnis op engem nidderegen Niveau entstinn, sou wéi Zougang zu enger Erënnerungsregioun nodeems se befreit gouf, Null Pointer-Dereferenzen, Pufferiwwerschlag, etc. Fir Bibliothéiken ze verdeelen, Assemblée ze garantéieren 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.

Haaptinnovatiounen:

  • De Cargo Package Manager huet d'Fäegkeet fir duplizéiert Feeler an Warnungen ze fusionéieren déi während engem Bau optrieden. Wann Dir Befehle wéi "Cargo Test" an "cargo check --all-targets" ausféiert, déi zu multiple Builds vun engem Package mat verschiddene Parameteren resultéieren, gëtt de Benotzer elo e Resumé vun der Optriede vun engem widderhuelende Problem gewisen, anstatt gewisen ze ginn. multiple identesch Warnungen wann Dir déi selwecht Saach ëmmer erëm baut. $ cargo +1.55.0 kontrolléieren -all-Ziler Kontrollen foo v0.1.0 Warnung: Funktioun gëtt ni benotzt: 'foo' —> src/lib.rs:9:4 | 9 | fn foo() {} | ^^^ | = Notiz: '#[warn(dead_code)]' op Standardwarnung: 'foo' (lib) generéiert 1 Warnung Warnung: 'foo' (lib Test) generéiert 1 Warnung (1 Duplikat) Fäerdeg Dev [unoptimiséiert + Debuginfo] Zil (s) an 0.84s
  • De Floating Point Parsing Code an der Standardbibliothéik gouf geplënnert fir de méi séier a méi präzis Eisel-Lemire Algorithmus ze benotzen, deen e puer virdru observéiert Probleemer mat Ronnen an Parsing Zuelen mat ganz grousser Zuel vun Zifferen geléist huet.
  • D'Kapazitéit fir ongeschlosse Beräicher an Templates ze spezifizéieren gouf stabiliséiert ("X.." gëtt als eng Rei interpretéiert, déi mam Wäert X ufänkt a mam maximale Wäert vum ganzt Zuelentyp endet): match x as u32 { 0 => println! ("Null!"), 1.. => println!("positiv Zuel!"), }
  • Erweidert Feelervarianten ofgedeckt duerch std :: io :: ErrorKind (klasséiert Feeler a Kategorien wéi NotFound a WouldBlock). Virdrun sinn Feeler, déi net an existéierend Kategorien passen, an d'ErrorKind :: Aner Kategorie gefall, déi och fir Feeler am Code vun Drëtt Partei benotzt gouf. Et gëtt elo eng separat intern Kategorie ErrorKind :: Unkategoriséiert fir Feeler déi net an existéierend Kategorien passen, an d'ErrorKind :: Aner Kategorie ass limitéiert op Feeler déi net an der Standardbibliothéik optrieden (Standardbibliothéik Funktiounen déi io :: Feeler zréckginn net méi d'ErrorKind :: Kategorie Aner benotzen).
  • 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:
    • Gebonnen :: gekloont
    • Drain::as_str
    • IntoInnerError :: into_error
    • IntoInnerError :: into_parts
    • MaybeUninit::assume_init_mut
    • MaybeUninit::assume_init_ref
    • MaybeUninit :: schreiwen
    • Array :: Kaart
    • ops::ControlFlow
    • x86::_bittest
    • x86::_bittestandcomplement
    • x86::_bittestandreset
    • x86::_bittestandset
    • x86_64::_bittest64
    • x86_64::_bittestandcomplement64
    • x86_64::_bittestandreset64
    • x86_64::_bittestandset64
  • Den Attribut "const", wat d'Méiglechkeet bestëmmt et an all Kontext ze benotzen anstatt Konstanten, gëtt an der Str::from_utf8_unchecked Method benotzt.
  • Den drëtten Niveau vun der Ënnerstëtzung gouf fir d'powerpc64le-unknown-freebsd Plattform implementéiert. Den drëtten Niveau beinhalt d'Basis Ënnerstëtzung, awer ouni automatiséiert Testen, offiziell Builds ze publizéieren oder ze kontrolléieren ob de Code ka gebaut ginn.

Source: opennet.ru

Setzt e Commentaire