Rust 1.40 forritunarmálsútgáfa

birt útgáfu forritunarmáls kerfisins Ryð 1.40, stofnað af Mozilla verkefninu. Tungumálið einbeitir sér að minnisöryggi, veitir sjálfvirka minnisstjórnun og veitir verkfæri til að ná fram mikilli samsvörun verkefna án þess að nota sorphirðu og afturkreistingur.

Sjálfvirk minnisstjórnun Rust leysir þróunaraðilann við bendil meðhöndlunar og verndar gegn vandamálum sem stafa af minni meðhöndlun á lágu stigi, eins og eftir-frjáls minni aðgangur, núll bendilinn afvísun, biðminni framúrkeyrsla, og þess háttar. Verið er að þróa pakkastjóra til að dreifa bókasöfnum, tryggja samsetningu og stjórna ósjálfstæði verkefnisins. Hleðsla, sem gerir þér kleift að fá þau bókasöfn sem þarf fyrir forritið með einum smelli. Geymsla er studd til að hýsa bókasöfn crates.io.

Helstu nýjungar:

  • Bætti við getu til að merkja mannvirki (struct) og upptalningar (enum með Variant blokk) með því að nota eigindina "#[ekki_tæmandi]", sem gerir í framtíðinni, bæta nýjum sviðum og valkostum við yfirlýst mannvirki og upptalningar. Til dæmis geta forritarar eininga sem hafa mannvirki með opinberlega yfirlýstum reitum notað „#[non_tæmandi]“ til að merkja mannvirki sem gætu bætt við nýjum reitum í framtíðinni. Hingað til, í þessari stöðu, neyddist framkvæmdaraðilinn til að velja á milli að lýsa reitum í einkaskilaboðum og bindast óbreytanlegum lista yfir reiti. Nýja eigindin fjarlægir þessa takmörkun og gerir þér kleift að bæta við nýjum sviðum í framtíðinni án þess að eiga á hættu að brjóta áður samsettan utanaðkomandi kóða. Í kassapökkum, þegar valmöguleikar passa í „samsvörun“ hlutanum, þarf skýra skilgreiningu á grímunni „_ => {...}“, sem nær yfir hugsanlega framtíðareiti, annars mun villa birtast þegar nýjum reitum er bætt við.
  • Bætt við hæfileikinn til að kalla málsmeðferðarmakró mac!() í tegundarsamhengi. Til dæmis geturðu nú skrifað „tegund Foo = expand_to_type!(bar);“ ef „expand_to_type“ er málsmeðferðarfjölvi.
  • Í „ytri { ... }“ kubbum bætt við getu til að nota málsmeðferðar- og eigindafjölva, þar á meðal „bang!()“ fjölva, til dæmis:

    macro_reglur! make_item { ($name:ident) => { fn $name(); } }

    ytri {
    gera_hlut!(alfa);
    gera_hlut!(beta);
    }

    ytri "C" {
    #[my_identity_macro] fn foo();
    }

  • Í fjölvi komið til framkvæmda getu til að búa til „macro_rules!“ þætti. Búa til "makróreglur!" mögulegt bæði í virknilíkum fjölvi ("mac!()") og í fjölvi í formi eiginda ("#[mac]").
  • Í $m:meta kortlagningarhlutanum bætt við stuðningur við handahófskenndar táknupptalningargildi („[TOKEN_STREAM]“, „{TOKEN_STREAM}“ og „(TOKEN_STREAM)“), til dæmis:

    macro_reglur! accept_meta { ($m:meta) => {} }
    accept_meta!( my::path );
    accept_meta!( my::path = "lit" );
    accept_meta!( mín::slóð ( a b c ) );
    samþykkja_meta!( mín::slóð [ a b c ] );
    accept_meta!( mín::slóð { a b c } );

  • Í Rust 2015 ham er villuútgangur virkjuð fyrir vandamál sem greinst þegar verið er að athuga lántöku breytna (lánafgreiðslumaður) með NLL (Non-Lexical Lifetimes) tækni. Áður var viðvörunum skipt út fyrir villur þegar keyrt var í Rust 2018 ham.
    Eftir að breytingin var framlengd í Rust 2015 ham gátu verktaki loksins gert það losna við frá gamla lánatékkanum.

    Við skulum muna að sannprófunarkerfið sem byggir á nýju kerfi til að taka tillit til líftíma lánaðra breyta gerði það að verkum að hægt var að bera kennsl á nokkur vandamál sem ekki var tekið eftir af gamla staðfestingarkóðann. Þar sem villuúttak fyrir slíkar athuganir gæti haft áhrif á samhæfni við áður virkan kóða, voru viðvaranir upphaflega gefnar út í stað villna.

  • Eigindin „const“, sem ákvarðar möguleikann á að nota hann í hvaða samhengi sem er í stað fasta, er notaður fyrir fallið is_power_of_two (fyrir ómerktar heiltölur).
  • Nýr hluti af API hefur verið færður í stöðugan flokk, þar á meðal todo!() fjölva og sneið::repeat, mem::take, BTreeMap::get_key_value, HashMap::get_key_value, aðferðir hafa verið stöðugar.
    Valkostur::as_deref, Valkostur::as_deref_mut, Valkostur::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, og {f32,f64}::from_ne_bytes.

  • Í pakkastjóra farm
    komið til framkvæmda skyndiminni þýðanda viðvaranir á diski. Bætti valkostinum „lýsigögn farms“ við skipunina „lýsigögn farms“--síu-pallur" til að sýna aðeins pakka sem eru bundnir við tilgreindan markvettvang í dálkinum fyrir upplausn ósjálfstæðis. Bætti við http.ssl-útgáfu stillingarvalkosti til að skilgreina gildar TLS útgáfur.
    Bætti við möguleikanum á að birta hlutann "dev-ósjálfstæði" án þess að tilgreina "útgáfu" lykilinn.

  • Rustc þýðandinn veitir þriðja stigs stuðning fyrir markpalla thumbv7neon-unknown-linux-musleabihf, aarch64-unknown-none-softfloat, mips64-unknown-linux-muslabi64 og mips64el-unknown-linux-muslabi64. Þriðja stigið felur í sér grunnstuðning, en án sjálfvirkrar prófunar og birtingar á opinberum byggingum.

Heimild: opennet.ru

Bæta við athugasemd