Rust 1.40 Programazio Lengoaia kaleratzea

argitaratua sistemaren programazio lengoaia kaleratzea Herdoila 1.40, Mozilla proiektuak sortua. Lengoaiak memoriaren segurtasunean oinarritzen da, memoria automatikoki kudeatzen du eta zereginen paralelismo handia lortzeko tresnak eskaintzen ditu zabor-biltzailerik erabili gabe eta runtime.

Rust-en memoria-kudeaketa automatikoak garatzailea erakusleen manipulaziotik askatzen du eta maila baxuko memoriaren manipulaziotik sortzen diren arazoetatik babesten du, hala nola, memoria librearen ondorengo sarbideetatik, erakusle nuluen deserreferentziak, buffer gainezkatzeetatik eta antzekoetatik. Liburutegiak banatzeko, muntaia ziurtatzeko eta proiektuaren mendekotasunak kudeatzeko pakete-kudeatzaile bat garatzen ari da. Zama, programarako beharrezkoak diren liburutegiak klik bakarrean eskuratu ahal izateko. Biltegi bat onartzen da liburutegiak ostatatzeko kaxak.io.

Nagusia berrikuntzak:

  • Egiturak (struct) eta enumerazioak (enum Variant blokearekin) markatzeko gaitasuna gehitu da " atributua erabiliz#[ez_zehatzailea]", zeina aukera ematen du etorkizunean, gehitu eremu eta aukera berriak deklaratutako egitura eta zenbaketei. Adibidez, publikoki deklaratutako eremuak dituzten egiturak dituzten moduluen garatzaileek "#[ez_exhaustive]" erabil dezakete etorkizunean eremu berriak gehitu ditzaketen egiturak markatzeko. Orain arte, egoera horretan, garatzaileak eremuak modu pribatuan deklaratzea eta eremuen zerrenda aldaezin batera lotzea aukeratzera behartuta zegoen. Atributu berriak muga hori kentzen du eta etorkizunean eremu berriak gehitzeko aukera ematen du, aurretik konpilatutako kanpoko kodea hausteko arriskurik gabe. Kaxa paketeetan, "match" atalean aukerak parekatzean, "_ => {...}" maskaren definizio esplizitua behar da, etorkizuneko eremu posibleak estaltzen dituena, bestela errore bat agertuko da eremu berriak gehitzean.
  • Gehituta Mac!() prozedurazko makroari deitzeko gaitasuna motako testuinguru batean. Adibidez, orain "mota Foo = expand_to_type!(bar);" idatz dezakezu "zabaldu_to_type" prozedurazko makroa bada.
  • "Kanpoko { ... }" blokeetan gehitu prozedurazko eta atributu makroak erabiltzeko gaitasuna, "bang!()" makroak barne, adibidez:

    makro_arauak! make_item { ($izena:ident) => { fn $izena(); }}

    kanpoko {
    make_element!(alpha);
    make_item!(beta);
    }

    kanpoko "C" {
    #[nire_identitatea_makro] fn foo();
    }

  • Makroetan ezarrita "makro_arauak!" elementuak sortzeko gaitasuna. "Makro_arauak!" posible da bai funtzio-itxurako makroetan ("mac!()"), bai atributu moduan ("#[mac]").
  • $m:meta mapa-elementuan gehitu Token zenbaketa balio arbitrarioetarako laguntza ("[TOKEN_STREAM]", "{TOKEN_STREAM}" eta "(TOKEN_STREAM)")), adibidez:

    makro_arauak! accept_meta { ($m:meta) => {} }
    onartu_meta!( nire::bidea );
    onartu_meta!( my::path = "lit" );
    onartu_meta!( nire::bidea ( a b c ) );
    onartu_meta!( nire::bidea [ a b c ] );
    onartu_meta!( nire::bidea { a b c } );

  • Rust 2015 moduan, akatsen irteera gaituta dago aldagaien mailegua egiaztatzean (mailegu egiaztatzailea) NLL (Non-Lexical Lifetimes) teknika erabiliz identifikatutako arazoetarako. Aurretik, abisuak akatsekin ordezkatu ziren Rust 2018 moduan exekutatzen zirenean.
    Aldaketa Rust 2015 modura zabaldu ondoren, garatzaileek azkenean egin ahal izan zuten kentzeko mailegu-zuzentzaile zaharretik.

    Gogora dezagun maileguan hartutako aldagaien bizi-iraupena kontuan hartzeko mekanismo berri batean oinarritutako egiaztapen-sistemak egiaztapen-kode zaharrak oharkabean ez zituen zenbait arazo identifikatzea ahalbidetu zuela. Egiaztapen horien errore-irteerak aurretik lan egiten zuen kodearekin bateragarritasunean eragina izan dezakeenez, hasiera batean abisuak eman ziren erroreen ordez.

  • "const" atributua, konstanteen ordez edozein testuingurutan erabiltzeko aukera zehazten duena, is_power_of_two funtziorako erabiltzen da (zenbaki osorik zeinugabeetarako).
  • APIaren zati berri bat kategoria egonkorrera eraman da, todo!() makroa eta slice::repeat, mem::take, BTreeMap::get_key_value, HashMap::get_key_value barne, metodoak egonkortu dira.
    Aukera::as_deref, Aukera::as_deref_mut, Aukera::flatten, UdpSocket::peer_addr, {f32,f64}::to_be_bytes, {f32,f64}::to_le_bytes,{f32,f64}::to_ne_bytes, {f32 f64}::from_be_bytes, {f32,f64}::from_le_bytes eta {f32,f64}::from_ne_bytes.

  • Pakete-kudeatzailea zaman
    ezarrita konpiladorearen abisuak diskoan gordetzea. "karga metadatuak" aukera gehitu zaio "karga metadatuak" komandoari--iragazkia-plataforma" menpekotasunen ebazpenaren zutabean zehaztutako xede-plataformari lotutako paketeak soilik erakusteko. http.ssl-bertsioa konfiguratzeko aukera gehitu da baliozko TLS bertsioak definitzeko.
    Atala argitaratzeko aukera gehitu da "garapen-menpekotasunak" "bertsioa" gakoa zehaztu gabe.

  • Rustc konpilatzaileak xede-plataformetarako hirugarren mailako euskarria eskaintzen du thumbv7neon-unknown-linux-musleabihf, aarch64-unknown-none-softfloat, mips64-unknown-linux-muslabi64 eta mips64el-unknown-linux-muslabi64. Hirugarren mailak oinarrizko euskarria dakar, baina proba automatizaturik eta eraikuntza ofizialen argitalpenik gabe.

Iturria: opennet.ru

Gehitu iruzkin berria