ipata 1.47 Siseto ede Tu

Itusilẹ 1.47 ti ede siseto eto Rust, ti o da nipasẹ iṣẹ akanṣe Mozilla, ti ṣe atẹjade. Ede naa dojukọ aabo iranti, pese iṣakoso iranti aifọwọyi, ati pese awọn ọna lati ṣaṣeyọri isọdọkan iṣẹ-ṣiṣe giga laisi lilo agbasọ idoti tabi akoko asiko (akoko asiko ti dinku si ipilẹṣẹ ipilẹ ati itọju ile-ikawe boṣewa).

Iṣakoso iranti aifọwọyi ti Rust yọkuro awọn aṣiṣe nigbati o ba n ṣakoso awọn itọka ati aabo lodi si awọn iṣoro ti o dide lati ifọwọyi iranti ipele kekere, gẹgẹbi iraye si agbegbe iranti lẹhin ti o ti ni ominira, awọn ifọkasi ijuboluwole asan, awọn agbekọja buffer, ati bẹbẹ lọ. Lati kaakiri awọn ile-ikawe, rii daju apejọ ati ṣakoso awọn igbẹkẹle, iṣẹ akanṣe n dagbasoke oluṣakoso package Cargo. Ibi ipamọ crates.io jẹ atilẹyin fun awọn ile-ikawe alejo gbigba.

Awọn imotuntun akọkọ:

  • Atilẹyin imuse fun awọn abuda fun awọn akojọpọ ti iwọn lainidii. Ni iṣaaju, nitori ailagbara lati ṣalaye awọn iṣẹ jeneriki fun gbogbo awọn iye odidi, ile-ikawe boṣewa pese atilẹyin ẹya ti a ṣe sinu nikan fun awọn akojọpọ to awọn eroja 32 ni iwọn (awọn abuda fun iwọn kọọkan jẹ asọye ni iṣiro). Ṣeun si ṣiṣẹda iṣẹ ṣiṣe const generics, o ṣee ṣe lati ṣalaye awọn iṣẹ jeneriki fun iwọn titobi eyikeyi, ṣugbọn wọn ko tii wa ninu awọn ẹya iduroṣinṣin ti ede naa, botilẹjẹpe wọn ti ṣe imuse ninu akopọ ati pe wọn lo ni bayi ni ile-ikawe boṣewa. fun orun orisi ti eyikeyi iwọn.
    Fun apẹẹrẹ, itumọ atẹle ni Rust 1.47 yoo tẹjade awọn akoonu ti opo kan, botilẹjẹpe iṣaaju yoo ti yorisi aṣiṣe kan:

fn akọkọ() {
jẹ ki xs = [0; 34];
println!("{:?}", xs);
}

  • Ti a pese ti awọn itọpa kukuru (backtrace), o wu ni awọn ipo pajawiri. Awọn ohun elo ti kii ṣe anfani ni ọpọlọpọ awọn ipo, ṣugbọn didasilẹ abajade ati ki o fa ifojusi lati awọn idi akọkọ ti iṣoro naa, ni a yọkuro lati inu itọpa naa. Lati da itọpa kikun pada, o le lo oniyipada ayika "RUST_BACKTRACE=ful". Fun apẹẹrẹ, fun koodu

fn akọkọ() {
ẹ̀rù!();
}

Ni iṣaaju, itọpa naa ti jade ni awọn ipele 23, ṣugbọn ni bayi yoo dinku si awọn ipele 3, gbigba ọ laaye lati ni oye pataki naa lẹsẹkẹsẹ:

okùn 'akọkọ' bẹru ni 'ijaaya ti o han gbangba', src/main.rs:2:5
akopọ backtrace:
0: std :: ijaaya :: ibere_ijaaya
ni /rustc/d…d75a/library/std/src/panicking.rs:497
1: ibi isereile :: akọkọ
ni ./src/main.rs:2
2: mojuto :: ops :: iṣẹ :: FnOnce :: call_ni kete ti
ni /rustc/d…d75a/library/core/src/ops/function.rs:227

  • Olupilẹṣẹ rustc ti ni imudojuiwọn lati kọ ni lilo LLVM 11 (Rust nlo LLVM bi ẹhin fun iran koodu). Ni akoko kanna, agbara lati kọ pẹlu LLVM atijọ, titi di ẹya 8, ti wa ni idaduro, ṣugbọn nipasẹ aiyipada (ni ipata-lang / lvm-project) LLVM 11 ti lo ni bayi. Itusilẹ LLVM 11 ni a nireti ni wiwa ti n bọ. awọn ọjọ.
  • Lori iru ẹrọ Windows, olupilẹṣẹ rustc n pese atilẹyin fun ṣiṣe awọn sọwedowo iṣotitọ ṣiṣan iṣakoso (Iṣakoso Flow Guard), mu ṣiṣẹ ni lilo asia “-C control-flow-guard”. Lori awọn iru ẹrọ miiran a kọju asia yii fun ni bayi.
  • Apa tuntun ti API ni a ti gbe lọ si ẹka iduroṣinṣin, pẹlu idanimọ iduroṣinṣin :: new_raw, Range :: is_empty, RangeInclusive :: is_empty, Result :: as_deref, Result:: as_deref_mut, Vec :: leak, pointer :: offset_from , f32:: TAU ati f64 :: TAU.
  • Ẹya “const”, eyiti o pinnu iṣeeṣe ti lilo ni eyikeyi ipo dipo awọn iduro, ni a lo ninu awọn ọna:
    • titun fun gbogbo awọn odidi miiran ju odo;
    • checked_add, checked_sub, checked_mul, checked_neg, checked_shl, checked_shr, saturating_add, saturating_sub ati saturating_mul fun gbogbo odidi;
    • 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 is_ascii_control fun char ati u8 orisi.
  • Fun FreeBSD, ohun elo irinṣẹ lati FreeBSD 11.4 ni a lo (FreeBSD 10 ko ṣe atilẹyin LLVM 11).

Ya lati opennet.ru

orisun: linux.org.ru

Fi ọrọìwòye kun