Cyhoeddwyd rhyddhau iaith rhaglennu system Rhwd 1.40, a sefydlwyd gan brosiect Mozilla. Mae'r iaith yn canolbwyntio ar ddiogelwch cof, yn darparu rheolaeth cof awtomatig, ac yn darparu offer ar gyfer cyflawni cyfochrogrwydd tasg uchel heb ddefnyddio casglwr sbwriel a Rhedeg.
Mae rheolaeth cof awtomatig Rust yn rhyddhau'r datblygwr rhag trin pwyntydd ac yn amddiffyn rhag problemau sy'n deillio o drin cof lefel isel, megis mynediad cof ôl-rhad ac am ddim, cyfeiriadau pwyntydd nwl, gor-redeg byffer, ac ati. Mae rheolwr pecyn yn cael ei ddatblygu i ddosbarthu llyfrgelloedd, sicrhau cydosod a rheoli dibyniaethau gan y prosiect. Tâl, sy'n eich galluogi i gael y llyfrgelloedd sydd eu hangen ar gyfer y rhaglen mewn un clic. Cefnogir ystorfa i gynnal llyfrgelloedd cewyll.io.
Ychwanegwyd y gallu i farcio strwythurau (strwythur) a rhifiadau (enum gyda bloc Amrywiad) gan ddefnyddio'r priodoledd "#[di_hollol]", sydd yn caniatáu yn y dyfodol, ychwanegu meysydd ac opsiynau newydd at strwythurau a chyfrifiadau datganedig. Er enghraifft, gall datblygwyr modiwlau sydd â strwythurau â meysydd sydd wedi'u datgan yn gyhoeddus ddefnyddio "#[non_exhaustive]" i farcio strwythurau a allai gynnwys meysydd newydd yn y dyfodol. Hyd yn hyn, mewn sefyllfa o'r fath, gorfodwyd y datblygwr i ddewis rhwng datgan meysydd yn breifat a rhwymo i restr ddigyfnewid o feysydd. Mae'r priodoledd newydd yn dileu'r cyfyngiad hwn ac yn caniatáu ichi ychwanegu meysydd newydd yn y dyfodol heb y risg o dorri cod allanol a luniwyd yn flaenorol. Mewn pecynnau crât, wrth baru opsiynau yn yr adran “match”, mae angen diffiniad penodol o'r mwgwd “_ => {...}”, sy'n cwmpasu meysydd posibl yn y dyfodol, fel arall bydd gwall yn cael ei arddangos wrth ychwanegu meysydd newydd.
Wedi adio y gallu i alw'r macro gweithdrefnol mac!() mewn cyd-destun math. Er enghraifft, gallwch nawr ysgrifennu “type Foo = expand_to_type! (bar);” os yw “expand_to_type” yn facro gweithdrefnol.
Mewn blociau "extern { ... }". wedi adio y gallu i ddefnyddio macros gweithdrefnol a phriodoledd, gan gynnwys macros “bang!()”, er enghraifft:
Mewn macros gweithredu y gallu i gynhyrchu elfennau “macro_rules!”. Cynhyrchu "macro_rules!" yn bosibl mewn macros tebyg i ffwythiant (“mac! ()”) ac mewn macros ar ffurf priodoleddau (“#[mac]”).
Yn yr elfen mapio $m:meta wedi adio cefnogaeth ar gyfer gwerthoedd rhifo tocynnu mympwyol ("[TOKEN_STREAM]", "{TOKEN_STREAM}" a "(TOKEN_STRREAM)"), er enghraifft:
Yn y modd Rust 2015, mae allbwn gwallau wedi'i alluogi ar gyfer problemau a nodir wrth wirio benthyca newidynnau (gwiriwr benthyca) gan ddefnyddio'r dechneg NLL (Non-Lexical Lifetimes). Yn flaenorol, mae rhybuddion wedi'u disodli gan wallau wrth redeg yn y modd Rust 2018.
Ar ôl i'r newid gael ei ymestyn i'r modd Rust 2015, roedd datblygwyr yn gallu o'r diwedd cael gwared o'r hen wiriwr benthyg.
Gadewch inni gofio bod y system ddilysu sy'n seiliedig ar fecanwaith newydd ar gyfer ystyried oes y newidynnau a fenthycwyd wedi ei gwneud hi'n bosibl nodi rhai problemau nad oedd yr hen god dilysu yn sylwi arnynt. Gan y gallai allbwn gwallau ar gyfer gwiriadau o'r fath effeithio ar gydnawsedd â chod a oedd yn gweithio'n flaenorol, cyhoeddwyd rhybuddion i ddechrau yn lle gwallau.
Defnyddir y briodwedd “const”, sy'n pennu'r posibilrwydd o'i ddefnyddio mewn unrhyw gyd-destun yn lle cysonion, ar gyfer y swyddogaeth is_power_of_two (ar gyfer cyfanrifau heb eu llofnodi).
Mae cyfran newydd o'r API wedi'i symud i'r categori stabl, gan gynnwys y todo!() macro a'r sleisen::ailadrodd, mem::take, BTreeMap::get_key_value, HashMap::get_key_value, mae dulliau wedi'u sefydlogi.
Opsiwn:: as_deref, Opsiwn:: as_deref_mut, Opsiwn:: fflatio, UdpSocket:: peer_addr, {f32,f64} :: to_be_bytes, {f32,f64} :: to_le_bytes, {f32,f64} :: to_ne_32bytes, {f64,f32} f64}::from_be_bytes, {f32,f64}::from_le_bytes, a {fXNUMX,fXNUMX}::from_ne_bytes.
Yn y cargo rheolwr pecyn gweithredu caching rhybuddion casglwr ar ddisg. Mae'r opsiwn "metadata cargo" wedi'i ychwanegu at y gorchymyn "metadata cargo".--hidlo-llwyfan" " i ddangos pecynnau sydd wedi eu rhwymo i'r platfform targed penodedig yn y golofn datrysiad dibyniaeth yn unig. Ychwanegwyd opsiwn ffurfweddu fersiwn http.ssl i ddiffinio fersiynau TLS dilys.
Ychwanegwyd y gallu i gyhoeddi'r adran "dev-dibyniaethau" heb nodi'r allwedd "version".
Mae'r crynhoydd rustc yn darparu cefnogaeth trydydd lefel ar gyfer llwyfannau targed thumbv7neon-unknown-linux-musleabihf, aarch64-unknown-none-softfloat, mips64-unknown-linux-muslabi64 a mips64el-unknown-linux-muslabi64. Mae'r drydedd lefel yn cynnwys cymorth sylfaenol, ond heb brofi awtomataidd a chyhoeddi adeiladau swyddogol.