Puo ea Rust programming 1.47 tokollo

Phatlalatso ea 1.47 ea puo ea lenaneo la Rust system, e thehiloeng ke morero oa Mozilla, e hatisitsoe. Puo e tsepamisitse maikutlo holim'a ts'ireletso ea mohopolo, e fana ka taolo ea memori ea othomathike, 'me e fana ka mekhoa ea ho fihlela ts'ebetso e phahameng ea ts'ebetso ntle le ho sebelisa pokello ea lithōle kapa nako ea ho sebetsa (nako ea ho sebetsa e fokotsehile ho qala le ho boloka laebrari e tloaelehileng).

Taolo ea memori ea othomathike ea Rust e felisa liphoso ha e tsamaisa lintlha le ho sireletsa khahlanong le mathata a bakoang ke ho qhekella ha memori ea boemo bo tlase, joalo ka ho fihlella sebaka sa memori kamora hore e lokolloe, li-null pointer dereferences, buffer overruns, jj. Ho aba lilaebrari, ho etsa bonnete ba hore ho bokana le ho laola litšepe, morero o nts'etsapele mookameli oa thepa ea thepa. Sebaka sa polokelo ea crates.io se tšehetsoa bakeng sa lilaebrari tse amohelang batho.

Litlhahiso tse ka sehloohong:

  • Ts'ehetso e kentsoeng bakeng sa litšoaneleho tsa mefuta e mengata ea boholo bo sa tloaelehang. Nakong e fetileng, ka lebaka la ho se khone ho hlalosa mesebetsi e akaretsang bakeng sa litekanyetso tsohle tse felletseng, laeborari e tloaelehileng e fane ka tšehetso ea litšobotsi tse hahelletsoeng feela bakeng sa lihlopha tse fihlang ho likarolo tse 32 ka boholo (litšobotsi tsa boholo bo bong le bo bong bo ne bo hlalositsoe ka lipalo). Ka lebaka la tlhahiso ea ts'ebetso ea const generics, ho ile ha khoneha ho hlalosa mesebetsi e tloaelehileng bakeng sa boholo leha e le bofe, empa ha e e-s'o kenyelelitsoe likarolong tse tsitsitseng tsa puo, le hoja e kenngoa ts'ebetsong 'me e se e sebelisoa laebraring e tloaelehileng. bakeng sa mefuta e mengata ea boholo bofe kapa bofe.
    Mohlala, moaho o latelang ho Rust 1.47 o tla hatisa litaba tsa sehlopha, leha pele e ka be e bakile phoso:

fn main() {
tlohella xs = [0; 34];
println!("{:?}", xs);
}

  • E fane ka tlhahiso ea mesaletsa e khuts'oane (backtrace), tlhahiso maemong a tšohanyetso. Lintlha tse sa thahaselleng maemo a mangata, empa li kopanya lihlahisoa le ho senya tlhokomelo ho tloha lisosa tse ka sehloohong tsa bothata, li qheleloa ka thōko ho latela mohlala. Ho khutlisa mohlala o felletseng, o ka sebelisa phetoho ea tikoloho "RUST_BACKTRACE=e tletse". Ka mohlala, bakeng sa khoutu

fn main() {
tshabo!();
}

Pejana, trace e ne e hlahisoa ka mekhahlelo e 23, empa joale e tla fokotsoa ho isa methati e 3, e u lumellang ho utloisisa moelelo hang-hang:

thread 'main' e tšohile ka 'ho tšoha ho hlakileng', src/main.rs:2:5
stack backtrace:
0: std::ho tšoha:: qala_ho tšoha
ho /rustc/d…d75a/library/std/src/panicking.rs:497
1: lebala la lipapali::ka sehloohong
ho ./src/main.rs:2
2: core::ops::function::FnOnce::call_hang
ho /rustc/d…d75a/library/core/src/ops/function.rs:227

  • Rustc compiler e ntlafalitsoe ho haha ​​​​ho sebelisa LLVM 11 (Rust e sebelisa LLVM e le mokokotlo oa tlhahiso ea khoutu). Ka nako e ts'oanang, bokhoni ba ho haha ​​​​ka LLVM ea khale, ho fihlela phetolelong ea 8, e bolokiloe, empa ka ho sa feleng (ka rust-lang/llvm-project) LLVM 11 e se e sebelisoa ho lokolloa ha LLVM 11 ho lebeletsoe nakong e tlang matsatsi.
  • Sethaleng sa Windows, moqapi oa rustc o fana ka ts'ehetso bakeng sa ho nolofalletsa ho hlahloba botšepehi ba ho phalla (Control Flow Guard), e entsoeng ka ho sebelisa "-C control-flow-guard" folakha. Libakeng tse ling folakha ena ha e tsotelloe hajoale.
  • Karolo e ncha ea API e fetiselitsoe sehlopheng se tsitsitseng, ho kenyelletsa le Ident e tsitsitseng::new_raw, Range::is_empty, RangeInclusive::is_empty, Result::as_deref, Result::as_deref_mut, Vec::leak, pointer::offset_from: , f32:: TAU le f64::TAU.
  • Sebopeho sa "const", se khethollang monyetla oa ho se sebelisa maemong afe kapa afe ho fapana le li-constants, se sebelisoa mekhoeng:
    • e ncha bakeng sa linomoro tsohle ntle le zero;
    • checked_add, checked_sub, checked_mul, checked_neg, checked_shr, saturating_add, saturating_sub and saturating_mul bakeng sa lipalo kaofela;
    • is_ascii_alphabetic, is_ascii_uppercase, is_ascii_lowercase, is_ascii_alphanumeric, is_ascii_digit, is_ascii_hexdigit, is_ascii_punctuation, is_ascii_graphic, is_ascii_whitespace and for_ascii_ucontrol.
  • Bakeng sa FreeBSD, sesebelisoa sa lisebelisoa se tsoang ho FreeBSD 11.4 se sebelisoa (FreeBSD 10 ha e tšehetse LLVM 11).

E nkiloeng ho tloha opennet.ru

Source: linux.org.ru

Eketsa ka tlhaloso