Rust 1.44 programmēŔanas valodas izlaidums

publicēts sistēmas programmÄ“Å”anas valodas izlaidums 1.44. 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.

Jaunā laidiena paziņojuma tekstā Rust izstrādātāji iesaistÄ«jās politikā un kategoriski atteicās publicēt pilnu Rust 1.44 izmaiņu apskatu, tādējādi apliecinot solidaritāti ar protestētājiem pret policijas vardarbÄ«bu, norādot, ka Å”is jautājums ir svarÄ«gāks. nekā tehnisko zināŔanu apmaiņa. Pamata jauninājumiem:

  • Kravas pakotnes pārvaldnieks integrē komandu ā€œkravas koksā€, kas parāda kokam lÄ«dzÄ«gu atkarÄ«bas grafiku. Pievienota arÄ« opcija ā€œā€”dublikātiā€ (ā€œkravas koks -dā€), kas ļauj novērtēt atkarÄ«bas dažādās vienas pakotnes versijās.

    mdbook v0.3.2 (/Users/src/rust/mdbook)
    ā”œā”€ā”€ amonjaks v3.0.0
    ā”‚ ā”œā”€ā”€ html5ever v0.24.0
    ā”‚ ā”‚ ā”œā”€ā”€ žurnāla v0.4.8
    ā”‚ ā”‚ ā”‚ ā””ā”€ā”€ cfg-if v0.1.9
    ā”‚ ā”‚ ā”œā”€ā”€ mac v0.1.1
    ā”‚ ā”‚ ā””ā”€ā”€ markup5ever v0.9.0
    ā”‚ ā”‚ ā”œā”€ā”€ žurnāla versija 0.4.8 (*)
    ā”‚ ā”‚ ā”œā”€ā”€ phf v0.7.24
    ā”‚ ā”‚ ā”‚ ā””ā”€ā”€ phf_shared v0.7.24
    ā”‚ ā”‚ ā”‚ ā”œā”€ā”€ siphasher v0.2.3
    ā”‚ ā”‚ ā”‚ ā””ā”€ā”€ unicase v1.4.2
    ā”‚ ā”‚ ā”‚ [bÅ«vējuma atkarÄ«bas] ā”‚ ā”‚ ā”‚ ā””ā”€ā”€ versijas_pārbaude v0.1.5
    ...

  • Lietojumprogrammām, kas nav saistÄ«tas ar std ("#![no_std]"), asinhronās programmÄ“Å”anas paņēmienu atbalsts tiek Ä«stenots, pamatojoties uz funkciju "async", asinhrono pārvietoÅ”anas bloku { ... } un operatoru ".await", kas vienkārÅ”ot nebloķējoÅ”o apdarinātāju galvenās komandu plÅ«smas rakstÄ«Å”anu.
  • Parsētājam ir pievienots atbalsts paplaÅ”ināmas moduļu hierarhijas definÄ«cijas shēmai. Piemēram, Ŕī konstrukcija neradÄ«s kļūdu, neskatoties uz faktisko moduļa "foo/bar/baz.rs" neesamÄ«bu (konstrukts joprojām ir semantiski nederÄ«gs un var izraisÄ«t kļūdu, taču izmaiņas var redzēt un parsēt vietnē makro un nosacÄ«juma apkopoÅ”anas lÄ«menis):

    #[cfg(FALSE)] mod foo {
    mod bar {
    mod baz;
    }
    }

  • Rustc kompilators ir pievienojis iespēju izmantot karodziņu ā€œ-C codegen-unitsā€ inkrementālā režīmā. Catch_unwind ievieÅ”ana ir pārveidota tā, lai tā neietekmētu veiktspēju, ja attÄ«Å”anas process ir atspējots un netiek pieļauti izņēmumi.
  • 64. lÄ«meņa atbalsts ir nodroÅ”ināts platformām aarch64-unknown-none, aarch64-unknown-none-softfloat, arm86-apple-tvos un x64_XNUMX-apple-tvos. TreÅ”ais lÄ«menis ietver pamata atbalstu, taču bez automatizētas testÄ“Å”anas un oficiālo bÅ«vējumu publicÄ“Å”anas.
  • Jauna API daļa ir pārcelta uz stabilo kategoriju, tostarp stabilizētā
    PathBuf::ar_kapacitāti,
    PathBuf::kapacitāte,
    PathBuf::clear,
    PathBuf::rezerve,
    PathBuf::rezerves_precīzs,
    PathBuf::shrink_to_fit,
    {f32|f64}::to_int_unchecked,
    Izkārtojums::līdzināt_uz,
    Izkārtojums::pad_to_align,
    Izkārtojums::masīvs un
    Izkārtojums::paplaŔināt.

  • Standarta bibliotēkas paplaÅ”inātās funkcijas:
    • Pievienots Ä«paÅ”s "vec![]" variants, kas tieÅ”i atspoguļots Vec::new(), ļaujot "vec![]" lietot kontekstā, nevis konstantes.
    • IezÄ«mes ievieÅ”ana (impl) ir pievienota, lai pārvērstu::Infallible Saputrot.
    • OsString ievieÅ” viedos norādes DerefMut Šø IndexMut, atgriežot "&mut OsStr".
    • Pievienots Unicode 13 atbalsts.
    • ÄŖstenots programmā String No<&mut str>.
    • IoSlice ievieÅ” iezÄ«mi kopija.
    • Vec ieviests No<[T; N]>.
    • proc_macro::LexError ievieÅ” fmt::Display un Error.
  • AtribÅ«ts ā€œconstā€, kas nosaka, vai to var izmantot jebkurā kontekstā, nevis konstantes, tiek izmantots metodēs from_le_bytes, to_le_bytes, from_be_bytes, to_be_bytes, from_ne_bytes un to_ne_bytes visiem veselu skaitļu veidiem.
  • Pievienots atbalsts statisku bibliotēku Ä£enerÄ“Å”anai ".a" formātā, nevis ".lib" formātā GNU platformām operētājsistēmā Windows.
  • LLVM minimālās prasÄ«bas ir paaugstinātas lÄ«dz LLVM 8. versijai.

Avots: opennet.ru

Pievieno komentāru