Rust 1.58 Rhyddhau Iaith Rhaglennu

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

  • Mewn blociau fformatio llinell, yn ogystal Γ’'r gallu a oedd ar gael yn flaenorol i amnewid newidynnau a restrwyd yn benodol ar Γ΄l llinell yn Γ΄l rhif ac enw, gweithredir y gallu i amnewid dynodwyr mympwyol trwy ychwanegu'r ymadrodd β€œ{identifier}” i'r llinell. Er enghraifft: // Cystrawennau a gefnogwyd yn flaenorol: println!("Helo, {}!", get_person()); println!("Helo, {0}!", get_person()); println!("Helo, {person}!", person = get_person()); // nawr gallwch chi nodi let person = get_person(); println!("Helo, {person}!");

    Gellir hefyd nodi dynodwyr yn uniongyrchol mewn opsiynau fformatio. gadewch (lled, trachywiredd) = get_format(); ar gyfer (enw, sgΓ΄r) yn get_scores() { println!("{name}: {score:width$.precision$}"); }

    Mae'r amnewidiad newydd yn gweithio ym mhob macro sy'n cefnogi diffiniad fformat llinynnol, ac eithrio'r macro β€œpanig!”. yn fersiynau 2015 a 2018 o'r iaith Rust, lle mae panig! ("{ident}") yn cael ei drin fel llinyn rheolaidd (yn Rust 2021 mae'r amnewid yn gweithio).

  • Mae ymddygiad y std ::proses :: strwythur gorchymyn ar blatfform Windows wedi'i newid fel nad yw bellach yn edrych am ffeiliau gweithredadwy yn y cyfeiriadur cyfredol wrth weithredu gorchmynion, am resymau diogelwch. Mae'r cyfeiriadur presennol wedi'i eithrio oherwydd gellid ei ddefnyddio i weithredu cod maleisus os yw rhaglenni'n cael eu rhedeg mewn cyfeiriaduron nad oes modd ymddiried ynddynt (CVE-2021-3013). Mae'r rhesymeg canfod gweithredadwy newydd yn cynnwys chwilio'r cyfeiriaduron Rust, y cyfeiriadur rhaglenni, cyfeiriadur system Windows, a'r cyfeiriaduron a nodir yn y newidyn amgylchedd PATH.
  • Mae'r llyfrgell safonol wedi ehangu nifer y swyddogaethau sydd wedi'u marcio "#[must_use]" i roi rhybudd os anwybyddir y gwerth dychwelyd, sy'n helpu i nodi gwallau a achosir gan dybio y bydd swyddogaeth yn newid gwerthoedd yn hytrach na dychwelyd gwerth newydd.
  • Mae cyfran newydd o'r API wedi'i symud i'r categori stabl, gan gynnwys dulliau a gweithrediad nodweddion wedi'u sefydlogi:
    • Metadata::is_symlink
    • Llwybr::is_symlink
    • {cyfanrif}::saturating_div
    • Opsiwn:: unwrap_unchecked
    • Canlyniad::unwrap_heb ei wirio
    • Canlyniad::unwrap_err_unchecked
  • Defnyddir y nodwedd β€œconst”, sy'n pennu'r posibilrwydd o'i ddefnyddio mewn unrhyw gyd-destun yn lle cysonion, yn y swyddogaethau:
    • Hyd::newydd
    • Hyd:: wedi'i wirio_ychwanegu
    • Hyd::saturating_add
    • Hyd:: checked_sub
    • Hyd::saturating_sub
    • Hyd:: wedi'i wirio_mul
    • Hyd::saturating_mul
    • Hyd:: wedi'i wirio_div
  • CaniatΓ‘u dadgyfeirio awgrymiadau "*const T" mewn cyd-destunau "const".
  • Yn y rheolwr pecyn Cargo, mae'r maes rust_version wedi'i ychwanegu at y metadata pecyn, ac mae'r opsiwn β€œ--message-format” wedi'i ychwanegu at y gorchymyn β€œcargo install”.
  • Mae'r casglwr yn gweithredu cefnogaeth ar gyfer mecanwaith amddiffyn CFI (Cywirdeb Llif Rheoli), sy'n ychwanegu gwiriadau cyn pob galwad anuniongyrchol i ganfod rhai mathau o ymddygiad heb ei ddiffinio a allai o bosibl arwain at dorri'r gorchymyn gweithredu arferol (llif rheoli) o ganlyniad i'r defnyddio campau sy'n newid awgrymiadau sy'n cael eu storio yn y cof ar swyddogaethau.
  • Mae'r casglwr wedi ychwanegu cefnogaeth ar gyfer fersiynau 5 a 6 o'r fformat cymharu darpariaeth LLVM, a ddefnyddir i werthuso cwmpas cod yn ystod profion.
  • Yn y casglwr, codir y gofynion ar gyfer y fersiwn lleiaf o LLVM i LLVM 12.
  • Mae'r drydedd lefel o gefnogaeth ar gyfer y platfform x86_64-unknown-none wedi'i gweithredu. Mae'r drydedd lefel yn cynnwys cymorth sylfaenol, ond heb brofi awtomataidd, cyhoeddi adeiladau swyddogol, na gwirio a ellir adeiladu'r cod.

Yn ogystal, gallwn nodi bod Microsoft wedi cyhoeddi rhyddhau Rust ar gyfer llyfrgelloedd Windows 0.30, sy'n caniatΓ‘u ichi ddefnyddio'r iaith Rust i ddatblygu cymwysiadau ar gyfer yr OS Windows. Mae'r set yn cynnwys dau becyn crΓ’t (ffenestri a windows-sys), lle gallwch chi gael mynediad i'r rhaglenni Win API in Rust. Mae cod ar gyfer cefnogaeth API yn cael ei gynhyrchu'n ddeinamig o fetadata sy'n disgrifio'r API, sy'n eich galluogi i weithredu cefnogaeth nid yn unig ar gyfer galwadau Win API presennol, ond ar gyfer galwadau a fydd yn ymddangos yn y dyfodol. Mae'r fersiwn newydd yn ychwanegu cefnogaeth i lwyfan targed UWP (Universal Windows Platform) ac yn gweithredu'r mathau Trin a Dadfygio.

Ffynhonnell: opennet.ru

Ychwanegu sylw