ipata 1.40 Siseto ede Tu

atejade itusilẹ ede siseto eto Ipata 1.40, ti a da nipasẹ iṣẹ akanṣe Mozilla. Ede naa dojukọ aabo iranti, pese iṣakoso iranti aifọwọyi, ati pese awọn irinṣẹ lati ṣaṣeyọri isọdọkan iṣẹ-ṣiṣe giga laisi lilo ikojọpọ idoti ati akoko asiko.

Iṣakoso iranti aifọwọyi ti Rust n ṣe ominira oluṣe idagbasoke lati ifọwọyi ijuboluwole ati aabo lodi si awọn iṣoro ti o dide lati ifọwọyi iranti ipele-kekere, gẹgẹbi awọn iraye si iranti ọfẹ lẹhin, awọn ifisilẹ ijuboluwole asan, awọn agbekọja buffer, ati bii bẹẹ. Oluṣakoso package ti wa ni idagbasoke lati kaakiri awọn ile-ikawe, rii daju apejọ ati ṣakoso awọn igbẹkẹle nipasẹ iṣẹ akanṣe naa. laisanwo, gbigba ọ laaye lati gba awọn ile-ikawe ti o nilo fun eto naa ni titẹ kan. Ibi ipamọ jẹ atilẹyin lati gbalejo awọn ile-ikawe crates.io.

akọkọ awọn imotuntun:

  • Ṣe afikun agbara lati samisi awọn ẹya (igbekalẹ) ati awọn iṣiro (enum pẹlu bulọọki iyatọ) ni lilo abuda naa "# [ko_apari]", eyi ti ti o faye gba ni ojo iwaju, ṣafikun awọn aaye tuntun ati awọn aṣayan si awọn ẹya ti a kede ati awọn iṣiro. Fun apẹẹrẹ, awọn olupilẹṣẹ ti awọn modulu ti o ni awọn ẹya pẹlu awọn aaye ti a kede ni gbangba le lo “#[non_exhaustive]” lati samisi awọn ẹya ti o le ni awọn aaye tuntun ti a ṣafikun ni ọjọ iwaju. Titi di bayi, ni ipo yii, olupilẹṣẹ ti fi agbara mu lati yan laarin sisọ awọn aaye ni ikọkọ ati abuda si atokọ ti ko yipada ti awọn aaye. Ẹya tuntun yọkuro aropin yii ati gba ọ laaye lati ṣafikun awọn aaye tuntun ni ọjọ iwaju laisi eewu ti fifọ koodu ita ti a ṣajọ tẹlẹ. Ninu awọn idii apoti, nigbati awọn aṣayan ibaamu ni apakan “baramu”, a nilo itumọ ti boju-boju “_ => {...}”, ni wiwa awọn aaye iwaju ti o ṣeeṣe, bibẹẹkọ aṣiṣe yoo han nigbati o ba ṣafikun awọn aaye tuntun.
  • Fi kun agbara lati pe Makiro ilana! () ni ipo iru kan. Fun apẹẹrẹ, o le kọ “iru Foo = expand_to_type! (ọgọ);” ti “expand_to_type” ba jẹ macro ilana.
  • Ninu awọn bulọọki "ita {...}". kun agbara lati lo ilana ati awọn macros ikalara, pẹlu “bang!()” macros, fun apẹẹrẹ:

    macro_ofin! make_item { ($orukọ: ident) => {fn $name(); }}

    ita {
    make_item! (alpha);
    make_item! (beta);
    }

    ita "C" {
    #[my_identity_macro] fn foo ();
    }

  • Ni Makiro imuse agbara lati se ina "macro_rules!" eroja. Ṣiṣẹda "macro_rules!" ṣee ṣe mejeeji ni iṣẹ-bi macros ("mac! ()") ati ni awọn fọọmu ti awọn eroja ("#[mac]").
  • Ninu $m: eroja aworan maapu kun Atilẹyin fun awọn iye iṣiro ami lainidii (“[TOKEN_STREAM]”, “{TOKEN_STREAM}” ati “(TOKEN_STREAM)”), fun apẹẹrẹ:

    macro_ofin! accept_meta { ($m:meta) => {} }
    gba_meta! (mi :: ona);
    accept_meta! (mi :: ona = "tan");
    gba_meta! (mi :: ona ( abc) );
    gba_meta! (mi :: ona [abc]);
    gba_meta! (mi :: ona {abc});

  • Ni ipo Rust 2015, iṣelọpọ aṣiṣe ti ṣiṣẹ fun awọn iṣoro ti a damọ nigbati o ṣayẹwo yiya ti awọn oniyipada (oluyẹwo oluyawo) nipa lilo ilana NLL (Non-Lexical Lifetimes). Ni iṣaaju, awọn ikilo ti rọpo pẹlu awọn aṣiṣe nigbati o nṣiṣẹ ni ipo Rust 2018.
    Lẹhin iyipada ti o gbooro si ipo Rust 2015, awọn olupilẹṣẹ ni anfani lati nikẹhin xo lati atijọ yiya checker.

    Jẹ ki a ranti pe eto ijẹrisi ti o da lori ẹrọ tuntun kan fun akiyesi igbesi aye awọn oniyipada ti a yawo jẹ ki o ṣee ṣe lati ṣe idanimọ diẹ ninu awọn iṣoro ti ko ṣe akiyesi nipasẹ koodu ijẹrisi atijọ. Niwọn igba ti abajade aṣiṣe fun iru awọn sọwedowo le ni ipa lori ibamu pẹlu koodu iṣiṣẹ tẹlẹ, awọn ikilọ ni akọkọ ti jade dipo awọn aṣiṣe.

  • Ẹya “const”, eyiti o pinnu iṣeeṣe ti lilo ni eyikeyi ipo dipo awọn iduro, ni a lo fun iṣẹ is_power_of_two (fun awọn nọmba ti ko forukọsilẹ).
  • Apa tuntun ti API ni a ti gbe lọ si ẹka iduroṣinṣin, pẹlu todo! () Makiro ati bibẹ pẹlẹbẹ :: tun, mem :: mu, BTreeMap :: get_key_value, HashMap :: gba_key_value, awọn ọna ti jẹ imuduro.
    Aṣayan :: as_deref, Aṣayan :: as_deref_mut, Aṣayan :: flatten, UdpSocket :: peer_addr, {f32,f64} :: lati_be_bytes, {f32,f64} ::to_le_bytes,{f32,f64} ::to_ne_bytes, {f32, f64}::lati_be_bytes, {f32,f64}::lati_le_bytes, ati {f32,f64}::lati_ne_bytes.

  • Ninu ẹru oluṣakoso package
    imuse caching alakojo ikilo lori disk. Ṣafikun aṣayan “metadata eru” si aṣẹ “metadata eru”.--filter-Syeed"lati ṣafihan awọn idii nikan ti o somọ si pẹpẹ ibi-afẹde pàtó ninu iwe ipinnu igbẹkẹle. Ṣafikun aṣayan atunto ẹya http.ssl lati ṣalaye awọn ẹya TLS to wulo.
    Ṣe afikun agbara lati ṣe atẹjade apakan naa "dev-dependencies" lai ṣe pato bọtini "ẹya" naa.

  • Olupilẹṣẹ rustc n pese atilẹyin ipele kẹta fun awọn iru ẹrọ ibi-afẹde thumbv7neon-unknown-linux-musleabihf, aarch64-unknown-none-softfloat, mips64-unknown-linux-muslabi64 ati mips64el-unknown-linux-muslabi64. Ipele kẹta jẹ atilẹyin ipilẹ, ṣugbọn laisi idanwo adaṣe ati atẹjade ti awọn ile-iṣẹ osise.

orisun: opennet.ru

Fi ọrọìwòye kun