Rust 1.65 programmeerimiskeele väljalase

Avaldatud on Mozilla projektiga rajatud, kuid nüüdseks sõltumatu mittetulundusühingu Rust Foundation egiidi all välja töötatud üldotstarbelise programmeerimiskeele Rust 1.65 väljalase. Keel keskendub mälu ohutusele ja pakub vahendeid töö kõrge paralleelsuse saavutamiseks, vältides samal ajal prügikoguja ja käitusaja kasutamist (käitusaeg lüheneb standardse teegi põhikäivitamise ja hoolduseni).

Rusti mälukäsitlusmeetodid säästavad arendajat osutitega manipuleerimisel esinevate vigade eest ja kaitsevad madala tasemega mälukäsitluse tõttu tekkivate probleemide eest, nagu mälualale juurdepääs pärast selle vabastamist, nullviidate viitamise tühistamine, puhvri ülekoormus jne. Teekide levitamiseks, järkude pakkumiseks ja sõltuvuste haldamiseks arendab projekt Cargo paketihaldurit. Hoidlat crates.io toetatakse teekide majutamiseks.

Mälu turvalisus on Rustis kompileerimise ajal tagatud viidete kontrollimise, objekti omandiõiguse jälgimise, objektide eluea (ulatuse) jälgimise ja mälule juurdepääsu õigsuse hindamise kaudu koodi täitmise ajal. Rooste pakub ka kaitset täisarvude ületäitumise eest, nõuab muutujate väärtuste kohustuslikku lähtestamist enne kasutamist, käsitleb standardteegi vigu paremini, rakendab vaikimisi muutumatute viidete ja muutujate kontseptsiooni, pakub tugevat staatilist tippimist loogiliste vigade minimeerimiseks.

Peamised uuendused:

  • Lisatud on üldiste seotud tüüpide (GAT, Generic Associated Types) tugi, mis võimaldab luua mõne teise tüübiga seotud tüübialiaseid ja seostada tüübikonstruktoreid tunnustega. tunnus Foo { tüüp Bar<'x>; }
  • Rakendatud on avaldis "let ... else", mis võimaldab teil kontrollida mustri sobitamise tingimust otse avaldises "let" ja käivitada suvalise koodi, kui muster ei ühti. olgu Ok(count) = u64::from_str(count_str) else { panic!("Täisarvu ei saa sõeluda: '{count_str}'"); };
  • Lubage kasutada katkestuslauset nimega plokkidest enneaegseks väljumiseks, kasutades lõpetatava ploki tuvastamiseks ploki nime (silti). let result = 'block: { do_thing(); if condition_not_met() { break 'plokk 1; } tee_järgmine_asi(); if tingimus_not_met() { break 'plokk 2; } tee_viimast_asja(); 3};
  • Linuxi jaoks on lisatud võimalus eraldi salvestada silumisinfot (split-debuginfo), mis oli varem saadaval ainult macOS-i platvormi jaoks. Valiku "-Csplit-debuginfo=unpacked" määramisel salvestatakse DWARF-vormingus silumisinfo andmed mitmesse eraldi objektifaili laiendiga ".dwo". Kui määrate "-Csplit-debuginfo=packed", luuakse üks pakett ".dwp"-vormingus, mis sisaldab kõiki projekti silumisinfo andmeid. Silumisinfo integreerimiseks otse ELF-objektide jaotisesse .debug_* võite kasutada suvandit "-Csplit-debuginfo=off".
  • API uus osa on viidud stabiilsete kategooriasse, sealhulgas on stabiliseeritud meetodid ja tunnuste rakendused:
    • std::backtrace::Backtrace
    • Köidetud::as_ref
    • std::io::read_to_string
    • <*const T>::cast_mut
    • <*mut T>::cast_const
  • Atribuuti “const”, mis määrab võimaluse kasutada seda konstantide asemel mis tahes kontekstis, kasutatakse funktsioonides <*const T&>::offset_from ja <*mut T>::offset_from.
  • Protokolli LSP (Language Server Protocol) juurutamise roosteanalüsaatorisse üleviimise viimase etapi osana asendati Rust Language Server (RLS) vananenud juurutamine tühjendusserveriga, mis annab hoiatuse koos soovitusega lülituda roosteanalüsaatori kasutamine.
  • Kompileerimise ajal on lubatud MIR-i vahekoodi inline juurutamise tugi, mis kiirendab tüüpiliste kastipakettide koostamist 3-10%.
  • Ajastatud ehituste kiirendamiseks pakub Cargo paketihaldur järjekorras täitmist ootavate tööde sorteerimist.

Lisaks võite märkida intervjuud rooste keele kasutamisest Volvos autode infosüsteemide komponentide arendamiseks. Olemasolevat ja testitud koodi ei ole plaanis Rustis ümber kirjutada, kuid uue koodi puhul on Rust üks eelistatud variante kvaliteedi parandamiseks madalamate kuludega. Rooste keele kasutamisega seotud töörühmad on loodud ka autoliitudes AUTOSAR (AUTomotive Open System ARchitecture) ja SAE (Society of Automotive Engineers).

Lisaks rääkis Google'i inseneriosakonna asepresident David Kleidermacher Androidi platvormil krüpteerimisvõtmete haldamiseks kasutatava koodi Rusti tõlkimisest, samuti Rusti kasutamisest DNS-i üle HTTPS-i protokolli juurutamisel virnas. UWB-kiipide jaoks (Ultra-Wideband) ja Tensor G2 kiibiga seotud virtualiseerimisraamistikus (Android Virtualization Framework). Androidi jaoks töötatakse välja ka uued Bluetoothi ​​ja Wi-Fi virnad, mis on Rustis ümber kirjutatud. Üldine strateegia on turvalisuse järkjärguline tugevdamine, esmalt muutes kõige haavatavamad ja elutähtsamad tarkvarakomponendid Rustiks ja seejärel laiendades seda muudele seotud alamsüsteemidele. Eelmisel aastal lisati Rust keel Androidi platvormi arendamiseks lubatud keelte loendisse.

Allikas: opennet.ru

Lisa kommentaar