Rust 1.47 Rhyddhau Iaith Rhaglennu

Cyhoeddwyd rhyddhau 1.47 o iaith raglennu'r system Rust, a sefydlwyd gan brosiect Mozilla. Mae'r iaith yn canolbwyntio ar ddiogelwch cof, yn darparu rheolaeth cof awtomatig, ac yn darparu modd i gyflawni cyfochrogrwydd tasg uchel heb ei ddefnyddio casglwr sbwriel ΠΈ Rhedeg (mae amser rhedeg yn dibynnu ar gychwyn a chynnal a chadw sylfaenol y llyfrgell safonol).

Mae rheolaeth cof awtomatig Rust yn dileu gwallau wrth drin awgrymiadau ac yn amddiffyn rhag problemau sy'n deillio o drin cof lefel isel, megis cyrchu rhanbarth cof ar Γ΄l iddo gael ei ryddhau, dadgyfeiriadau pwyntydd nwl, gor-redeg byffer, ac ati. Mae rheolwr pecyn yn cael ei ddatblygu i ddosbarthu llyfrgelloedd, sicrhau cydosod a rheoli dibyniaethau gan y prosiect. TΓ’l. Cefnogir ystorfa i gynnal llyfrgelloedd cewyll.io.

Y prif arloesiadau:

  • Gweithredu cymorth ar gyfer mathau araeau maint mympwyol. Yn flaenorol, oherwydd yr anallu i ddiffinio swyddogaethau generig ar gyfer pob gwerth cyfanrif, roedd y llyfrgell safonol yn darparu cefnogaeth nodwedd adeiledig yn unig ar gyfer araeau hyd at 32 o elfennau mewn maint (diffiniwyd y nodweddion ar gyfer pob maint yn statig). Diolch i greu ymarferoldeb generig cyson ("const generics"), daeth yn bosibl diffinio swyddogaethau generig ar gyfer unrhyw faint arae, ond nid ydynt eto wedi'u cynnwys yn y nodweddion iaith sefydlog, er eu bod yn cael eu gweithredu yn y casglwr ac yn awr. dan sylw yn y llyfrgell safonol ar gyfer arae nodweddion o unrhyw faint.

    Er enghraifft, bydd y lluniad canlynol yn Rust 1.47 yn argraffu cynnwys arae, er yn flaenorol byddai wedi arwain at wall:

    fn prif () {
    gadewch xs = [0; 34];

    println!("{:?}", xs);
    }

  • Wedi darparu allbwn o olion byrrach (Γ΄l-olrhain), allbwn mewn sefyllfaoedd brys. Mae elfennau nad ydynt o ddiddordeb yn y rhan fwyaf o sefyllfaoedd, ond sy'n annibendod yr allbwn ac yn tynnu sylw oddi wrth brif achosion y broblem, yn cael eu heithrio o'r olion. I ddychwelyd olrhain llawn, gallwch ddefnyddio'r newidyn amgylchedd "RUST_BACKTRACE=full". Er enghraifft, ar gyfer y cod

    fn prif () {
    panig!();
    }

    Yn flaenorol, roedd yr olrhain yn allbwn mewn 23 cam, ond nawr bydd yn cael ei leihau i
    3 cham sy'n eich galluogi i ddeall yr hanfod ar unwaith:

    aeth yr edefyn 'prif' i banig ar 'explicit panic', src/main.rs:2:5
    Γ΄l-Γ΄l pentwr:
    0: std:: mynd i banig::begin_panic
    yn /rustc/d…d75a/library/std/src/panicking.rs:497
    1: maes chwarae::main
    yn ./src/main.rs:2
    2: craidd::ops:: swyddogaeth::FnOnce:: call_once
    yn /rustc/d…d75a/library/core/src/ops/function.rs:227

  • Mae'r casglwr rustc wedi'i ddiweddaru i adeiladu gan ddefnyddio LLVM 11 (Rhwd defnyddiau LLVM fel backend ar gyfer cynhyrchu cod). Ar yr un pryd, cedwir y gallu i adeiladu gyda LLVMs hΕ·n, hyd at fersiwn 8, ond yn ddiofyn (yn rust-lang/llvm-prosiect) bellach yn defnyddio LLVM 11. Disgwylir i LLVM 11 gael ei ryddhau yn y dyddiau nesaf.
  • Ar blatfform Windows, mae'r casglwr rustc yn darparu cefnogaeth ar gyfer galluogi gwiriadau cywirdeb llif rheoli (Control Flow Guard), wedi'i actifadu gan ddefnyddio'r faner β€œ-C control-flow-guard”. Ar lwyfannau eraill mae'r faner hon yn cael ei hanwybyddu am y tro.
  • Mae cyfran newydd o APIs wedi'i drosglwyddo i'r categori sefydlog, gan gynnwys sefydlogi
    ID::newydd_raw,
    Ystod:: yn_ wag,
    RangeInclusive::yn_wag,
    Canlyniad:: as_deref,
    Canlyniad:: as_deref_mut,
    Vc:: gollwng,
    pwyntydd:: offset_from,
    f32::TAU a
    f64::TAU.

  • Defnyddir y priodoledd β€œconst”, sy'n pennu'r posibilrwydd o'i ddefnyddio mewn unrhyw gyd-destun yn lle cysonion, yn y dulliau:
    • newydd i bob cyfanrif heblaw sero;
    • checked_add, checked_sub, checked_mul, checked_neg, checked_shl, checked_shr, saturating_add, saturating_sub a saturating_mul ar gyfer pob cyfanrif;
    • is_ascii_alphabetic, is_ascii_uppercase, is_ascii_caseg fach, is_ascii_alphanumeric, is_ascii_digit, is_ascii_hexdigit, is_ascii_punctuation, is_ascii_graphic, is_ascii_whitespace ac is_ascii_control ar gyfer torgoch ac u8 mathau.
  • Ar gyfer FreeBSD dan sylw pecyn cymorth gan FreeBSD 11.4 (nid yw FreeBSD 10 yn cefnogi LLVM 11).

Ffynhonnell: opennet.ru

Ychwanegu sylw