Datganiad iaith rhaglennu Rust 2021 (1.56)

Mae rhyddhau'r iaith raglennu system Rust 1.56, a sefydlwyd gan brosiect Mozilla, ond sydd bellach wedi'i ddatblygu dan nawdd y sefydliad dielw annibynnol Rust Foundation, wedi'i gyhoeddi. Yn ogystal Γ’'r rhif fersiwn rheolaidd, mae'r datganiad hefyd wedi'i ddynodi'n Rust 2021 ac mae'n nodi sefydlogi'r newidiadau a gynigir dros y tair blynedd diwethaf. Bydd Rust 2021 hefyd yn sail ar gyfer cynyddu ymarferoldeb dros y tair blynedd nesaf, yn debyg i sut y daeth rhyddhau Rust 2018 yn sail i ddatblygiad yr iaith yn ystod y tair blynedd diwethaf.

Er mwyn cynnal cydnawsedd, gall datblygwyr ddefnyddio labeli "2015", "2018" a "2021" yn eu rhaglenni, gan ganiatΓ‘u i raglenni gael eu cysylltu Γ’ sleisys cyflwr iaith sy'n cyfateb i'r rhifynnau dethol o Rust. Cyflwynwyd rhifynnau i wahanu newidiadau anghydnaws ac maent wedi'u ffurfweddu ym metadata pecynnau cargo trwy'r maes β€œargraffiad” yn yr adran β€œ[pecyn]”. Er enghraifft, mae rhifyn β€œ2018” yn cynnwys y swyddogaeth a sefydlogwyd ar ddiwedd 2018 ac mae hefyd yn ymdrin Γ’'r holl newidiadau pellach nad ydynt yn torri cydnawsedd. Mae rhifyn 2021 hefyd yn cynnwys nodweddion sy'n torri ar ryngweithredu a gynigir yn y datganiad 1.56 presennol ac a gymeradwywyd i'w gweithredu yn y dyfodol. Yn ogystal Γ’'r iaith ei hun, mae'r golygyddion hefyd yn ystyried cyflwr yr offer a'r ddogfennaeth.

Anghydnawsedd mawr a gofnodwyd yn Rust 2021:

  • Dal Ar WahΓ’n Wrth Gau - Gall Cau nawr ddal enwau caeau unigol yn lle'r dynodwr cyfan. Er enghraifft, "|| bydd ax + 1" ond yn dal "ax" yn lle "a".
  • Mae'r nodwedd IntoIterator ar gyfer araeau: array.into_iter() yn caniatΓ‘u ichi ailadrodd dros elfennau arae yn Γ΄l gwerthoedd, yn hytrach na chyfeirnodau.
  • Mae prosesu ymadroddion β€œ|” wedi'i newid mewn macro_rules (Boolean OR) mewn patrymau - Mae'r fanyleb ":pat" mewn matsys bellach yn parchu "A | B".
  • Mae'r rheolwr pecyn cargo yn cynnwys yn ddiofyn yr ail fersiwn o'r datryswr nodwedd, yr ymddangosodd cefnogaeth ar ei gyfer yn Rust 1.51.
  • Mae nodweddion TryFrom, TryInto ac FromIterator wedi'u hychwanegu at y modiwl llyfrgell safonol rhagarweiniad.
  • Mae'r panig!(..) a haeru!(expr, ..) macros bellach bob amser yn defnyddio format_args!(..) i fformatio llinynnau, yn debyg i println!().
  • Mae'r ymadroddion ident#, identΒ»..." ac ident'...' wedi'u cadw yn y gystrawen iaith.
  • Wedi symud rhybuddion bare_trait_objects ac ellipsis_inclusive_range_patterns i wallau.

Newydd yn Rust 1.56:

  • Yn Cargo.toml, yn yr adran β€œ[pecyn]”, mae'r maes fersiwn rhwd wedi'i ychwanegu, lle gallwch chi bennu'r fersiwn lleiaf a gefnogir o Rust ar gyfer y pecyn crΓ’t. Os nad yw'r fersiwn gyfredol yn cyfateb i'r paramedr penodedig, bydd Cargo yn rhoi'r gorau i weithio gyda neges gwall.
  • Wrth baru patrwm gan ddefnyddio ymadroddion "rhwymo @ patrwm", darperir cefnogaeth ar gyfer nodi rhwymiadau ychwanegol (er enghraifft, "let matrics @ Matrix { row_len, .. } = get_matrix();").
  • Mae cyfran newydd o'r API wedi'i symud i'r categori stabl, gan gynnwys dulliau a gweithrediad nodweddion wedi'u sefydlogi:
    • std::os::unix::fs::chroot
    • AnniogelCell::raw_get
    • BufWriter::i mewn_rhannau
    • craidd ::panig ::{UnwindSafe, RefUnwindSafe, AssertUnwindSafe}
    • Vc:: crebachu_i
    • Llinyn:: crebachu_i
    • OsString:: crebachu_i
    • PathBuf:: crebachu_i
    • BinaryHeap :: crebachu_i
    • VecDeque :: crebachu_i
    • HashMap:: crebachu_i
    • HashSet:: crebachu_i
  • Defnyddir y nodwedd β€œconst”, sy'n pennu'r posibilrwydd o ddefnyddio mewn unrhyw gyd-destun yn lle cysonion, mewn ffwythiannau
    • std::mem::transmute
    • [T]:: yn gyntaf
    • [T] :: hollti_cyntaf
    • [T]:: diwethaf
    • [T] :: hollti_last
  • Mae'r casglwr wedi'i newid i ddefnyddio fersiwn LLVM 13.
  • Mae ail lefel o gefnogaeth wedi'i rhoi ar waith ar gyfer y llwyfan aarch64-apple-ios-sim a thrydedd lefel ar gyfer y llwyfannau powerpc-unknown-freebsd a riscv32imc-esp-espidf. Mae'r drydedd lefel yn cynnwys cefnogaeth sylfaenol, ond heb brofi awtomataidd, cyhoeddi adeiladau swyddogol, na gwirio a ellir adeiladu'r cod.

Dwyn i gof bod Rust yn canolbwyntio ar ddiogelwch cof, yn darparu rheolaeth cof awtomatig, ac yn darparu modd o gyflawni cyfochrogrwydd uchel wrth gyflawni swyddi 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.

Ffynhonnell: opennet.ru

Ychwanegu sylw