Rust 1.67 Programazio Lengoaia kaleratzea

Rust 1.67 erabilera orokorreko programazio-lengoaia argitaratu da, Mozilla proiektuak sortua, baina orain Rust Foundation irabazi asmorik gabeko erakunde independentearen babespean garatua. Lengoaiak memoriaren segurtasunean oinarritzen da eta lanaren paralelismo handia lortzeko bitartekoak eskaintzen ditu zabor-biltzailea eta exekuzio-denbora erabiltzea saihestuz (exekuzio-denbora liburutegi estandarraren hasierako oinarrizko hasierara eta mantentzera murrizten da).

Rust-en memoria maneiatzeko metodoek garatzaileari erakusleak manipulatzerakoan akatsetatik salbatzen dute eta maila baxuko memoria-kudeaketaren ondorioz sortzen diren arazoetatik babesten dute, hala nola, memoria-eremu batera atzitzea askatu ondoren, erakusle nuluak deserreferentziak egitea, buffer gainditzeak, etab. Liburutegiak banatzeko, eraikuntzak emateko eta mendekotasunak kudeatzeko, proiektuak Cargo paketeen kudeatzailea garatzen du. crates.io biltegia liburutegiak ostatatzeko onartzen da.

Memoriaren segurtasuna Rust-en konpilazio garaian eskaintzen da erreferentziak egiaztatzeko, objektuen jabetzaren jarraipena eginez, objektuen iraupenen (esparruak) jarraipena eginez eta kodearen exekuzioan memoria sarbidearen zuzentasuna ebaluatuz. Rust-ek osoko gainezkatzeen aurkako babesa eskaintzen du, erabili aurretik aldagaien balioak derrigorrezko hasieratzea eskatzen du, liburutegi estandarrean akatsak hobeto kudeatzen ditu, erreferentzia eta aldagai aldaezinen kontzeptua lehenespenez aplikatzen du, idazketa estatiko sendoa eskaintzen du akats logikoak minimizatzeko.

Berrikuntza nagusiak:

  • Future::Output-ekin funtzio asinkronikoetarako, orain posible da "#[erabil_behar_erabili]" oharrak zehaztea, abisua barne hartzen dutenak, itzulera-balioa aintzat hartzen ez bada, eta horrek funtzioak balioak aldatuko dituela suposatuz eragindako akatsak identifikatzen laguntzen du. balio berri bat itzuli beharrean. #[erabili behar da] async fn bar() -> u32 { 0 } async fn caller() { barra ().wait; } abisua: erabili behar den `bar`-ek itzulitako etorkizuneko irteera erabili gabe β€”> src/lib.rs:5:5 | 5 | barra().itxaron; | ^^^^^^^^^^^^ | = oharra: `#[abisatu (erabiltzea_ez_behar_beharrekoa)]` lehenespenez aktibatuta
  • FIFO ilarak std::sync::mpsc (multi-ekoizle bakarreko kontsumitzaile) inplementazioa eguneratu da, aurreko APIa mantenduz crossbeam-channel modulua erabiltzera aldatu da. Inplementazio berria hainbat arazo konpontzeagatik, errendimendu handiagoagatik eta kodeen mantentze sinplifikatzeagatik bereizten da.
  • APIaren zati berri bat egonkorren kategoriara eraman da, eta ezaugarrien metodoak eta inplementazioak egonkortu dira:
    • {integer}::checked_ilog
    • {integer}::checked_ilog2
    • {integer}::checked_ilog10
    • {osokoa}::ilog
    • {zenbaki osoa}::ilog2
    • {zenbaki osoa}::ilog10
    • NonZeroU*::ilog2
    • NonZeroU*::ilog10
    • NonZero*::BITS
  • "const" atributua, konstanteen ordez edozein testuingurutan erabiltzeko aukera zehazten duena, funtzioetan erabiltzen da:
    • char::from_u32
    • char::from_digit
    • char::to_digit
    • core::char::from_u32
    • core::char::from_digit
  • Hirugarren laguntza-maila bat ezarri da Rust Linux nukleoan (linuxkernel) erabiltzeko, baita Sony PlayStation 1 (mipsel-sony-psx), PowerPC AIX-ekin (powerpc64-ibm-aix), QNX Neutrino RTOS ( aarch64-unknown-nto-) plataformak qnx710, x86_64-pc-nto-qnx710). Hirugarren mailak oinarrizko euskarria dakar, baina proba automatikorik gabe, eraikuntza ofizialen argitalpenik eta kodearen eraikigarritasunaren egiaztapenik gabe.

Horrez gain, ARM-ek Rust lengoaia erabiltzea ahalbidetzen duten adabakien argitalpena dugu AArch64 arkitekturan oinarritutako sistemetarako muntatutako kontrolatzaileak eta Linux kernel moduluak garatzeko.

Iturria: opennet.ru

Gehitu iruzkin berria