Rhyddhawyd Rust 1.53. Bydd Google yn ariannu ychwanegu cefnogaeth Rust i'r cnewyllyn Linux

Mae rhyddhau'r iaith raglennu system Rust 1.53, a sefydlwyd gan brosiect Mozilla, ond sydd bellach wedi'i ddatblygu dan nawdd y sefydliad dielw annibynnol Rust Foundation, wedi'i gyhoeddi. Mae'r iaith yn canolbwyntio ar ddiogelwch cof, yn darparu rheolaeth cof awtomatig, ac yn darparu'r modd i gyflawni tasgau cyfochrog uchel heb ddefnyddio casglwr sbwriel neu amser rhedeg (mae amser rhedeg yn cael ei leihau i gychwyn a chynnal a chadw sylfaenol y llyfrgell safonol).

Mae rheolaeth cof awtomatig Rust yn dileu gwallau wrth drin awgrymiadau ac yn amddiffyn rhag problemau sy'n deillio o drin cof lefel isel, megis cyrchu rhanbarth cof ar ôl iddo gael ei ryddhau, dadgyfeiriadau pwyntydd nwl, gor-redeg byffer, ac ati. Er mwyn dosbarthu llyfrgelloedd, sicrhau cydosod a rheoli dibyniaethau, mae'r prosiect yn datblygu rheolwr pecyn Cargo. Cefnogir ystorfa crates.io ar gyfer cynnal llyfrgelloedd.

Prif arloesiadau:

  • Ar gyfer araeau, mae'r nodwedd IntoIterator wedi'i gweithredu, sy'n eich galluogi i drefnu iteriad elfennau arae yn ôl gwerthoedd: ar gyfer i yn [1, 2, 3] { .. }

    Mae hefyd yn bosibl trosglwyddo araeau i ddulliau sy'n derbyn iterwyr, er enghraifft: let set = BTreeSet::from_iter([1, 2, 3]); ar gyfer (a, b) yn some_iterator.chain([1]).zip([1, 2, 3]) { .. }

    Yn flaenorol, dim ond ar gyfer cyfeiriadau arae y gweithredwyd IntoIterator, h.y. i ailadrodd dros werthoedd sy'n ofynnol defnyddio cyfeiriadau (“&[1, 2, 3]”) neu “[1, 2, 3].iter()”. Cafodd gweithrediad IntoIterator ar gyfer araeau ei rwystro gan faterion cydnawsedd a achoswyd gan drosi casglwr cynharach o array.into_iter() i (&array).into_iter(). Datryswyd y problemau hyn gyda datrysiad - bydd y casglwr yn parhau i drosi array.into_iter() i (&array).into_iter() fel pe na bai nodwedd IntoIterator yn cael ei gweithredu, ond dim ond wrth alw'r dull gan ddefnyddio'r ".into_iter( )" cystrawen a heb gyffwrdd â'r galwadau yn y ffurf "yn [1, 2, 3]", "iter.zip([1, 2, 3])", "IntoIterator::into_iter([1, 2, 3] )".

  • Mae modd nodi ymadroddion “|” (gweithrediad NEU rhesymegol) mewn unrhyw ran o'r templed, er enghraifft, yn lle “Some(1) | Some(2)" gallwch nawr ysgrifennu "Rhai(1 | 2)": cyfateb canlyniad { Ok(Some(1 | 2)) => { .. } Error(MyError { kind: FileNotFound | Caniatâd Wedi'i Ddileu, .. }) => { .. } _ => { .. } }
  • Caniateir defnyddio nodau nad ydynt yn ASCII mewn dynodwyr, gan gynnwys unrhyw nodau cenedlaethol a ddiffinnir ym manyleb Unicode UAX 31, ond heb gynnwys nodau emoji. Os ydych chi'n defnyddio nodau gwahanol ond tebyg, bydd y casglwr yn rhoi rhybudd. const BLÅHAJ: &str="🦈"; strwythur 人 { 名字: Llinynnol, } gadael α = 1; letsos = 2; rhybudd: ystyrir bod y pâr adnabod yn ddryslyd rhwng 's' ac 's'
  • Mae cyfran newydd o APIs wedi'i drosglwyddo i'r categori sefydlog, gan gynnwys y sefydlogi canlynol:
    • arae::from_ref
    • arae::from_mut
    • AtomicBool::fetch_update
    • AtomicPtr::fetch_update
    • BTreeSet::cadw
    • BTreeMap::cadw
    • BufReader::ceisio_perthynas
    • cmp::mun_by
    • cmp:: munud_wrth_allwedd
    • cmp:: max_by
    • cmp:: max_by_key
    • DebugStruct::finish_non_exhaustive
    • Hyd::ZERO
    • Hyd::MAX
    • Hyd:: yw_sero
    • Hyd::saturating_add
    • Hyd::saturating_sub
    • Hyd::saturating_mul
    • f32:: yn_is-normal
    • f64:: yn_is-normal
    • IntoIterator ar gyfer araeau
    • {cyfanrif}::BITS
    • io::Gwall::Heb ei gefnogi
    • NonZero* :: lead_zeros
    • NonZero*::trailing_zeros
    • Opsiwn:: mewnosod
    • Archebu::is_eq
    • Archebu::is_ne
    • Archebu::is_lt
    • Archebu::is_gt
    • Archebu::is_le
    • Archebu::is_ge
    • OsStr:: make_ascii_caseg is
    • OsStr::gwneud_ascii_uppercase
    • OsStr::to_ascii_caseg is
    • OsStr::to_ascii_uppercase
    • OsStr::is_ascii
    • OsStr::eq_ignore_ascii_case
    • Syllu:: peek_mut
    • Rc::cynnydd_cyfrif_cryf
    • Rc::lleihad_cyfrif_cryf
    • sleisen::IterMut::as_slice
    • AsRef<[T]> ar gyfer sleisen::IterMut
    • impl SliceIndex ar gyfer (Bound , Yn rhwym )
    • Vec::extend_from_o fewn
  • Mae'r drydedd lefel o gefnogaeth ar gyfer y platfform wasm64-anhysbys-anhysbys wedi'i weithredu. Mae'r drydedd lefel yn cynnwys cefnogaeth sylfaenol, ond heb brofi awtomataidd, cyhoeddi adeiladau swyddogol, na gwirio a ellir adeiladu'r cod.
  • Mae'r rheolwr pecyn Cargo wedi'i symud i ddefnyddio'r enw "prif" ar gyfer prif gangen y storfa Git (HEAD) yn ddiofyn. Nid yw dibyniaethau sy'n cael eu lletya mewn cadwrfeydd sy'n defnyddio'r enw prif enw yn lle meistr bellach angen cangen = "prif" i gael eu ffurfweddu.
  • Yn y casglwr, codir y gofynion ar gyfer y fersiwn lleiaf o LLVM i LLVM 10.

Yn ogystal, gallwn nodi'r cyllid a ddarperir ar gyfer datblygu integreiddio i'r cnewyllyn Linux o offer ar gyfer datblygu cydrannau yn yr iaith Rust. Bydd y gwaith yn cael ei wneud o fewn fframwaith y prosiect Prossimo dan nawdd y sefydliad ISRG (Internet Security Research Group), sef sylfaenydd y prosiect Let's Encrypt ac sy'n hyrwyddo HTTPS a datblygiad technolegau i gynyddu diogelwch y Rhyngrwyd. Bydd yr arian yn cael ei ddarparu gan Google, a fydd yn talu am waith Miguel Ojeda, awdur y prosiect Rust-for-Linux. Yn flaenorol, mae ISRG a Google eisoes wedi ariannu creu backend HTTP amgen ar gyfer y cyfleustodau curl a datblygu modiwl TLS newydd ar gyfer gweinydd http Apache.

Yn ôl Microsoft a Google, mae tua 70% o wendidau yn cael eu hachosi gan drin cof anniogel. Disgwylir y bydd defnyddio'r iaith Rust i ddatblygu cydrannau cnewyllyn fel gyrwyr dyfeisiau yn lleihau'r risg o wendidau a achosir gan drin cof anniogel ac yn dileu gwallau megis cyrchu rhanbarth cof ar ôl iddo gael ei ryddhau a gor-redeg ffiniau clustogi.

Darperir diogelwch cof yn Rust ar amser llunio trwy wirio cyfeiriadau, cadw golwg ar berchnogaeth gwrthrych ac oes gwrthrych (cwmpas), yn ogystal â thrwy werthuso 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.

Ffynhonnell: opennet.ru

Ychwanegu sylw