Rust 1.63 programmeerimiskeele vÀljalase

Avaldatud on Mozilla projektiga rajatud, kuid nĂŒĂŒdseks sĂ”ltumatu mittetulundusĂŒhingu Rust Foundation egiidi all vĂ€lja töötatud ĂŒldotstarbelise programmeerimiskeele Rust 1.63 vĂ€ljalase. Keel keskendub mĂ€lu ohutusele ja pakub vahendeid töö kĂ”rge paralleelsuse saavutamiseks, vĂ€ltides samal ajal prĂŒgikoguja ja kĂ€itusaja kasutamist (kĂ€itusaeg lĂŒheneb standardse teegi pĂ”hikĂ€ivitamise ja hoolduseni).

Rusti mĂ€lukĂ€sitlusmeetodid sÀÀstavad arendajat osutitega manipuleerimisel esinevate vigade eest ja kaitsevad madala tasemega mĂ€lukĂ€sitluse tĂ”ttu tekkivate probleemide eest, nagu mĂ€lualale juurdepÀÀs pĂ€rast selle vabastamist, nullviidate viitamise tĂŒhistamine, puhvri ĂŒlekoormus jne. Teekide levitamiseks, jĂ€rkude pakkumiseks ja sĂ”ltuvuste haldamiseks arendab projekt Cargo paketihaldurit. Hoidlat crates.io toetatakse teekide majutamiseks.

MĂ€lu turvalisus on Rustis kompileerimise ajal tagatud viidete kontrollimise, objekti omandiĂ”iguse jĂ€lgimise, objektide eluea (ulatuse) jĂ€lgimise ja mĂ€lule juurdepÀÀsu Ă”igsuse hindamise kaudu koodi tĂ€itmise ajal. Rooste pakub ka kaitset tĂ€isarvude ĂŒletĂ€itumise eest, nĂ”uab muutujate vÀÀrtuste kohustuslikku lĂ€htestamist enne kasutamist, kĂ€sitleb standardteegi vigu paremini, rakendab vaikimisi muutumatute viidete ja muutujate kontseptsiooni, pakub tugevat staatilist tippimist loogiliste vigade minimeerimiseks.

Peamised uuendused:

  • Lisatud std::thread::scope API, mis vĂ”imaldab luua ulatusega lĂ”ime. Erinevalt varem saadaolevatest lĂ”imedest vĂ”imaldab uus std::thread::scope API edastada laenavaid mittestaatilisi andmeid, samas kui klassikalise std::thread::spawn API abil loodud lĂ”imed pidid omama kĂ”iki edastatud argumente ja neid ei saanud vastu vĂ”tta. laenatud muutujad. Std::thread::scope API tagab, et kĂ”ik tekkinud lĂ”imed lĂ”petatakse enne andmete tagastamist, tagades laenamismehhanismile piisava turvalisuse.
  • Failideskriptorite jaoks on vĂ€lja pakutud uued ĂŒmbristĂŒĂŒbid – BorrowedFd ja OwnedFd, mis pakuvad laenutamist ja omandiĂ”igust. TĂŒĂŒbid on tĂ€histatud tĂ€hisega "#[repr(transparent)]", mis vĂ”imaldab neid otse kasutada vĂ€listes C-köites omandist teadlikul viisil.
  • VĂ”imalus kutsuda konstantide kontekstis vĂ€lja Condvar::new, Mutex::new ja RwLock::new, et luua globaalseid staatilisi Mutexi, RwLocki ja Condvari vÀÀrtusi ilma pakette lazy_static kasutamata.
  • Funktsioonide jaoks nagu fn foo (vÀÀrtus: T, f: impl Kopeeri) sĂŒntaks nagu "foo::" on lubatud (32, 3)”, mis nĂ€itab selgesĂ”naliselt ĂŒldnimetuse tĂŒĂŒpi.
  • Üleminek NLL-tehnikale (Non-Lexical Lifetimes) muutujate laenutamisega seotud probleemide tuvastamiseks on lĂ”pule viidud. NLL arvestab tĂ€itmisvoo graafikus osutite komplekti tasemel, mis vĂ”imaldab tĂ”sta laenumuutujate kontrollimise kvaliteeti (laenamise kontrollija) ja vĂ”imaldab tĂ€ita teatud tĂŒĂŒpi Ă”iget koodi, mis varem pĂ”hjustas vea. Tugi vanale mehhanismile, mis kasutas leksikaalsel tasemel eluaegset sidumist, on nĂŒĂŒd rustc-st tĂ€ielikult eemaldatud ja uue NLL-i kasutamine on lĂ€bivalt rakendatud.
  • API uus osa on viidud stabiilsete kategooriasse, sealhulgas on stabiliseeritud meetodid ja tunnuste rakendused:
    • massiiv::from_fn
    • Box::into_pin
    • BinaryHeap::try_reserve
    • BinaryHeap::try_reserve_exact
    • OsString::try_reserve
    • OsString::try_reserve_exact
    • PathBuf::try_reserve
    • PathBuf::try_reserve_exact
    • Tee::try_exists
    • Ref::filter_map
    • RefMut::filter_map
    • NonNull::<[T]>::len
    • Omandatud::clone_into
    • Ipv6Addr::to_ipv4_mapped
    • unix::io::AsFd
    • unix::io::LaenatudFd<'fd>
    • unix::io::OwnedFd
    • windows::io::AsHandle
    • windows::io::LaenatudHandle

      Allikas: opennet.ru
Ostke DDoS-kaitsega saitide jaoks usaldusvÀÀrne hostimine, VPS VDS-serverid đŸ”„ Osta usaldusvÀÀrne veebimajutus DDoS-kaitsega, VPS VDS serverid | ProHoster