Rust 1.65 Rhyddhau Iaith Rhaglennu

Mae rhyddhau iaith raglennu pwrpas cyffredinol Rust 1.65, a sefydlwyd gan brosiect Mozilla, ond sydd bellach wedi'i datblygu dan nawdd y sefydliad dielw annibynnol Rust Foundation, wedi'i gyhoeddi. Mae'r iaith yn canolbwyntio ar ddiogelwch cof ac yn darparu'r modd i gyflawni gwaith tebyg iawn tra'n osgoi defnyddio casglwr sbwriel ac amser rhedeg (mae amser rhedeg yn cael ei leihau i gychwyn a chynnal a chadw sylfaenol y llyfrgell safonol).

Mae dulliau trin cof Rust yn arbed y datblygwr rhag gwallau wrth drin awgrymiadau ac yn amddiffyn rhag problemau sy'n codi oherwydd trin cof lefel isel, megis cyrchu man cof ar Γ΄l iddo gael ei ryddhau, dadgyfeirio awgrymiadau nwl, gor-redeg byffer, ac ati. Er mwyn dosbarthu llyfrgelloedd, darparu adeiladu a rheoli dibyniaethau, mae'r prosiect yn datblygu rheolwr pecyn Cargo. Cefnogir ystorfa crates.io ar gyfer cynnal llyfrgelloedd.

Darperir diogelwch cof yn Rust ar amser casglu trwy wirio cyfeiriadau, cadw golwg ar berchnogaeth gwrthrychau, cadw golwg ar oes gwrthrychau (scopes), ac asesu cywirdeb mynediad cof wrth weithredu cod. Mae Rust hefyd yn darparu amddiffyniad rhag gorlifiadau cyfanrif, yn gofyn am ymgychwyn gorfodol o werthoedd amrywiol cyn ei ddefnyddio, yn trin gwallau yn well yn y llyfrgell safonol, yn cymhwyso'r cysyniad o gyfeiriadau a newidynnau digyfnewid yn ddiofyn, yn cynnig teipio statig cryf i leihau gwallau rhesymegol.

Prif arloesiadau:

  • Cefnogaeth ychwanegol ar gyfer mathau cysylltiedig generig (GAT, Generic Associated Types), sy'n ei gwneud hi'n bosibl creu aliasau math sy'n gysylltiedig Γ’ math arall a'ch galluogi i gysylltu adeiladwyr math Γ’ nodweddion. nodwedd Foo { teipiwch Bar<'x>; }
  • Mae'r ymadrodd "let ... else" wedi'i weithredu, sy'n eich galluogi i wirio'r cyflwr paru patrwm yn union y tu mewn i'r ymadrodd β€œlet” a gweithredu cod mympwyol os nad yw'r patrwm yn cyfateb. let Ok(count) = u64::from_str(count_str) arall { panic!("Methu dosrannu cyfanrif: '{count_str}'"); };
  • CaniatΓ‘u defnyddio datganiad torri i adael blociau a enwir yn gynamserol, gan ddefnyddio enw'r bloc (label) i adnabod y bloc sydd i'w derfynu. let result = 'bloc: { do_thing(); os condition_not_met() { torri 'bloc 1; } do_next_thing(); os condition_not_met() { torri 'bloc 2; } do_last_thing(); 3};
  • Ar gyfer Linux, mae'r gallu i arbed gwybodaeth dadfygio ar wahΓ’n (split-debuginfo), a oedd ar gael yn flaenorol ar gyfer y platfform macOS yn unig, wedi'i ychwanegu. Wrth nodi'r opsiwn "-Csplit-debuginfo=dadbacio", bydd data debuginfo mewn fformat DWARF yn cael eu cadw mewn sawl ffeil gwrthrych ar wahΓ’n gydag estyniad ".dwo". Bydd pennu "-Csplit-debuginfo=packed" yn creu un pecyn mewn fformat ".dwp" sy'n cynnwys yr holl ddata debuginfo ar gyfer y prosiect. I integreiddio debuginfo yn uniongyrchol i adran .debug_* gwrthrychau ELF, gallwch ddefnyddio'r opsiwn "-Csplit-debuginfo=off".
  • Mae cyfran newydd o'r API wedi'i symud i'r categori stabl, gan gynnwys dulliau a gweithrediad nodweddion wedi'u sefydlogi:
    • std::olrhain :: Olrhain yn Γ΄l
    • Wedi'i rwymo:: as_ref
    • std::io::read_to_string
    • <*const T>::cast_mut
    • <*mut T> ::cast_const
  • Defnyddir y briodwedd β€œconst”, sy'n pennu'r posibilrwydd o'i ddefnyddio mewn unrhyw gyd-destun yn lle cysonion, yn y swyddogaethau <*const T&>:: offset_from a <*mut T>:: offset_from
  • Fel rhan o'r cam olaf o drosglwyddo gweithrediad y protocol LSP (Protocol Gweinydd Iaith) i rwd-dadansoddwr, disodlwyd gweithrediad hen ffasiwn Rust Language Server (RLS) gyda gweinydd stub sy'n rhoi rhybudd gydag awgrym i newid i defnyddio rhwd-dadansoddwr.
  • Yn ystod y cyfnod llunio, mae cefnogaeth ar gyfer defnyddio cod canolradd MIR yn fewnol yn cael ei alluogi, sy'n cyflymu'r broses o lunio pecynnau crΓ’t nodweddiadol 3-10%.
  • Er mwyn cyflymu'r gwaith adeiladu sydd wedi'i amserlennu, mae'r rheolwr pecyn Cargo yn darparu didoli o swyddi sy'n aros i gael eu gweithredu yn y ciw.

Yn ogystal, gallwch nodi'r cyfweliad am y defnydd o'r iaith Rust yn Volvo i ddatblygu cydrannau systemau gwybodaeth modurol. Nid oes unrhyw gynlluniau i ailysgrifennu cod presennol a phrofedig yn Rust, ond ar gyfer cod newydd, Rust yw un o'r opsiynau a ffefrir ar gyfer gwella ansawdd am gostau is. Mae gweithgorau sy'n ymwneud Γ’ defnyddio'r iaith Rust hefyd wedi'u creu yn y cymdeithasau modurol AUTOSAR (AUTomotive Open System Architecture) a SAE (Cymdeithas y Peirianwyr Modurol).

Yn ogystal, siaradodd David Kleidermacher, is-lywydd peirianneg Google, am y cyfieithiad o'r cod a ddefnyddir yn y platfform Android i reoli allweddi amgryptio i Rust, yn ogystal Γ’'r defnydd o Rust wrth weithredu'r protocol DNS dros HTTPS yn y pentwr ar gyfer sglodion PCB (Ultra-Wideband) ac yn y fframwaith rhithwiroli (Fframwaith Rhithwiroli Android) sy'n gysylltiedig Γ’ sglodyn Tensor G2. Mae staciau newydd ar gyfer Bluetooth a Wi-Fi, wedi'u hailysgrifennu yn Rust, hefyd yn cael eu datblygu ar gyfer Android. Y strategaeth gyffredinol yw cryfhau diogelwch yn raddol, yn gyntaf trwy drosi'r cydrannau meddalwedd mwyaf agored i niwed a hanfodol i Rust, ac yna ehangu i is-systemau cysylltiedig eraill. Y llynedd, cafodd yr iaith Rust ei chynnwys yn y rhestr o ieithoedd a ganiateir ar gyfer datblygu platfform Android.

Ffynhonnell: opennet.ru

Ychwanegu sylw