Rust 1.47 Siidaynta Luuqada Barnaamijaynta

Siideynta 1.47 ee luqadda barnaamijka nidaamka Rust, oo uu aasaasay mashruuca Mozilla, ayaa la daabacay. Luqadda waxay diiradda saartaa badbaadada xusuusta, waxay bixisaa maaraynta xusuusta oo toos ah, waxayna bixisaa hab lagu gaaro isbarbardhigga hawsha sare iyada oo aan la isticmaalin qashin ururiyaha ama wakhtiga runtime (waqtiga runtime wuxuu hoos u dhigayaa bilowga aasaasiga ah iyo dayactirka maktabadda caadiga ah).

Maareynta xusuusta tooska ah ee Rust's waxay baabi'isaa khaladaadka marka la maamulayo tilmaamayaasha waxayna ka ilaalisaa dhibaatooyinka ka dhasha khalkhalgelinta heerka hoose ee xusuusta, sida gelitaanka gobolka xusuusta ka dib marka la sii daayo, tilmaame null ah, dulsaar xad dhaaf ah, iwm. Si loo qaybiyo maktabadaha, loo hubiyo isu-ururinta iyo maareynta ku-tiirsanaanta, mashruucu wuxuu horumarinayaa maareeyaha xirmada xamuulka. Kaydka crates.io waxaa lagu taageeraa martigelinta maktabadaha.

Hal-abuurka ugu muhiimsan:

  • Taageerada la hirgaliyay ee sifooyinku sifada cabbirka aan sharciga ahayn. Markii hore, iyada oo ay ugu wacan tahay awood la'aanta in la qeexo shaqooyinka guud ee dhammaan qiyamka isku-dhafka ah, maktabadda caadiga ah waxay bixisay taageero sifo ku dhisan oo keliya oo loogu talagalay isku-xidhka ilaa 32 walxood oo cabbir ahaan ah (sifada cabbir kasta ayaa si cad loo qeexay). Waad ku mahadsan tahay abuurista shaqeynta const generics, waxay suurtagashay in la qeexo hawlaha guud ee cabbir kasta oo qaabaysan, laakiin aan weli lagu darin sifooyinka xasilloon ee luqadda, in kasta oo lagu hirgeliyay isku-duwaha oo hadda loo isticmaalo maktabadda caadiga ah. noocyada diyaarsan ee cabbir kasta.
    Tusaale ahaan, dhismaha soo socda ee Rust 1.47 ayaa daabici doona waxa ku jira array, in kasta oo markii hore ay keeni lahayd qalad:

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

  • Wax-soo-saarka raad-gaaban (backtrace), wax-soo-saarka xaaladaha degdegga ah. Walxaha aan daneyneynin inta badan xaaladaha, laakiin qulqulaya wax soo saarka oo ka jeediya dareenka sababaha asaasiga ah ee dhibaatada, ayaa laga saaray raadadka. Si aad u soo celiso raad buuxa, waxaad isticmaali kartaa doorsoomaha deegaanka "RUST_BACKTRACE=buuxa". Tusaale ahaan, koodhka

fn main() {
cabsi!();
}

Markii hore, raadku wuxuu soo saaray 23 marxaladood, laakiin hadda waxaa lagu dhimi doonaa 3 marxaladood, taasoo kuu oggolaaneysa inaad isla markiiba fahanto nuxurka:

dunta 'ugu weyn' waxay ka argagaxday 'argagax cad', src/main.rs:2:5
dib-u-dhac:
0: std:: argagax:: argagax
laga helo /rustc/d…d75a/library/std/src/panicking.rs:497
1: garoon ciyaaraha ::guud
at ./src/main.rs:2
2: core :: ops :: function :: FnOnce :: wac_hal mar
at /rustc/d…d75a/library/core/src/ops/function.rs:227

  • Isku-duwaha rustc waa la cusboonaysiiyay si loo dhiso iyadoo la adeegsanayo LLVM 11 (Rust wuxuu u adeegsadaa LLVM dhabarka jiilka koodka). Isla mar ahaantaana, awoodda lagu dhisayo LLVM duug ah, ilaa nooca 8, waa la hayaa, laakiin asal ahaan (mashruuca rust-lang/llvm-mashruuca) LLVM 11 ayaa hadda la isticmaalaa, sii deynta LLVM 11 ayaa la filayaa soo socda. maalmo.
  • Dusha Windows-ka, isku-dariyaha rustc wuxuu bixiyaa taageero awood u siinaya hubinta daacadnimada socodka kontoroolka (Control Flow Guard), oo la hawlgeliyay iyadoo la adeegsanayo calanka "-C control-flow-guard". Goobaha kale calankan waa la iska indhatiray hadda.
  • Qayb cusub oo API ah ayaa loo wareejiyay qaybta xasiloon, oo ay ku jirto aqoonsiga xasiloon :: new_raw, Range :: waa_ faaruq, RangeInclusive :: waa_madhan, Natiijo :: as_deref, Natiijo :: as_deref_mut, Vec :: leak, tilmaame :: offset_from , f32:: TAU iyo f64::TAU.
  • Sifada "const", taas oo go'aamisa suurtagalnimada in loo isticmaalo xaalad kasta oo aan joogto ahayn, ayaa loo adeegsadaa hababka:
    • ku cusub dhammaan tirooyin aan eber ahayn;
    • checked_add, checked_sub, checked_mul, checked_neg, checked_shl, checked_shr, saturating_add, saturating_sub iyo saturating_mul dhamaan teerada;
    • waa_ascii_alphabetic, waa_ascii_kiis sare, waa_ascii_hoose, waa_ascii_alphanumeric, waa_ascii_digit, waa_ascii_hexdigit, waa_ascii_punctuation, waa_ascii_graphic, waa_ascii_space_cad iyo waa_ascii_control ee char iyo u8 nooc.
  • Wixii FreeBSD ah, agabka ka socda FreeBSD 11.4 ayaa loo isticmaalaa (FreeBSD 10 ma taageerto LLVM 11).

Laga soo qaatay opennet.ru

Source: linux.org.ru

Add a comment