Rust 1.64 forritunarmálsútgáfa

Útgáfa Rust 1.64 almennt forritunarmálsins, stofnað af Mozilla verkefninu, en nú þróað undir merkjum óháðu sjálfseignarstofnunarinnar Rust Foundation, hefur verið gefin út. Tungumálið leggur áherslu á minnisöryggi og veitir leiðina til að ná mikilli samhliða vinnu á sama tíma og forðast notkun á sorphirðu og keyrslutíma (keyrslutími minnkar í grunnuppsetningu og viðhald á venjulegu bókasafni).

Minni meðhöndlunaraðferðir Rust bjarga þróunaraðilanum frá villum við meðhöndlun ábendinga og vernda gegn vandamálum sem koma upp vegna minnis meðhöndlunar á lágu stigi, eins og aðgangur að minnissvæði eftir að það hefur verið losað, frávísun núllbenda, offramkeyrsla á biðminni o.s.frv. Til að dreifa bókasöfnum, útvega smíði og stjórna ósjálfstæði, þróar verkefnið farmpakkastjórann. Crates.io geymslan er studd til að hýsa bókasöfn.

Minni öryggi er veitt í Rust á þýðingu tíma með tilvísun athugun, halda utan um eignarhald hlut, halda utan um líftíma hlut (umfang) og meta réttmæti minni aðgangs meðan kóða er keyrt. Ryð veitir einnig vernd gegn heiltöluflæði, krefst skyldubundinnar frumstillingar breytugilda fyrir notkun, meðhöndlar villur betur í stöðluðu bókasafni, beitir hugmyndinni um óbreytanlegar tilvísanir og breytur sjálfgefið, býður upp á sterka truflanir innsláttar til að lágmarka rökfræðilegar villur.

Helstu nýjungar:

  • Kröfur fyrir Linux umhverfið í þýðandanum, Cargo pakkastjóranum og libstd staðalsafninu hafa verið auknar - lágmarkskröfur fyrir Glibc hafa verið hækkaðar úr útgáfu 2.11 í 2.17 og Linux kjarna úr útgáfu 2.6.32 í 3.2. Takmarkanirnar eiga einnig við um keyrsluforrit Rust forrita sem eru byggð með libstd. Dreifingarsettin RHEL 7, SLES 12-SP5, Debian 8 og Ubuntu 14.04 uppfylla nýju kröfurnar. Stuðningur við RHEL 6, SLES 11-SP4, Debian 7 og Ubuntu 12.04 verður hætt. Notendur sem nota Rust-innbyggða keyrslu í umhverfi með eldri Linux kjarna eru hvattir til að uppfæra kerfin sín, vera á eldri útgáfum af þýðandanum eða viðhalda eigin libstd gaffli með lögum til að viðhalda eindrægni.

    Meðal ástæðna fyrir því að hætta stuðningi við eldri Linux kerfi eru takmarkað fjármagn til að halda áfram að viðhalda eindrægni við eldra umhverfi. Stuðningur við eldri Glibc krefst notkunar á eldri verkfærum þegar innritað er í samfellt samþættingarkerfi, í ljósi aukinna útgáfukrafna í LLVM og krosssamsetningartólum. Aukningin á kröfum um kjarnaútgáfu er vegna getu til að nota ný kerfiskall í libstd án þess að þurfa að viðhalda lögum til að tryggja samhæfni við eldri kjarna.

  • IntoFuture eiginleikinn hefur verið stöðugur, sem líkist IntoIterator, en er frábrugðinn þeim síðarnefnda með því að nota „.await“ í stað „for ... in ...“ lykkjur. Þegar það er sameinað IntoFuture getur „.await“ leitarorðið ekki aðeins átt von á framtíðareiginleika heldur einnig hvers kyns öðrum gerðum sem hægt er að breyta í framtíð.
  • Ryðgreiningartæki er innifalið í safni tóla sem fylgir Ryðútgáfum. Tækið er einnig fáanlegt fyrir uppsetningu með því að nota ryð (ryðhlutar bæta við ryðgreiningartæki).
  • Cargo pakkastjórinn felur í sér arfleifð vinnusvæðis til að koma í veg fyrir tvíverknað á algengum sviðsgildum á milli pakka, eins og Rust útgáfur og vefslóðir geymslu. Bætti einnig við stuðningi við að byggja upp fyrir nokkra markpalla í einu (þú getur nú tilgreint fleiri en eina færibreytu í „--target“ valkostinum).
  • Nýr hluti af API hefur verið færður í flokkinn stöðugt, þar með talið aðferðir og útfærslur á eiginleikum hafa verið stöðugar:
    • framtíð::IntoFuture
    • num::NonZero*::checked_mul
    • num::NonZero*::checked_pow
    • num::NonZero*::saturating_mul
    • num::NonZero*::saturating_pow
    • num::NonZeroI*::abs
    • num::NonZeroI*::checked_abs
    • num::NonZeroI*::overflowing_abs
    • num::NonZeroI*::saturating_abs
    • num::NonZeroI*::unsigned_abs
    • num::NonZeroI*::wrapping_abs
    • num::NonZeroU*::checked_add
    • num::NonZeroU*::checked_next_power_of_two
    • num::NonZeroU*::saturating_add
    • os::unix::process::CommandExt::process_group
    • os::windows::fs::FileTypeExt::is_symlink_dir
    • os::windows::fs::FileTypeExt::is_symlink_file
  • C-samhæfðar tegundir, sem áður voru stöðugar í std::ffi einingunni, hefur verið bætt við kjarnann og alloc bókasafnið:
    • kjarni::ffi::CSr
    • kjarni::ffi::FromBytesWithNulError
    • alloc::ffi::CSstreng
    • alloc::ffi::FromVecWithNulError
    • alloc::ffi::IntoStringError
    • alloc::ffi::NulError
  • C gerðir sem áður voru stöðugar í std::os::raw einingunni hefur verið bætt við kjarna::ffi og std::ffi einingarnar (til dæmis hafa c_uint og c_ulong gerðir verið lagðar til fyrir uint og ulong C gerðirnar):
    • ffi::c_char
    • ffi::c_tvöfalt
    • ffi::c_float
    • ffi::c_int
    • ffi::c_langur
    • ffi::c_longlong
    • ffi::c_schar
    • ffi::c_stutt
    • ffi::c_uchar
    • ffi::c_uint
    • ffi::c_ulong
    • ffi::c_ulonglong
    • ffi::c_short
  • Lágmarks meðhöndlarar hafa verið stöðugir til notkunar með Poll vélbúnaðinum (í framtíðinni er fyrirhugað að bjóða upp á einfaldað API sem krefst ekki notkunar lágstigs mannvirkja eins og Pull and Pin):

    • framtíð::könnun_fn
    • verkefni::tilbúið!
  • „const“ eigindin, sem ákvarðar möguleikann á að nota hann í hvaða samhengi sem er í stað fasta, er notaður í slice::from_raw_parts fallinu.
  • Til að geyma gögn á þéttari hátt hefur minnisútliti Ipv4Addr, Ipv6Addr, SocketAddrV4 og SocketAddrV6 mannvirkjanna verið breytt. Það kann að vera samhæfisvandamál með staka rimlakassa sem nota std::mem::transmute til að meðhöndla mannvirki á lágu stigi.
  • Smíði ryðþýðandans fyrir Windows vettvang notar PGO hagræðingar (profile-guided optimization), sem gerði það mögulegt að auka afköst kóðasöfnunar um 10-20%.
  • Þjálfarinn hefur innleitt nýja viðvörun um ónotaða reiti í ákveðnum mannvirkjum.

Að auki geturðu tekið eftir stöðuskýrslunni um þróun annarrar útfærslu á Rust tungumálaþýðandanum, unnin af gccrs verkefninu (GCC Rust) og samþykkt til að vera með í GCC. Eftir samþættingu framendans er hægt að nota staðlaða GCC verkfærin til að setja saman forrit á Rust tungumálinu án þess að þurfa að setja upp rustc þýðandann, byggðan með LLVM þróun. Svo lengi sem þróunin er á réttri leið, og að undanskildum ófyrirséðum vandamálum, verður Rust framhliðin samþætt GCC 13 útgáfunni sem áætlað er í maí á næsta ári. GCC 13 útfærslan á Rust verður í beta stöðu, ekki enn virkjuð sjálfgefið.

Heimild: opennet.ru

Bæta við athugasemd