රස්ට් 1.57 ක්‍රමලේඛන භාෂා නිකුතුව

Mozilla ව්‍යාපෘතිය විසින් ආරම්භ කරන ලද නමුත් දැන් ස්වාධීන ලාභ නොලබන සංවිධානයක් වන Rust Foundation හි අනුග්‍රහය යටතේ සංවර්ධනය කරන ලද පද්ධති ක්‍රමලේඛන භාෂාව Rust 1.57 නිකුත් කිරීම ප්‍රකාශයට පත් කර ඇත. භාෂාව මතක ආරක්ෂාව කෙරෙහි අවධානය යොමු කරයි, ස්වයංක්‍රීය මතක කළමනාකරණය සපයයි, සහ කසළ එකතු කරන්නෙකු හෝ ධාවන කාලය භාවිතා නොකර ඉහළ කාර්ය සමාන්තරකරණයක් ලබා ගැනීමට මාධ්‍යයන් සපයයි (ධාවන කාලය සම්මත පුස්තකාලයේ මූලික ආරම්භ කිරීම සහ නඩත්තු කිරීම දක්වා අඩු වේ).

රස්ට්ගේ ස්වයංක්‍රීය මතක කළමනාකරණය පොයින්ටර් හසුරුවන විට ඇති වන දෝෂ ඉවත් කරන අතර අඩු මට්ටමේ මතක උපාමාරු වලින් පැන නගින ගැටළු වලින් ආරක්ෂා කරයි, එනම් මතක කලාපයකට නිදහස් වූ පසු ප්‍රවේශ වීම, null pointer dereferences, buffer overruns යනාදිය. පුස්තකාල බෙදා හැරීම, එකලස් කිරීම සහතික කිරීම සහ පරායත්තතා කළමනාකරණය කිරීම සඳහා, ව්‍යාපෘතිය Cargo pack manager සංවර්ධනය කරයි. crates.io ගබඩාව පුස්තකාල සත්කාරකත්වය සඳහා සහය දක්වයි.

ප්රධාන නවෝත්පාදන:

  • "පැනික්!" මැක්රෝ භාවිතය ස්ථාවර කර ඇත. "const fn" ප්‍රකාශයන් වැනි සම්පාදනය කිරීමේදී නිර්මාණය කරන ලද සන්දර්භයන් තුළ. අතිරේකව, "පැනික්!" භාවිතා කිරීමට අමතරව const ප්‍රකාශන මගින් "අසත්‍ය!" සාර්ව භාවිතා කිරීමට ඉඩ ලබා දේ. සහ තවත් සමහර සම්මත පුස්තකාල API. ස්ථායීකරණය තවමත් සම්පූර්ණ හැඩතල ගැන්වීමේ යටිතල ව්‍යුහය ආවරණය කර නැත, එබැවින් එහි වත්මන් ස්වරූපයෙන් "පැනික්!" මැක්‍රෝ ස්ථිතික නූල් (panic!(“...")) හෝ ආදේශ කරන විට "&str" තනි අන්තරාල අගයක් සමඟ පමණක් භාවිතා කළ හැක (panic!("{}", a)), එය ආදේශ කිරීමට සීමා විය යුතුය "{ }" පිරිවිතර සහ වෙනත් වර්ග ආකෘතිකරණය නොකර. අනාගතයේදී, නියත සන්දර්භයන් තුළ මැක්‍රෝස්වල අදාළත්වය පුළුල් වනු ඇත, නමුත් ස්ථායීකෘත හැකියාවන් සම්පාදනය කිරීමේ අදියරේදී තහවුරු කිරීමේ චෙක්පත් සිදු කිරීමට ප්‍රමාණවත් වේ: const _: () = assert!(std::mem::size_of::() == 64 ); const _: () = assert!(std::mem::size_of::() == 8);
  • භාණ්ඩ පැකේජ කළමනාකරු "dev", "release", "test" සහ "bench" වලට සීමා නොවී, අත්තනෝමතික නම් සහිත පැතිකඩ භාවිතා කිරීමට ඉඩ දෙයි. උදාහරණයක් ලෙස, අවසාන නිෂ්පාදන එකලස් කිරීම් උත්පාදනය කරන විට පමණක් සම්බන්ධ කිරීමේ අදියරේදී (LTO) ප්‍රශස්තකරණය සක්‍රීය කිරීමට, ඔබට Cargo.toml හි “නිෂ්පාදන” පැතිකඩක් සාදා එයට “lto = true” ධජය එක් කළ හැකිය. කෙසේ වෙතත්, ඔබගේම පැතිකඩ නිර්වචනය කිරීමේදී, ඔබ විසින් පෙරනිමි සැකසුම් උරුම කර ගැනීමට පවතින පැතිකඩක් සඳහන් කළ යුතුය. පහත උදාහරණය "lto = true" ධජය ඇතුළත් කිරීමෙන් "නිදහස්" පැතිකඩ සම්පූර්ණ කරන "නිෂ්පාදන" පැතිකඩක් නිර්මාණය කරයි. “--profile production” විකල්පය සමඟ භාණ්ඩ ඇමතීමෙන් පැතිකඩම සක්‍රිය කර ඇති අතර, එකලස් කිරීමේ පුරාවස්තු “ඉලක්ක/නිෂ්පාදනය” නාමාවලියෙහි තැන්පත් කරනු ලැබේ. [profile.production] inherits = "නිදහස් කිරීම" lto = true
  • Vec, String, HashMap, HashSet සහ VecDeque වර්ග සඳහා try_reserve භාවිතය ස්ථාවර කර ඇති අතර, මතකය වෙන් කිරීමේ මෙහෙයුම් වල සංඛ්‍යාතය අඩු කිරීමට සහ මඟ හැරීම සඳහා දී ඇති වර්ගයක යම් මූලද්‍රව්‍ය සංඛ්‍යාවක් සඳහා කල්තියා ඉඩ වෙන් කරවා ගැනීමට ඔබට ඉඩ සලසයි. මතකය නොමැතිකම හේතුවෙන් මෙහෙයුම අතරතුර කඩා වැටේ.
  • "m!{ .. }.method()" සහ "m!{ .. }?" වැනි ප්‍රකාශනවල රැලි සහිත වරහන් සහිත මැක්‍රෝස් සඳහන් කිරීමට එයට අවසර ඇත.
  • ගොනුව::read_to_end සහ read_to_string ශ්‍රිතයන් ක්‍රියාත්මක කිරීම ප්‍රශස්ත කර ඇත.
  • යුනිකෝඩ් පිරිවිතර සඳහා සහය 14.0 අනුවාදයට යාවත්කාලීන කර ඇත.
  • ප්‍රතිලාභ අගය නොසලකා හැරියහොත් අනතුරු ඇඟවීමක් කිරීමට "#[අනිවාර්‍යෙන්ම_භාවිතය]" ලෙස සලකුණු කර ඇති ශ්‍රිත සංඛ්‍යාව පුළුල් කරන ලදී, එය ශ්‍රිතයක් නව අගයක් ලබා දෙනවාට වඩා අගයන් වෙනස් කරයි යැයි උපකල්පනය කිරීමෙන් සිදුවන දෝෂ හඳුනා ගැනීමට උපකාරී වේ.
  • libgccjit භාවිතයෙන් කේත උත්පාදනය සඳහා පර්යේෂණාත්මක පසුබිමක් එක් කරන ලදී.
  • API හි නව කොටසක් ස්ථායී කාණ්ඩයට ගෙන ගොස් ඇත, ගතිලක්ෂණවල ක්‍රම සහ ක්‍රියාත්මක කිරීම් ස්ථායීකරණය කර ඇත:
    • [ටී; N]:: ලෙස_mut_slice
    • [ටී; N]:: පෙත්තක් ලෙස
    • එකතු කිරීම්::TryReserveError
    • HashMap :: try_reserve
    • HashSet:: try_reserve
    • තන්තුව:: try_reserve
    • තන්තුව:: try_reserve_exact
    • Vec:: try_reserve
    • Vec:: try_reserve_exact
    • VecDeque:: try_reserve
    • VecDeque:: try_reserve_exact
    • පුනරාවර්තකය:: map_while
    • iter::MapWhile
    • proc_macro:: is_available
    • විධානය::get_program
    • විධානය::get_args
    • විධානය::get_envs
    • විධානය::get_current_dir
    • CommandArgs
    • CommandEnvs
  • නියතයන් වෙනුවට ඕනෑම සන්දර්භයක එය භාවිතා කළ හැකිද යන්න තීරණය කරන “const” ගුණාංගය, ශ්‍රිත ඉඟිය::unreachable_unchecked භාවිතා කරයි.
  • armv6k-nintendo-3ds, armv7-unknown-linux-uclibceabihf, m68k-unknown-linux-gnu, aarch64-kmc-solid_asp3, armv7a-kmc-solid_asp3-eabi සහ armcv7a- සඳහා තුන්වන මට්ටමේ සහාය ක්‍රියාත්මක කර ඇත. solid_asp3-eabihf වේදිකා. තුන්වන මට්ටමට මූලික සහාය ඇතුළත් වේ, නමුත් ස්වයංක්‍රීය පරීක්ෂාවකින් තොරව, නිල ගොඩනැගීම් ප්‍රකාශනය කිරීම හෝ කේතය ගොඩනගා ගත හැකිද යන්න පරීක්ෂා කිරීම.

මූලාශ්රය: opennet.ru

අදහස් එක් කරන්න