Rust 1.65 Programazio Lengoaia kaleratzea

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

  • Generic Associated Types (GAT) euskarria gehitu da, eta horri esker, beste mota batekin lotutako mota-alisak sortzea posible da, eta mota-eraikitzaileak ezaugarriekin lotzea ahalbidetzen du. ezaugarri Foo { mota Bar<'x>; }
  • "Utzi... bestela" adierazpena inplementatzen da, eta horrek aukera ematen dizu eredu bat etortzeko baldintza zuzenean "utzi" adierazpenaren barruan egiaztatzeko eta kode arbitrarioa exekutatzeko eredua bat ez badator. let Ok (zenbaketa) = u64::from_str (count_str) else { izua!("Ezin da zenbaki osoa analizatu: '{count_str}'"); };
  • Break adierazpena erabiltzea onartzen da izendatutako blokeetatik goiz irteteko, blokearen izena (etiketa) erabiliz amaituko den blokea zehazteko. utzi emaitza = 'blokeatu: { egin_gauza(); baldin_ez_bete() { break 'blokea 1; } egin_hurrengo_gauza(); baldin_ez_bete() { break '2 blokea; } egin_azken_gauza(); 3};
  • Linux-erako, arazketa-informazioa bereizita gordetzeko gaitasuna gehitu da (split-debuginfo), aurretik macOS plataformarako bakarrik eskuragarri. "-Csplit-debuginfo=unpacked" aukera zehaztuz gero, DWARF formatuan arazte-informazioa datuak gordeko dira ".dwo" luzapeneko hainbat objektu-fitxategitan. "-Csplit-debuginfo=packed" zehaztean ".dwp" formatuan pakete bakarra sortuko da, proiektuaren arazte-informazio guztiak biltzen dituena. Debuginfo ELF objektuen .debug_* atalean zuzenean integratzeko, "-Csplit-debuginfo=off" aukera erabil dezakezu.
  • APIaren zati berri bat egonkorren kategoriara eraman da, eta ezaugarrien metodoak eta inplementazioak egonkortu dira:
    • std::backtrace::backtrace
    • Lotua::as_ref
    • std::io::read_to_string
    • <*const T>::cast_mut
    • <*mut T>::cast_const
  • "const" atributua, konstanteen ordez edozein testuingurutan erabiltzeko aukera zehazten duena, <*const T&>::offset_from eta <*mut T>::offset_from funtzioetan erabiltzen da.
  • LSP (Language Server Protocol) protokoloaren inplementazioa rust-analyzerra transferitzeko azken fasearen barruan, Rust Language Server (RLS) inplementazio zaharkitua herdoila erabiltzera aldatzea iradokitzen duen stub zerbitzari batekin ordezkatu da. - analizatzailea.
  • Konpilatzean, MIR bitarteko kodearen barneko hedapenerako euskarria gaituta dago, eta horrek % 3-10ean bizkortzen du ohiko kaxa paketeen konpilazioa.
  • Programatutako eraikuntzak bizkortzeko, Cargo paketeen kudeatzaileak ilaran zain dauden lanak ordenatzen ditu.

Gainera, Volvo-n Rust hizkuntzaren erabilerari buruzko elkarrizketa bat nabarmendu daiteke automoziorako informazio sistemen osagaiak garatzeko. Ez dago Rust-en lehendik dagoen eta probatutako kodea berridazteko asmorik, baina kode berrirako, Rust da kalitatea kostu txikiagoan hobetzeko aukera hobetetako bat. Herdoilarekin lotutako lantaldeak ere sortu dira AUTOSAR (AUTomotive Open System ARchitecture) eta SAE (Automobilgintzako Ingeniarien Elkartea) elkarteetan.

Horrez gain, David Kleidermacherrek, Google-ko Ingeniaritzako VP-ak, Android plataforman enkriptatze-gakoak kudeatzeko erabiltzen den kodearen Rust-en itzulpenaz hitz egin zuen, baita Rust-en erabileraz ere HTTPS protokoloaren DNSaren ezarpenean, pila batean. UWB- txipak (Ultra-Wideband) eta Tensor G2 txiparekin lotutako birtualizazio esparruan (Android Virtualization Framework). Androiderako, Bluetooth eta Wi-Firako pila berriak ere garatzen ari dira, Rust-en berridatziak. Estrategia orokorra segurtasuna pixkanaka areagotzea da, lehenik eta behin software osagairik seguruenak eta ezinbestekoenak Rust-era eramanez, eta gero haiekin lotutako beste azpisistema batzuetara hedatuz. Iaz, Rust Android plataforma garatzeko baimendutako hizkuntzen zerrendan sartu zen.

Iturria: opennet.ru

Gehitu iruzkin berria