Rust 1.55 Rhyddhau Iaith Rhaglennu

Mae rhyddhau'r iaith raglennu system Rust 1.55, 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:

  • Mae gan y rheolwr pecyn Cargo y gallu i gyfuno gwallau a rhybuddion dyblyg sy'n digwydd yn ystod adeiladu. Wrth weithredu gorchmynion fel "prawf cargo" a "gwiriad cargo --all-targets" sy'n arwain at adeiladu lluosog o becyn gyda pharamedrau gwahanol, dangosir i'r defnyddiwr nawr grynodeb o ddigwyddiad problem ailadroddus, yn hytrach na chael ei ddangos rhybuddion unfath lluosog wrth adeiladu'r un peth dro ar Γ΄l tro. ffeil. $cargo +1.55.0 siec β€”all-targets Gwirio foo v0.1.0 warning: nid yw swyddogaeth byth yn cael ei ddefnyddio: 'foo' β€”> src/lib.rs:9:4 | 9 | fn foo() {} | ^^^ | = nodyn: '#[warn(dead_code)]' ymlaen trwy rybudd rhagosodedig: cynhyrchodd 'foo' (lib) 1 rhybudd rhybudd: cynhyrchodd 'foo' (prawf lib) 1 rhybudd (1 dyblyg) targed dev gorffenedig [heb ei optimeiddio + debuginfo] (s)mewn 0.84s
  • Mae'r cod dosrannu pwynt arnawf yn y llyfrgell safonol wedi'i symud i ddefnyddio'r algorithm Eisel-Lemire cyflymach a mwy cywir, sydd wedi datrys rhai problemau a welwyd yn flaenorol gyda thalgrynnu a dosrannu rhifau gyda niferoedd mawr iawn o ddigidau.
  • Mae'r gallu i nodi ystodau heb eu cau mewn templedi wedi'i sefydlogi (β€œX..” yn cael ei ddehongli fel ystod sy'n dechrau gyda'r gwerth X ac yn gorffen gyda gwerth mwyaf y math cyfanrif): cyfateb x fel u32 { 0 => println! (β€œsero!”), 1.. => println!("rhif positif!"), }
  • Amrywiadau gwallau estynedig a gwmpesir gan std :: io :: ErrorKind (yn dosbarthu gwallau i gategorΓ―au fel NotFound a WouldBlock). Yn flaenorol, roedd gwallau nad oeddent yn ffitio i gategorΓ―au presennol yn perthyn i'r categori ErrorKind::Arall, a ddefnyddiwyd hefyd ar gyfer gwallau yn y cod trydydd parti. Bellach mae categori mewnol ar wahΓ’n ErrorKind ::Heb gategoreiddio ar gyfer gwallau nad ydynt yn ffitio i gategorΓ―au presennol, ac mae'r ErrorKind ::Categori arall wedi'i gyfyngu i wallau nad ydynt yn digwydd yn y llyfrgell safonol (swyddogaethau llyfrgell safonol sy'n dychwelyd io::Error bellach yn defnyddio'r ErrorKind :: categori Arall).
  • Mae cyfran newydd o'r API wedi'i symud i'r categori stabl, gan gynnwys dulliau a gweithrediad nodweddion wedi'u sefydlogi:
    • Wedi'i rwymo::cloned
    • Draeniwch::as_str
    • IntoInnerError :: into_error
    • IntoInnerError::into_parts
    • EfallaiUninit::sume_init_mut
    • EfallaiUninit::assume_init_ref
    • EfallaiUninit::ysgrifennu
    • arae::map
    • ops::ControlFlow
    • x86:: _bittest
    • x86:: _bittestandcomplement
    • x86:: _bittestandreset
    • x86:: _bittestandset
    • x86_64 ::_bittest64
    • x86_64::_bittestandcompliment64
    • x86_64::_bittestandreset64
    • x86_64::_bittestandset64
  • Defnyddir y briodwedd β€œconst”, sy'n pennu'r posibilrwydd o'i ddefnyddio mewn unrhyw gyd-destun yn lle cysonion, yn y dull str::from_utf8_unchecked.
  • Mae'r drydedd lefel o gefnogaeth wedi'i rhoi ar waith ar gyfer y llwyfan powerpc64le-unknown-freebsd. Mae'r drydedd lefel yn cynnwys cefnogaeth sylfaenol, ond heb brofi awtomataidd, cyhoeddi adeiladau swyddogol, na gwirio a ellir adeiladu'r cod.

Ffynhonnell: opennet.ru

Ychwanegu sylw