Rust 1.68 Rhyddhau Iaith Rhaglennu

Mae rhyddhau iaith raglennu pwrpas cyffredinol Rust 1.68, 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 a'r ystorfa crates.io wedi sefydlogi cefnogaeth i'r protocol Sparse, sy'n diffinio ffordd newydd o weithio gyda mynegai sy'n adlewyrchu'r fersiynau sydd ar gael o'r holl becynnau sy'n bodoli yn yr ystorfa. Mae'r protocol newydd yn caniatΓ‘u ichi gynyddu cyflymder gweithio gyda crates.io yn sylweddol a datrys problemau graddio gyda thwf pellach yn nifer y pecynnau yn yr ystorfa.

    Er mwyn lleihau'r oedi a achosir gan lawrlwytho mynegai llawn, mae Sparse yn lle cyrchu'r mynegai gan ddefnyddio Git yn golygu lawrlwytho'n uniongyrchol dros HTTPS y data mynegai angenrheidiol yn unig, gan gwmpasu dibyniaethau prosiect penodol. Defnyddir gwasanaeth newydd, index.crates.io, i ddarparu data mynegai. Yn ddiofyn, bwriedir defnyddio'r protocol newydd yng nghangen Rust 1.70, a chyn hynny, i'w alluogi, gallwch osod y newidyn amgylchedd "CARGO_REGISTRIES_CRATES_IO_PROTOCOL=denal" neu ychwanegu'r paramedr 'protocol =' i'r [cofrestrfeydd. crates-io]" adran o'r ffeil .cargo/config.toml 'prin'.

  • Ychwanegwyd y macro β€œpin!”, sy'n eich galluogi i greu strwythur Pin<&mut T> o'r ymadrodd β€œT” gyda phinio lleol o'i gyflwr (yn wahanol i Box::pin, nid yw'n dyrannu cof ar y domen, ond yn clymu ar lefel y pentwr).
  • Mae teclyn trin gwall dyrannu cof rhagosodedig wedi'i gynnig, a ddefnyddir wrth ddefnyddio'r pecyn aloc safonol. Bydd cymwysiadau sydd ond yn galluogi alloc (heb std) nawr yn galw'r triniwr β€œpanig!” pan fydd dyraniad cof yn methu, y gellir ei ryng-gipio yn ddewisol gan ddefnyddio β€œ#[panic_handler]”. Bydd rhaglenni sy'n defnyddio'r llyfrgell std yn parhau i argraffu gwybodaeth gwall i stderr a crash.
  • Mae cyfran newydd o'r API wedi'i symud i'r categori stabl, gan gynnwys dulliau a gweithrediad nodweddion wedi'u sefydlogi:
    • {craidd,std} ::pin ::pin!
    • impl O ar gyfer {f32,f64}
    • std::llwybr::MAIN_SEPARATOR_STR
    • impl DerefMut ar gyfer PathBuf
  • Defnyddir y briodwedd β€œconst”, sy'n pennu'r posibilrwydd o'i ddefnyddio mewn unrhyw gyd-destun yn lle cysonion, yn y swyddogaeth VecDeque::new.
  • I weithio ar y platfform Android, mae angen o leiaf NDK r25 (API 19) bellach, h.y. Mae'r fersiwn Android leiaf a gefnogir wedi'i godi i 4.4 (KitKat).
  • Mae'r drydedd lefel o gefnogaeth wedi'i rhoi ar waith ar gyfer platfform Sony PlayStation Vita (armv7-sony-vita-newlibeabihf). 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