Rust 1.64 programmēšanas valodas izlaidums

Publicēts vispārējas nozīmes programmēšanas valodas Rust 1.64 izlaidums, kas dibināts ar Mozilla projektu, bet tagad izstrādāts neatkarīgās bezpeļņas organizācijas Rust Foundation paspārnē. Valoda koncentrējas uz atmiņas drošību un nodrošina līdzekļus, lai sasniegtu augstu darba paralēlismu, vienlaikus izvairoties no atkritumu savācēja un izpildlaika izmantošanas (izpildlaiks tiek samazināts līdz standarta bibliotēkas pamata inicializēšanai un uzturēšanai).

Rust atmiņas apstrādes metodes pasargā izstrādātāju no kļūdām, manipulējot ar rādītājiem, un aizsargā pret problēmām, kas rodas zema līmeņa atmiņas apstrādes dēļ, piemēram, piekļūšana atmiņas apgabalam pēc tā atbrīvošanas, nulles rādītāju atsauču atcelšana, bufera pārtēriņi utt. Lai izplatītu bibliotēkas, nodrošinātu būvējumus un pārvaldītu atkarības, projekts izstrādā Cargo pakotņu pārvaldnieku. Crates.io repozitorijs tiek atbalstīts bibliotēku mitināšanai.

Atmiņas drošība tiek nodrošināta Rust kompilēšanas laikā, pārbaudot atsauces, sekojot līdzi objekta īpašumtiesībām, sekojot līdzi objektu kalpošanas laikam (tvērumam) un novērtējot atmiņas piekļuves pareizību koda izpildes laikā. Rūsa arī nodrošina aizsardzību pret veselu skaitļu pārpildīšanu, pieprasa obligātu mainīgo vērtību inicializāciju pirms lietošanas, labāk apstrādā kļūdas standarta bibliotēkā, pēc noklusējuma piemēro nemainīgu atsauču un mainīgo jēdzienu, piedāvā spēcīgu statisko rakstīšanu, lai samazinātu loģiskās kļūdas.

Galvenie jauninājumi:

  • Paaugstinātas prasības videi Linux Kompilatorā, Cargo pakotņu pārvaldniekā un standarta bibliotēkā libstd minimālās Glibc prasības ir paaugstinātas no 2.11 versijas uz 2.17 versiju, un kodoli Linux No 2.6.32 versijas līdz 3.2. Ierobežojumi attiecas arī uz Rust lietojumprogrammu izpildāmajiem failiem, kas veidoti, izmantojot libstd. RHEL 7, SLES 12-SP5 un citas distribūcijas atbilst jaunajām prasībām. Debian 8 un Ubuntu 14.04. Atbalsts RHEL 6, SLES 11-SP4 tiks pārtraukts. Debian 7 un Ubuntu 12.04. Lietotājiem, kuri izmanto Rust rīku ķēdē veidotus izpildāmos failus vidēs ar vecāku kodolu Linuxieteicams jaunināt savas sistēmas, palikt pie vecākām kompilatoru versijām vai neatkarīgi uzturēt savu libstd atzaru ar starpslāņiem, lai saglabātu saderību.

    Starp iemesliem, kāpēc tiek pārtraukts atbalsts vecajiem Linux-sistēmas min ierobežotus resursus, lai turpinātu uzturēt saderību ar vecākām vidēm. Atbalsts vecākai Glibc versijai prasa vecāku rīku izmantošanu, pārbaudot nepārtrauktās integrācijas sistēmu, ņemot vērā paaugstinātās LLVM un krustkompilācijas rīku versiju prasības. Paaugstinātās kodola versiju prasības ir saistītas ar iespēju izmantot jaunus sistēmas izsaukumus libstd bez nepieciešamības uzturēt starpniekus, lai nodrošinātu saderību ar vecākiem kodoliem.

  • IntoFuture iezīme ir stabilizēta, kas atgādina IntoIterator, bet atšķiras no pēdējās, izmantojot ".await", nevis "for ... in ..." cilpas. Kombinācijā ar IntoFuture atslēgvārdam ".await" var būt ne tikai nākotnes iezīme, bet arī citi veidi, kurus var pārvērst par nākotni.
  • Rūsas analizatora utilīta ir iekļauta Rust izlaidumu utilītu kolekcijā. Lietderība ir pieejama arī instalēšanai, izmantojot rustup (rustup komponents pievieno rūsas analizatoru).
  • Cargo pakotņu pārvaldniekā ir iekļauta darbvietas mantošana, lai novērstu kopējo lauku vērtību dublēšanos starp pakotnēm, piemēram, Rust versijām un repozitorija URL. Pievienots arī atbalsts vairāku mērķa platformu veidošanai vienlaikus (tagad opcijā “--target” varat norādīt vairāk nekā vienu parametru).
  • Jauna API daļa ir pārvietota uz stabilo kategoriju, tostarp ir stabilizētas pazīmju metodes un ieviešanas:
    • nākotne::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_dwo
    • num::NonZeroU*::saturating_add
    • os::unix::process::CommandExt::process_group
    • os::windows::fs::FileTypeExt::is_symlink_dir
    • os::windows::fs::FileTypeExt::is_symlink_file
  • Ar C saderīgi tipi, kas iepriekš stabilizēti modulī std::ffi, ir pievienoti kodolam un alloc bibliotēkai:
    • kodols::ffi::CStr
    • kodols::ffi::FromBytesWithNulError
    • alloc::ffi::CString
    • aloc::ffi::FromVecWithNulError
    • alloc::ffi::IntoStringError
    • aloc::ffi::NulError
  • C tipi, kas iepriekš stabilizēti std::os::raw modulī, ir pievienoti kodolam::ffi un std::ffi moduļiem (piemēram, uint un ulong C tipiem ir piedāvāti c_uint un c_ulong tipi):
    • ffi::c_char
    • ffi::c_double
    • ffi::c_float
    • ffi::c_int
    • ffi::c_long
    • ffi::c_longlong
    • ffi::c_schar
    • ffi::c_short
    • ffi::c_uchar
    • ffi::c_uint
    • ffi::c_ulong
    • ffi::c_ulonglong
    • ffi::c_ushort
  • Zema līmeņa apstrādātāji ir stabilizēti lietošanai ar Poll mehānismu (nākotnē plānots nodrošināt vienkāršotu API, kas neprasa izmantot zema līmeņa struktūras, piemēram, Pull and Pin):
    • nākotne::poll_fn
    • uzdevums::gatavs!
  • Atribūts “const”, kas nosaka iespēju to izmantot jebkurā kontekstā konstantu vietā, tiek izmantots funkcijā slice::from_raw_parts.
  • Lai kompaktāk uzglabātu datus, ir mainīts Ipv4Addr, Ipv6Addr, SocketAddrV4 un SocketAddrV6 struktūru atmiņas izkārtojums. Var rasties saderības problēma ar vienas kastes pakotnēm, kas izmanto std::mem::transmute zema līmeņa manipulācijām ar struktūrām.
  • Platformas Rust kompilatora versijā Windows Tika izmantotas PGO optimizācijas (profila vadīta optimizācija), kas ļāva palielināt koda kompilācijas veiktspēju par 10–20%.
  • Kompilators ir ieviesis jaunu brīdinājumu par neizmantotiem laukiem noteiktās struktūrās.

Turklāt varat atzīmēt statusa ziņojumu par Rust valodas kompilatora alternatīvas ieviešanas izstrādi, ko sagatavojis projekts gccrs (GCC Rust) un kas apstiprināts iekļaušanai GCC. Pēc priekšgala integrēšanas standarta GCC rīkus var izmantot, lai kompilētu programmas Rust valodā bez nepieciešamības instalēt rustc kompilatoru, kas izveidots, izmantojot LLVM izstrādes. Kamēr attīstība norisinās un izslēdzot neparedzētas problēmas, Rust priekšgals tiks integrēts GCC 13 laidienā, kas paredzēts nākamā gada maijā. Rust GCC 13 ieviešana būs beta statusā, bet pēc noklusējuma vēl nav iespējota.

Avots: opennet.ru

Iegādājieties uzticamu mitināšanu vietnēm ar DDoS aizsardzību, VPS VDS serveriem 🔥 Iegādājieties uzticamu tīmekļa vietņu mitināšanu ar DDoS aizsardzību, VPS VDS serveriem | ProHoster