Rust 1.61 Programazio Lengoaia kaleratzea

Rust 1.61 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:

  • Funtzio nagusitik zure itzulera-kodeak defini ditzakezu. Jatorriz, Rust-en funtzio nagusiak "()" (unitatea) mota soilik itzul zezakeen, eta horrek beti adierazten zuen irteera-egoera arrakastatsua izan zen, garatzaileak "process::exit(code)" funtzioari esplizituki deitu ezean. Rust 1.26-n, funtzio nagusian Amaierako ezaugarri ezegonkorra erabiliz, C programetako EXIT_SUCCESS eta EXIT_FAILURE kodeei dagozkien "Ok" eta "Err" balioak itzultzea posible zen. Rust 1.61-en, Termination ezaugarria egonkortu egin da, eta ExitCode mota bereizi bat proposatu da itzulera-kode espezifiko bat irudikatzeko, plataformako itzulera mota espezifikoak abstraitzen dituena, aurrez zehaztutako ARRAKASTA eta HUTS konstanteak eta From metodoa emanez. itzulera-kode arbitrarioa itzultzeko. erabili std::process::ExitCode; fn main() -> ExitCode { if !check_foo () { return ExitCode::from (8); } ExitCode::SUCCESS }
  • "const fn" esamoldea erabiliz definitutako funtzioen gaitasun gehigarriak egonkortu dira, funtzio arrunt gisa ez ezik, konstanteen ordez edozein testuingurutan ere dei daitezkeenak. Funtzio hauek konpilazio garaian kalkulatzen dira, ez exekuzioan, beraz, zenbait murrizketa dituzte, hala nola konstanteetatik soilik irakurtzeko gaitasuna. Bertsio berrian, funtzio erakusleekin oinarrizko eragiketak onartzen dira const funtzioen barruan (erakusleak sortu, pasa eta igortzea onartzen da, baina ez funtzio bat erakuslez deitzea); T bezalako funtzioen parametro generikoen ezaugarrien mugak: Kopiatu; dinamikoki bidal daitezkeen ezaugarriak (dyn Trait); impl Funtzio argumentuetarako eta itzultzeko balioetarako ezaugarri motak.
  • Korronteak Stdin, Stdout eta Stderr kudeatzen ditu std::io-n orain bizitza estatikoa ("estatikoa") blokeatuta dagoenean, "let out = std::io::stdout().lock();" bezalako eraikuntzak ahalbidetuz. helduleku bat lortu eta espresio batean blokeoa ezarriz.
  • APIaren zati berri bat egonkorren kategoriara eraman da, eta ezaugarrien metodoak eta inplementazioak egonkortu dira:
    • Pin::static_mut
    • Pin::static_ref
    • Vec::retain_mut
    • VecDeque::retain_mut
    • Kurtsorerako idatzi
    • std::os::unix::net::SocketAddr::from_pathname
    • std::process::ExitCode
    • std::process::Amaiera
    • std::thread::JoinHandle::amaitu da
  • "const" atributua, konstanteen ordez edozein testuingurutan erabiltzeko aukera zehazten duena, funtzioetan erabiltzen da:
    • ::offset eta ::offset
    • ::wrapping_offset eta ::wrapping_offset
    • ::add eta ::add
    • ::sub eta ::sub
    • ::wrapping_add eta ::wrapping_add
    • ::wrapping_sub eta ::wrapping_sub
    • ::as_mut_ptr
    • ::as_ptr_range
    • ::as_mut_ptr_range

Gainera, "Rust: A Critical Retrospective" artikuluan, Rust lengoaiaren inpresioen laburpena egin dezakezu bertan 100 mila kode lerro idatzi ondoren firmwarean erabilitako Xous mikrokernel sistema eragilearen garapenean. Desabantailen artean daude sintaxi ulerterraza, hizkuntzaren osotasunik eza eta etengabeko garapena, eraikuntza errepikagarririk eza, Crates.io-n mendekotasun-konfiantza-arazo tipikoak eta kode segurua idazteko diziplina jakin bat mantendu beharra. Aurreikuspenak gainditzen dituzten eginbideen artean, kodea birfactorizatzeko eta prototipo azkarrean gehitutako "hack"-ak birlantzeko tresnak daude.

Iturria: opennet.ru

Gehitu iruzkin berria