Rust 1.46 programmēšanas valodas izlaidums

publicēts sistēmas programmēšanas valodas versija 1.46 Rūsa, ko dibināja Mozilla projekts. Valoda koncentrējas uz atmiņas drošību, nodrošina automātisku atmiņas pārvaldību un nodrošina rīkus augsta uzdevumu paralēlisma sasniegšanai, neizmantojot atkritumu savācēju un runtime.

Rust automātiskā atmiņas pārvaldība novērš kļūdas, manipulējot ar rādītājiem, un aizsargā pret problēmām, kas rodas no zema līmeņa atmiņas manipulācijām, piemēram, piekļuves atmiņas apgabalam pēc tā atbrīvošanas, nulles rādītāju novirzēm, bufera pārtēriņiem utt. Tiek izstrādāts pakotņu pārvaldnieks, lai izplatītu bibliotēkas, nodrošinātu montāžu un pārvaldītu projekta atkarības. krava, kas ļauj ar vienu klikšķi iegūt programmai nepieciešamās bibliotēkas. Repozitorijs tiek atbalstīts bibliotēku mitināšanai crates.io.

Galvenais jauninājumiem:

  • Paplašinātas funkciju iespējas, kas definētas, izmantojot izteicienu “const fn”, kuras var saukt ne tikai kā regulāras funkcijas, bet arī izmantot jebkurā kontekstā konstantu vietā. Šīs funkcijas tiek aprēķinātas kompilēšanas laikā, nevis izpildes laikā, tāpēc uz tām attiecas noteikti ierobežojumi, piemēram, iespēja lasīt tikai no konstantēm.

    Jaunajā laidienā ir atcelts aizliegums šādās funkcijās izmantot Būla operatorus (“&&” un “||”) un atļauts izmantot konstrukcijas “if”, “if let”, “match”,
    "while", "while let" un "loop", kā arī nodrošina iespēju pārvērst šķēlēs (slice, dinamiskie masīvi), izmantojot izteiksmi "&[T]". Šo līdzekļu izmantošana funkcijās “const fn” ļauj pārcelt dažas resursietilpīgas darbības uz kompilācijas stadiju. Piemēram, "const-sha1" ieviešana ļauj aprēķināt SHA-1 jaucējus kompilēšanas laikā, kā rezultātā Rust WinRT saistīšana tiek paātrināta gandrīz 40 reizes.

  • Lai kļūdu ziņojumi būtu informatīvāki, ir stabilizēts atribūta “#[track_caller]” atbalsts, kas ir noderīgs tādām funkcijām kā unwrap, kas var izraisīt paniku, ja tipi tiek izmantoti nepareizi. Panikas apstrādātājs izmantos norādīto atribūtu, lai kļūdas ziņojumā izdrukātu zvanītāja atrašanās vietu.
  • Atribūts “const”, kas nosaka iespēju to izmantot jebkurā kontekstā konstantu vietā, tiek izmantots std::mem::forget metodē.
  • Jauna API daļa ir pārvietota uz stabilo kategoriju, tostarp stabilizētā opcija Option::zip un vec::Drain::as_slice.
  • Paketes pārvaldniekā Cargo pievienots atbalsts jauniem vides mainīgajiem, kas iestatīti, kompilējot pakotni: CARGO_BIN_NAME (iegūtā izpildāmā faila nosaukums), CARGO_CRATE_NAME (pakotnes nosaukums), CARGO_PKG_LICENSE (licence norādīta manifestā), CARGO_PKG_LICENSE_FILE (ceļš uz licences failu).

Avots: opennet.ru

Pievieno komentāru