Rust 1.55 Programming Language Release

Die vrystelling van die stelselprogrammeertaal Rust 1.55, wat deur die Mozilla-projek gestig is, maar nou ontwikkel is onder die vaandel van die onafhanklike nie-winsgewende organisasie Rust Foundation, is gepubliseer. Die taal fokus op geheueveiligheid, verskaf outomatiese geheuebestuur en bied die middele om hoë taakparallellisme te bereik sonder om 'n vullisverwyderaar of looptyd te gebruik (looptyd word verminder tot basiese inisialisering en instandhouding van die standaardbiblioteek).

Rust se outomatiese geheuebestuur red die ontwikkelaar van foute wanneer wysers gemanipuleer word en beskerm teen probleme wat ontstaan ​​as gevolg van laevlakgeheuemanipulasie, soos toegang tot 'n geheuearea nadat dit vrygestel is, herkenning van nulwysers, bufferoorskryding, ens. Om biblioteke te versprei, bouwerk te verskaf en afhanklikhede te bestuur, ontwikkel die projek die Cargo-pakketbestuurder. Die crates.io-bewaarplek word ondersteun vir die aanbieding van biblioteke.

Belangrikste innovasies:

  • Die Cargo-pakketbestuurder het die vermoë om duplikaatfoute en waarskuwings wat tydens 'n bou voorkom, saam te voeg. Wanneer opdragte soos "vragtoets" en "vragkontrole --all-targets" uitgevoer word wat lei tot veelvuldige bou van 'n pakket met verskillende parameters, word die gebruiker nou 'n opsomming gewys van die voorkoms van 'n herhalende probleem, in plaas daarvan om gewys te word verskeie identiese waarskuwings wanneer dieselfde ding herhaaldelik gebou word. $ vrag +1.55.0 check —all-targets Kontroleer foo v0.1.0 waarskuwing: funksie word nooit gebruik nie: 'foo' —> src/lib.rs:9:4 | 9 | fn foo() {} | ^^^ | = nota: '#[waarsku(dead_code)]' aan by verstek waarskuwing: 'foo' (lib) gegenereer 1 waarskuwing waarskuwing: 'foo' (lib toets) gegenereer 1 waarskuwing (1 duplikaat) Voltooide dev [unoptimized + debuginfo] teiken (s) in 0.84s
  • Die swewende punt-ontledingskode in die standaardbiblioteek is geskuif om die vinniger en meer akkurate Eisel-Lemire-algoritme te gebruik, wat sommige voorheen waargenome probleme met afronding en ontleding van getalle met baie groot getalle syfers opgelos het.
  • Die vermoë om ongeslote reekse in sjablone te spesifiseer, is gestabiliseer (“X..” word geïnterpreteer as 'n reeks wat begin met die waarde X en eindig met die maksimum waarde van die heelgetaltipe): pas x as u32 { 0 => println! ("nul!"), 1.. => println!("positiewe getal!"), }
  • Uitgebreide foutvariante gedek deur std::io::ErrorKind (klassifiseer foute in kategorieë soos NotFound en WouldBlock). Voorheen het foute wat nie in bestaande kategorieë gepas het nie, in die ErrorKind::Ander kategorie geval, wat ook gebruik is vir foute in derdeparty-kode. Daar is nou 'n aparte interne kategorie ErrorKind::Uncategorized vir foute wat nie in bestaande kategorieë pas nie, en die ErrorKind::Ander kategorie is beperk tot foute wat nie in die standaard biblioteek voorkom nie (standaard biblioteekfunksies wat io::Error terugstuur gebruik nie meer die ErrorKind:: kategorie Ander nie).
  • 'n Nuwe gedeelte van die API is na die kategorie stal geskuif, insluitend die metodes en implementering van eienskappe is gestabiliseer:
    • Gebind::gekloon
    • Dreineer::as_str
    • IntoInnerError::into_error
    • IntoInnerError::into_parts
    • MaybeUninit::assume_init_mut
    • MaybeUninit::assume_init_ref
    • MaybeUninit::skryf
    • skikking::kaart
    • ops::ControlFlow
    • x86::_bittest
    • x86::_bittestandkomplement
    • x86::_bittestandreset
    • x86::_bittestandset
    • x86_64::_bittest64
    • x86_64::_bittestandcomplement64
    • x86_64::_bittestandreset64
    • x86_64::_bittestandset64
  • Die "const"-kenmerk, wat die moontlikheid bepaal om dit in enige konteks in plaas van konstantes te gebruik, word gebruik in die str::from_utf8_unchecked metode.
  • Die derde vlak van ondersteuning is geïmplementeer vir die powerpc64le-unknown-freebsd-platform. Die derde vlak behels basiese ondersteuning, maar sonder outomatiese toetsing, publikasie van amptelike bouwerk en verifikasie van kodeboubaarheid.

Bron: opennet.ru

Voeg 'n opmerking