Rust 1.47 Programazio Lengoaia kaleratzea

argitaratua sistemaren programazio-lengoaiaren 1.47 bertsioa Herdoilaren, Mozilla proiektuak sortua. Lengoaia memoriaren segurtasunean zentratzen da, memoria automatikoki kudeatzen du eta erabili gabe zereginen paralelismo handia lortzeko bitartekoa eskaintzen du zabor biltzailea ΠΈ runtime (Exekuzio-denbora liburutegi estandarraren hasierako oinarrizko hasierara eta mantentze-lanetara mugatzen da).

Rust-en memoria-kudeaketa automatikoak akatsak ezabatzen ditu erakusleak manipulatzean eta maila baxuko memoriaren manipulaziotik sortzen diren arazoetatik babesten du, hala nola, memoria-eskualde batera atzitzea askatu ondoren, erakusle nuluen deserreferentziak, buffer gainditzeak, etab. Liburutegiak banatzeko, muntaia ziurtatzeko eta proiektuaren mendekotasunak kudeatzeko pakete-kudeatzailea garatzen ari da. Zama. Biltegi bat onartzen da liburutegiak ostatatzeko kaxak.io.

Nagusia berrikuntzak:

  • Moten laguntza ezarri da arrayak edozein tamaina. Aurretik, balio orokor guztietarako funtzio generikoak definitzeko ezintasunagatik, liburutegi estandarrak ezaugarrien euskarria eskaintzen zuen gehienez 32 elementuko matrizeetarako soilik (tamaina bakoitzeko ezaugarriak estatikoki definitu ziren). Konstante generikoen (Β«const genericΒ») funtzionalitatearen sorrerari esker, edozein array-tamainetarako funtzio generikoak definitzea posible izan zen, baina oraindik ez daude hizkuntza-ezaugarri egonkorretan sartzen, nahiz eta konpilatzailean inplementatuta egon eta orain inplikatuta edozein tamainatako array-ezaugarrietarako liburutegi estandarrean.

    Adibidez, Rust 1.47-n hurrengo eraikuntzak array baten edukia inprimatuko du, nahiz eta aurretik errore bat eragingo lukeen:

    fn main() {
    izan bedi xs = [0; 34];

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

  • Aztarna laburragoen irteera (backtrace), irteera larrialdi egoeretan. Egoera gehienetan interesgarriak ez diren elementuak, baina irteera nahasten duten eta arazoaren arrazoi nagusietatik arreta kentzen dute, arrastotik kanpo geratzen dira. Aztarna osoa itzultzeko, "RUST_BACKTRACE=full" ingurune-aldagaia erabil dezakezu. Adibidez, kodearentzat

    fn main() {
    ikara!();
    }

    Lehen, arrastoa 23 etapatan ateratzen zen, baina orain horretara murriztuko da
    Funtsa berehala jabetzeko aukera ematen duten 3 urrats:

    'main' haria izututa zegoen 'izu esplizituan', src/main.rs:2:5
    pilatu atzerako ibilbidea:
    0: std::panicking::begin_panic
    /rustc/d…d75a/library/std/src/panicking.rs:497 helbidean
    1: jolastokia::nagusia
    helbidean./src/main.rs:2
    2: core::ops::function::FnOnce::call_once
    /rustc/d…d75a/library/core/src/ops/function.rs:227 helbidean

  • Rustc konpilatzailea eguneratu da erabiliz eraikitzeko LLVM 11 (Herdoila erabilerak LLVM backend gisa kodea sortzea). Aldi berean, LLVM zaharragoekin eraikitzeko gaitasuna mantentzen da, 8. bertsiora arte, baina lehenespenez ( rust-lang/llvm-proiektua) LLVM 11 erabiltzen ari da orain. LLVM 11 datozen egunetan kaleratzea espero da.
  • Windows plataforman, rustc konpilatzaileak kontrol-fluxuaren osotasunaren egiaztapenak (Control Flow Guard) gaitzeko laguntza eskaintzen du, "-C control-flow-guard" marka erabiliz aktibatuta. Beste plataformetan, oraingoz, bandera hau ez da aintzat hartzen.
  • APIen zati berri bat egonkor kategoriara eraman da, egonkortuta barne
    Ident::new_raw,
    Barrutia::hutsik dago,
    RangeInclusive::hutsik dago,
    Emaitza::as_deref,
    Emaitza::as_deref_mut,
    Vec::leak,
    erakuslea::offset_from,
    f32::TAU eta
    f64::TAU.

  • Metodoetan erabiltzen da "const" atributua, konstanteen ordez edozein testuingurutan erabiltzeko aukera zehazten duena:
    • berria zero ez den zenbaki oso guztietarako;
    • checked_add, checked_sub, checked_mul, checked_neg, checked_shl, checked_shr, saturating_add, saturating_sub eta saturating_mul zenbaki osoetarako;
    • is_ascii_alphabetic, is_ascii_uppercase, is_ascii_lowercase, is_ascii_alphanumeric, is_ascii_digit, is_ascii_hexdigit, is_ascii_punctuation, is_ascii_graphic, is_ascii_whitspace eta is_ascii_control char eta u8 motetarako.
  • FreeBSDrako inplikatuta FreeBSD 11.4 tresna-kit (FreeBSD 10-k ez du LLVM 11 onartzen).

Iturria: opennet.ru

Gehitu iruzkin berria