Rust 1.47 forritunarmálsútgáfa

Útgáfa 1.47 af Rust system forritunarmálinu, stofnað af Mozilla verkefninu, hefur verið gefin út. Tungumálið einbeitir sér að minnisöryggi, veitir sjálfvirka minnisstjórnun og veitir leið til að ná mikilli samsvörun verkefna án þess að nota sorphirðu eða keyrslutíma (keyrslutími minnkar í grunnuppstillingu og viðhald á venjulegu bókasafni).

Sjálfvirk minnisstjórnun Rust útilokar villur þegar verið er að meðhöndla ábendingar og verndar gegn vandamálum sem stafa af minni meðhöndlun á lágu stigi, eins og aðgangur að minnissvæði eftir að það hefur verið losað, frávísanir á núllbendi, offramkeyrsla á biðminni osfrv. Til að dreifa bókasöfnum, tryggja samsetningu og stjórna ósjálfstæði er verkefnið að þróa farmpakkastjórann. Crates.io geymslan er studd til að hýsa bókasöfn.

Helstu nýjungar:

  • Innleiddur stuðningur við eiginleika fyrir fylki af handahófskenndri stærð. Áður, vegna vanhæfni til að skilgreina almennar aðgerðir fyrir öll heiltölugildi, veitti staðlaða bókasafnið innbyggðan eiginleikastuðning aðeins fyrir fylki allt að 32 þætti að stærð (eiginleikarnir fyrir hverja stærð voru statískt skilgreindir). Þökk sé stofnun const generics virkni, varð mögulegt að skilgreina almennar aðgerðir fyrir hvaða fylkisstærð sem er, en þær eru ekki enn innifaldar í stöðugum eiginleikum tungumálsins, þó að þær séu útfærðar í þýðandanum og eru nú notaðar í venjulegu bókasafninu fyrir fylkisgerðir af hvaða stærð sem er.
    Til dæmis mun eftirfarandi smíði í Rust 1.47 prenta innihald fylkis, þó áður hefði það leitt til villu:

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

  • Veitt úttak af styttri ummerkjum (til baka), framleiðsla í neyðartilvikum. Hlutir sem eru ekki áhugaverðir í flestum aðstæðum, en rugla útkomuna og draga athyglina frá aðalorsökum vandans, eru útilokaðir frá rekstrinum. Til að skila fullri rakningu geturðu notað umhverfisbreytuna "RUST_BACKTRACE=full". Til dæmis fyrir kóðann

fn main() {
hræðsla!();
}

Áður var rakningin gefin út í 23 þrepum, en nú verður hún minnkað í 3 stig, sem gerir þér kleift að átta þig strax á kjarnanum:

þráður 'aðal' panikkaði við 'skýrt læti', src/main.rs:2:5
stafla bakslag:
0: std::panikk::begin_panic
á /rustc/d…d75a/library/std/src/panicking.rs:497
1: leikvöllur::aðal
á ./src/main.rs:2
2: kjarna::ops::fall::FnOnce::call_once
á /rustc/d…d75a/library/core/src/ops/function.rs:227

  • Rustc þýðandinn hefur verið uppfærður til að byggja með LLVM 11 (Rust notar LLVM sem bakenda fyrir kóðagerð). Jafnframt er möguleikinn á að smíða með gamla LLVM, upp í útgáfu 8, haldið, en sjálfgefið (í rust-lang/llvm-project) er nú notað LLVM 11. Búist er við útgáfu LLVM 11 á næstunni. daga.
  • Á Windows vettvangnum veitir rustc þýðandinn stuðning til að virkja eftirlitsflæðisheilleika (Control Flow Guard), virkjað með „-C control-flow-guard“ fánanum. Á öðrum kerfum er þessi fáni hunsuð í bili.
  • Nýr hluti af API hefur verið fluttur í stöðugan flokk, þar á meðal stöðugt auðkenni::nýtt_hrátt, Range::er_tómt, RangeInclusive::er_tómt, Result::as_deref, Result::as_deref_mut, Vec::leka, bendill::offset_from , f32:: TAU og f64::TAU.
  • „const“ eigindin, sem ákvarðar möguleikann á að nota hann í hvaða samhengi sem er í stað fasta, er notaður í aðferðunum:
    • nýtt fyrir allar heiltölur aðrar en núll;
    • checked_add, checked_sub, checked_mul, checked_neg, checked_shl, checked_shr, saturating_add, saturating_sub og saturating_mul fyrir allar heiltölur;
    • is_ascii_stafrófsröð, is_ascii_hástafur, is_ascii_lágstafur, is_ascii_alphanumeric, is_ascii_digit, is_ascii_hexdigit, is_ascii_punctuation, is_ascii_graphic, is_ascii_whitespace og is_ascii_
  • Fyrir FreeBSD er verkfærakistan frá FreeBSD 11.4 notað (FreeBSD 10 styður ekki LLVM 11).

Tekið frá opennet.ru

Heimild: linux.org.ru

Bæta við athugasemd