ipata 1.34 Siseto ede Tu

Ede siseto eto Rust 1.34, ti o dagbasoke nipasẹ iṣẹ akanṣe Mozilla, ti tu silẹ. Ede naa dojukọ aabo iranti, pese iṣakoso iranti aifọwọyi, ati pese ọna lati ṣaṣeyọri isọdọmọ iṣẹ-giga laisi lilo agbasọ idoti tabi 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 ifọkasi ijuboluwole asan, awọn agbekọja buffer, ati bii bẹẹ. 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, eyiti o fun ọ laaye lati gba awọn ile-ikawe ti o nilo fun eto naa ni titẹ kan. Ibi ipamọ crates.io jẹ atilẹyin fun awọn ile-ikawe alejo gbigba.

Awọn imotuntun akọkọ:

  • Oluṣakoso package Cargo ti ṣafikun awọn irinṣẹ lati ṣiṣẹ pẹlu awọn iforukọsilẹ package miiran ti o le wa ni ibagbepọ pẹlu iforukọsilẹ gbogbo eniyan crates.io. Fun apẹẹrẹ, awọn olupilẹṣẹ ti awọn ohun elo ohun-ini le ni bayi lo iforukọsilẹ ikọkọ tiwọn, eyiti o le ṣee lo nigbati atokọ awọn igbẹkẹle ni Cargo.toml, ati lo awoṣe ikede kan ti o jọra si crates.io fun awọn ọja wọn, ati tọka awọn igbẹkẹle si awọn apoti mejeeji. io ati si iforukọsilẹ tirẹ.

    Lati ṣafikun iforukọsilẹ ita si ~/.cargo/config
    aṣayan tuntun “igbasilẹ mi” ti pese ni apakan “[awọn iforukọsilẹ]”, ati pe aṣayan “miiran-crate” ti ṣafikun lati darukọ iforukọsilẹ ita ni awọn igbẹkẹle ni Cargo.toml ni apakan “[awọn igbẹkẹle]”. Lati sopọ si iforukọsilẹ afikun, nìkan gbe ami-ẹri ijẹrisi sinu faili ~/.cargo/ credentials ki o si ṣiṣẹ aṣẹ naa
    "cargo login --registry=mi-registry" ati lati ṣe atẹjade akojọpọ kan -
    "ẹrù tí a tẹ̀ -registry=ìforukọsilẹ mi";

  • Ṣe afikun atilẹyin kikun fun lilo oniṣẹ ẹrọ “?”. ni awọn ẹkọ, eyiti o gba ọ laaye lati lo koodu apẹẹrẹ lati inu iwe bi awọn idanwo. Oṣiṣẹ tẹlẹ
    "?" le ṣee lo lati mu awọn aṣiṣe lakoko ṣiṣe idanwo nikan ni iwaju iṣẹ “fn akọkọ ()” tabi ni awọn iṣẹ “#[idanwo]”;

  • Ninu awọn abuda aṣa ti a ṣalaye nipa lilo awọn macros ilana, o ṣee ṣe lati lo awọn ipilẹ lainidii ti awọn ami (“#[attr ($ tokens)]”, “#[attr[$ tokens]] ati #[attr{$ tokens}]”) . Ni iṣaaju, awọn eroja le jẹ pato ni igi kan/fọọmu atunṣe nipa lilo awọn ọrọ ọrọ gangan, fun apẹẹrẹ “#[foo(bar, baz(quux, foo = “bar”))]”, ṣugbọn ni bayi o ṣee ṣe lati lo awọn iṣiro (' #[ibiti o (0. .10)]') ati awọn ikole bi "#[bound (T: MyTrait)]";
  • Awọn abuda TryFrom ati TryInto ti jẹ imuduro, gbigba awọn iyipada iru pẹlu mimu aṣiṣe. Fun apẹẹrẹ, awọn ọna bii from_be_bytes pẹlu awọn oniruuru odidi lo awọn akojọpọ bi titẹ sii, ṣugbọn data nigbagbogbo wa ni oriṣi Bibẹ, ati iyipada laarin awọn akopọ ati awọn ege jẹ iṣoro lati ṣe pẹlu ọwọ. Pẹlu iranlọwọ ti awọn abuda titun, iṣẹ ti a pato le ṣee ṣe lori fifo nipasẹ ipe si .try_into (), fun apẹẹrẹ, "jẹ ki num = u32 :: from_be_bytes (slice.try_into ()?")". Fun awọn iyipada ti o ṣaṣeyọri nigbagbogbo (fun apẹẹrẹ, lati iru u8 si u32), iru aṣiṣe Ailopin kan ti ṣafikun lati gba lilo ti o han gbangba.
    GbiyanjuLati fun gbogbo awọn imuse ti o wa tẹlẹ ti "Lati";

  • Deprecated awọn CommandExt :: before_exec iṣẹ, eyi ti o laaye ipaniyan ti a olutọju ṣaaju ki o to exec ti o ti wa ni ṣiṣẹ ni o tọ ti a ọmọ ilana forked lẹhin ipe orita (). Labẹ iru awọn ipo bẹẹ, diẹ ninu awọn orisun ti ilana obi, gẹgẹbi awọn apejuwe faili ati awọn agbegbe iranti ti o ya aworan, le jẹ pidánpidán, eyiti o le ja si ihuwasi aisọye ati iṣiṣẹ ti ko tọ ti awọn ile-ikawe.
    Dipo ṣaaju_exec, o niyanju lati lo iṣẹ ailewu CommandExt :: pre_exec.

  • Iduroṣinṣin ti o fowo si ati awọn oriṣi odidi atomiki ti a ko fowo si ti o wa ni iwọn lati 8 si 64 bits (fun apẹẹrẹ, AtomicU8), bakanna pẹlu awọn iru ti fowo si NonZeroI[8|16|32|54|128].
  • Apa tuntun ti API ni a ti gbe lọ si ẹka iduro, pẹlu Eyikeyi:: Iru_id, Aṣiṣe:: Iru_id, ege :: too_by_cached_key, str ::escape_*, str :: Split_ascii_whitespace, Lẹsẹkẹsẹ :: checked_[fikun|sub| ] ati awọn ọna SystemTime ti jẹ imuduro :: checkcked_[fikun|sub]. Iter :: from_fn ati iter :: awọn iṣẹ aṣeyọri ti jẹ imuduro;
  • Fun gbogbo awọn oriṣi odidi, checked_pow, saturating_pow, wrapping_pow ati overflowing_pow awọn ọna ti wa ni imuse;
  • Ṣe afikun agbara lati mu awọn iṣapeye ṣiṣẹ ni ipele ọna asopọ nipasẹ sisọ aṣayan aṣayan “-C linker-plugin-lto” (rustc ṣe akopọ koodu Rust sinu koodu LLVM, eyiti o fun laaye awọn iṣapeye LTO lati lo).

orisun: opennet.ru

Fi ọrọìwòye kun