süsteemse programmeerimise keele väljaanne , mille on loonud Mozilla. Keel keskendub mälu ohutule kasutamisele, tagab automaatse mälu haldamise ja pakub vahendeid kõrge paralleelsuse saavutamiseks ülesannete täitmisel, kasutamata samas prügikorjajat ja runtime'i.
Rustis tagab automaatne mälu haldamine arendajale mälukäitlemise manipuleerimise vabastamise ja kaitseb madala taseme mälu töötlemisega seotud probleemide eest, nagu mälu kasutamine pärast selle vabastamist, nullviidete de-referentsimine, puhverduspiiride ületamine jne. Raamatukogude jagamiseks, koostamise tagamiseks ja sõltuvuste haldamiseks arendatakse pakihaldurit , mis võimaldab vajalikke raamatukogusid ühe klikiga hankida. Raamatukogude paigutamiseks toetatakse hoidlapaiku .
Peamised :
- rustc kompilaatoris koodi profiilipõhise optimeerimise (PGO, Profile-Guided Optimization) tugi,
mis võimaldab genereerida efektiivsemat koodi, tuginedes analüüsile, mis põhines programmis käitamise käigus kogutud statistikal. Profiili genereerimiseks on ette nähtud lipp "-C profile-generate", ja profiili kasutamiseks kompileerimisel "-C profile-use" (alguses kompileeritakse programm esimese lipuga, testitakse seda ja pärast profiili loomist kompileeritakse see uuesti teise lipuga); - Käsk "cargo run", mida on mugav kasutada konsoolrakenduste kiireks testimiseks, sisaldab nüüd võimalust automaatselt valida käivitatav fail, juhul kui pakendis on mitu käivitatavat faili. Vaikimisi käivitatav fail määratakse direktiiviga default-run [package] sektsioonis, mis võimaldab kasutada ilma et peaks iga "cargo run" käivitamise korral failinime lippu "—bin" selgelt täpsustama;
- Pakihaldur Cargo on integreeritud käsk "cargo vendor", mis varem pakuti eraldi paketina . Meeskond võimaldab korraldada tööd kohaliku sõltuvuste koopia keskkonnas — pärast «cargo vendor» käivitamist laaditakse kõik projekti sõltuvuste lähtekoodid crates.io-st kohalikku katalooge, mida saab seejärel kasutada tööks ilma crates.io poole pöördumata (käskluse käivitamisel kuvatakse vihje konfiguratsiooni muutmiseks selle katalooge kasutamiseks ehitustes). Antud võimalust kasutatakse juba rustc kompilaatori tarnimiseks, kus kõik sõltuvused pakitakse ühte arhiivi koos versiooniga;
- On lisandunud võimalus luua linke loendite (enum) variantidele, kasutades tüüpide hüüdnimesid (näiteks funktsiooni «fn increment_or_zero(x: ByteOption)» kehas saab määrata «ByteOption::None => 0»), tüübi arvutamise konstruktsioone (‹MyType‹..››::variant => N) või Self-i viiteid (c &self plokkides saab määrata «Self::Quarter => 25»);
- Lisatud on võimalus luua nimetu konstandte makrode kaudu. Elementide nime määramise asemel «const» abil saab nüüd kasutada sümbolit «_» dünaamiliseks kordumatute identifikaatorite valimiseks, et vältida nimekonflikte makro korduva kutsumise korral;
- Lisatud omaduse "#[repr(align(N))" kasutamine enum'itega, kasutades süntaksit, mis sarnaneb struktuuri AlignN‹T› määratlemisega, koos joondamise ja järgnevaga AlignN‹MyEnum› kasutamiseks;
- Stabiilsetesse kategooriatesse on viidud uus API ports, sealhulgas on stabiliseeritud meetodid BufReader::buffer, BufWriter::buffer,
Cell::from_mut,
Cell::as_slice_of_cells,
DoubleEndedIterator::nth_back,
Option::xor,
{i,u}{8,16,64,128,size}::reverse_bits, Wrapping::reverse_bits ja
slice::copy_within.
Lisaks saab märkida projekt , pakkudes asünkroonset varianti Rusti standardteegist (std teegi port, kus kõik liidesed on pakutud asünkroonses versioonis ja on valmis kasutamiseks süntaksiga async/await).
Allikas: opennet.ru
