Rust 1.62 Rhyddhau Iaith Rhaglennu

Mae rhyddhau iaith raglennu pwrpas cyffredinol Rust 1.62, 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:

  • Mae'r rheolwr pecyn β€œcargo” yn cynnig y gorchymyn β€œychwanegu”, sy'n eich galluogi i ychwanegu dibyniaethau newydd i'r maniffest Cargo.toml neu newid dibyniaethau presennol o'r llinell orchymyn. Mae'r gorchymyn hefyd yn caniatΓ‘u ichi nodi nodweddion a fersiynau unigol, er enghraifft: cargo ychwanegu serde - mae nodweddion yn deillio cargo ychwanegu nom@5
  • Ychwanegwyd y gallu i ddefnyddio β€œ#[derive(Default)]” gydag enums lle mae'r opsiwn rhagosodedig yn cael ei ddiffinio gan ddefnyddio'r priodoledd β€œ#[default]”. #[deillio(Diofyn)] enum Efallai { #[diofyn] Dim byd, Rhywbeth(T), }
  • Ar y platfform Linux, defnyddir mecanwaith cydamseru Mutex yn fwy cryno a chyflymach, yn seiliedig ar y defnydd o futexes a ddarperir gan y cnewyllyn Linux. Yn wahanol i'r gweithrediad a ddefnyddiwyd yn flaenorol yn seiliedig ar y llyfrgell pthreads, mae'r fersiwn newydd yn defnyddio dim ond 5 bytes yn lle 40 i storio'r cyflwr Mutex.Yn yr un modd, mae'r mecanweithiau cloi Condvar a RwLock wedi'u trosglwyddo i futex.
  • Mae ail lefel o gefnogaeth ar gyfer y platfform targed x86_64-unknown-none wedi'i rhoi ar waith, wedi'i chynllunio i gynhyrchu ffeiliau gweithredadwy a all weithio heb system weithredu. Er enghraifft, gellir defnyddio'r llwyfan targed penodedig wrth ysgrifennu cydrannau cnewyllyn. Mae'r ail lefel o gefnogaeth yn cynnwys gwarant cynulliad.
  • Mae'r drydedd lefel o gefnogaeth wedi'i rhoi ar waith ar gyfer y llwyfannau aarch64-pc-windows-gnullvm a x86_64-pc-windows-gnullvm. Mae'r drydedd lefel yn cynnwys cefnogaeth sylfaenol, ond heb brofi awtomataidd, cyhoeddi adeiladau swyddogol, na gwirio a ellir adeiladu'r cod.
  • Mae cyfran newydd o'r API wedi'i symud i'r categori stabl, gan gynnwys dulliau a gweithrediad nodweddion wedi'u sefydlogi:
    • bool::yna_rhai
    • f32::cyfanswm_cmp
    • f64::cyfanswm_cmp
    • Stdin::llinellau
    • ffenestri::CommandExt::raw_arg
    • imp gwerth rhagosodedig ar gyfer AssertUnwindSafe
    • Oddiwrth > ar gyfer Rc
    • Oddiwrth > ar gyfer Arc<[u8]>
    • FusedIterator ar gyfer EncodeWide

    Ffynhonnell: opennet.ru

Ychwanegu sylw