Rust 1.65 Rilaxx tal-Lingwa ta' Programmazzjoni

Ġiet rilaxxata l-lingwa ta 'programmar għal skopijiet ġenerali Rust 1.65, imwaqqfa mill-proġett Mozilla iżda issa żviluppat taħt l-awspiċi tal-organizzazzjoni indipendenti mingħajr skop ta' qligħ Rust Foundation. Il-lingwa tiffoka fuq is-sikurezza tal-memorja u tipprovdi l-mezzi biex tikseb paralleliżmu għoli tax-xogħol filwaqt li tevita l-użu ta 'ġbir ta' żibel u runtime (runtime huwa mnaqqas għal inizjalizzazzjoni bażika u manutenzjoni tal-librerija standard).

Il-metodi tal-immaniġġjar tal-memorja ta 'Rut isalvaw lill-iżviluppatur minn żbalji meta jimmanipula l-indikazzjonijiet u jipproteġu kontra problemi li jinqalgħu minħabba t-tqandil tal-memorja ta' livell baxx, bħall-aċċess għal żona tal-memorja wara li tkun ġiet meħlusa, dereferencing null pointers, buffer overruns, eċċ. Biex iqassam il-libreriji, jipprovdi bini u jimmaniġġja d-dipendenzi, il-proġett jiżviluppa l-maniġer tal-pakkett tat-Tagħbija. Ir-repożitorju crates.io huwa appoġġjat għall-hosting tal-libreriji.

Is-sikurezza tal-memorja hija pprovduta f'Rut fil-ħin tal-kompilazzjoni permezz ta 'verifika ta' referenza, iżżomm kont tal-pussess tal-oġġett, iżżomm kont tal-ħajja tal-oġġetti (ambiti), u tivvaluta l-korrettezza tal-aċċess għall-memorja waqt l-eżekuzzjoni tal-kodiċi. Rust jipprovdi wkoll protezzjoni kontra overflows integer, jeħtieġ inizjalizzazzjoni obbligatorja ta 'valuri varjabbli qabel l-użu, jimmaniġġja l-iżbalji aħjar fil-librerija standard, japplika l-kunċett ta' referenzi immutabbli u varjabbli b'mod awtomatiku, joffri tajpjar statiku qawwi biex jimminimizza l-iżbalji loġiċi.

Innovazzjonijiet ewlenin:

  • Ġie miżjud appoġġ għal Tipi Assoċjati Ġeneriċi (GAT), li jagħmilha possibbli li jinħolqu psewdonimi tat-tip assoċjati ma 'tip ieħor, u jippermetti li l-kostrutturi tat-tip jiġu assoċjati ma' karatteristiċi. karatteristika Foo { tip Bar<'x>; }
  • L-espressjoni "let ... inkella" hija implimentata, li tippermettilek tiċċekkja l-kundizzjoni tat-tqabbil tal-mudell direttament ġewwa l-espressjoni "let" u tesegwixxi kodiċi arbitrarju jekk il-mudell ma jaqbilx. let Ok (count) = u64::from_str (count_str) inkella { paniku! ("Ma nistax parse integer: '{count_str}'"); };
  • Huwa permess li tuża l-istqarrija tal-waqfien biex toħroġ minn blokki msemmija qabel iż-żmien, billi tuża l-isem tal-blokk (tikketta) biex tiddetermina l-blokk li jrid jintemm. let result = 'blokk: { do_thing (); if condition_not_met () { break 'blokk 1; } do_next_thing (); if condition_not_met () { break 'blokk 2; } do_last_thing (); 3};
  • Għal Linux, żiedet il-kapaċità li tissejvja l-informazzjoni tad-debugging separatament (split-debuginfo), li qabel kienet disponibbli biss għall-pjattaforma macOS. L-ispeċifikazzjoni tal-għażla "-Csplit-debuginfo=unpacked" se tiffranka d-dejta tad-debuginfo f'format DWARF f'diversi fajls ta 'oġġetti separati b'estensjoni ".dwo". L-ispeċifikazzjoni "-Csplit-debuginfo=ippakkjat" toħloq pakkett wieħed f'format ".dwp" li jinkludi d-dejta kollha tad-debuginfo għall-proġett. Biex tintegra d-debuginfo direttament fis-sezzjoni .debug_* ta 'oġġetti ELF, tista' tuża l-għażla "-Csplit-debuginfo=off".
  • Porzjon ġdid tal-API ġie mċaqlaq għall-kategorija ta 'stabbli, inklużi l-metodi u l-implimentazzjonijiet tal-karatteristiċi ġew stabbilizzati:
    • std::backtrace::backtrace
    • Marbut::as_ref
    • std::io::read_to_string
    • <*const T>::cast_mut
    • </*mut T>::cast_const
  • L-attribut "const", li jiddetermina l-possibbiltà li jintuża fi kwalunkwe kuntest minflok kostanti, jintuża fil-funzjonijiet <*const T&>::offset_from u <*mut T>::offset_from
  • Bħala parti mill-istadju finali tat-trasferiment tal-implimentazzjoni tal-protokoll LSP (Language Server Protocol) għal rust-analyzer, l-implimentazzjoni antikwata ta' Rust Language Server (RLS) ġiet sostitwita b'server stub li joħroġ twissija li tissuġġerixxi li taqleb għall-użu tas-sadid. -analizzatur.
  • Waqt il-kompilazzjoni, l-appoġġ għall-iskjerament inline tal-kodiċi intermedju MIR huwa attivat, li tħaffef il-kumpilazzjoni ta 'pakketti ta' ċestuni tipiċi bi 3-10%.
  • Biex tħaffef il-bini skedat, il-maniġer tal-pakkett tat-Tagħbija jipprovdi għażla ta 'impjiegi li jkunu qed jistennew fil-kju.

Barra minn hekk, tista 'tiġi nnotata intervista dwar l-użu tal-lingwa Rust f'Volvo għall-iżvilupp ta' komponenti għal sistemi ta 'informazzjoni tal-karozzi. M'hemm l-ebda pjanijiet biex tikteb mill-ġdid il-kodiċi eżistenti u ttestjat f'Rut, iżda għal kodiċi ġdid, Rust hija waħda mill-għażliet preferuti għat-titjib tal-kwalità bi prezz aktar baxx. Inħolqu wkoll gruppi ta' ħidma relatati mas-sadid fl-assoċjazzjonijiet tal-karozzi AUTOSAR (AUTomotive Open System ARchitecture) u SAE (Society of Automotive Engineers).

Barra minn hekk, David Kleidermacher, VP ta 'l-Inġinerija ta' Google, tkellem dwar it-traduzzjoni Rust tal-kodiċi użat fil-pjattaforma Android biex timmaniġġja ċwievet ta 'encryption, kif ukoll l-użu ta' Rust fl-implimentazzjoni tal-protokoll DNS fuq HTTPS, fil-munzell għal UWB- chips (Ultra-Wideband) u fil-qafas tal-virtwalizzazzjoni (Android Virtualization Framework) assoċjati maċ-ċippa Tensor G2. Għal Android, stacks ġodda għal Bluetooth u Wi-Fi qed jiġu żviluppati wkoll, miktuba mill-ġdid f'Rut. L-istrateġija ġenerali hija li tiżdied b'mod progressiv is-sigurtà, l-ewwel billi tmexxi l-komponenti tas-softwer l-aktar insiguri u vitali għal Rust, u mbagħad testendi għal sottosistemi oħra assoċjati magħhom. Is-sena li għaddiet, Rust ġiet inkluża fil-lista tal-lingwi permessi għall-iżvilupp tal-pjattaforma Android.

Sors: opennet.ru

Żid kumment