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

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

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

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

  • පරායත්ත පාරදත්ත ලබා ගත හැකි වූ විගස, එහි සම්පාදනය සම්පූර්ණ වන තෙක් බලා නොසිට, පරායත්ත කූඩ පැකේජයක් ගොඩනැගීම ආරම්භ වන නල මාර්ගගත සම්පාදන මාදිලියක් (නල මාර්ගගත) එක් කරන ලදී. පැකේජයක් සම්පාදනය කිරීමේදී, ඔබට සියලු පරායත්තයන් එකලස් කර තිබීම අවශ්‍ය නොවේ, ඔබට වර්ග, පරායත්තතා සහ අපනයනය කරන ලද අයිතම ඇතුළත් පාර-දත්ත නිර්වචනය කිරීමට අවශ්‍ය වේ. සම්පාදන ක්‍රියාවලියේදී පාරදත්ත ලබා ගත හැක, එබැවින් සම්බන්ධිත පැකේජ දැන් බොහෝ කලකට පෙර සම්පාදනය කළ හැක. තනි පැකේජ තැනීමේදී, යෝජිත මාදිලිය කාර්ය සාධනයට බලපාන්නේ නැත, නමුත් ගොඩනැගීම ශාඛා පරායත්තතා සහිත පැකේජ ආවරණය කරයි නම්, සමස්ත ගොඩනැගීමේ කාලය 10-20% කින් අඩු කළ හැකිය;
  • කාර්යයන් වැරදි ලෙස භාවිතා කිරීම හඳුනා ගැනීම සහතික කරයි std::mem::uninitialized и std::mem::zeroed. උදාහරණයක් ලෙස, std::mem::uninitialized ඉක්මනින් arrays සෑදීම සඳහා පහසු වේ, නමුත් එය ආරම්භ කර ඇති බව පෙනෙන නිසා එය සම්පාදකය නොමඟ යවයි, නමුත් යථාර්ථයේ දී අගය නොසැලකිලිමත් ලෙස පවතී. Mem::uninitialized ශ්‍රිතය දැනටමත් අත්හරින ලද ලෙස සලකුණු කර ඇති අතර ඒ වෙනුවට අතරමැදි වර්ගයක් භාවිතා කිරීම නිර්දේශ කෙරේ සමහරවිට Unit. mem::zeroed සඳහා, මෙම ශ්‍රිතය ශුන්‍ය අගයන් පිළිගත නොහැකි වර්ග සමඟ ගැටලු ඇති කළ හැක.

    නිර්වචනය නොකළ හැසිරීම් හඳුනා ගැනීමට උපකාර කිරීම සඳහා, නව නිකුතුව මගින් සම්පාදකයට ලින්ට් චෙක්පතක් එක් කරයි, එය mem::uninitialized හෝ mem::zeroed සමඟ ඇති ගැටළු හඳුනා ගනී. උදාහරණයක් ලෙස, ඔබට දැන් mem::uninitialized හෝ mem::zeroed වර්ග &T සහ Box‹T› භාවිතා කිරීමට උත්සාහ කිරීමේදී දෝෂයක් ලැබේ, එය ශුන්‍ය අගයන් පිළිගත නොහැකි දර්ශක වස්තු නියෝජනය කරයි;

  • කූඩ පැකේජ යල් පැන ගිය ඒවා ලෙස සලකුණු කිරීමට සහ අනාගත මකාදැමීමට කාලසටහන් කිරීමට ඉඩ දීම සඳහා “#[අත් හරින ලද]” ගුණාංගය පුළුල් කර ඇත. Rust 1.38 වන විට, මෙම ගුණාංගය macros සඳහාද භාවිතා කළ හැක;
  • උපමොඩියුලවල "#[ගෝලීය_ඇලෝකේටර්]" ගුණාංගය භාවිතා කිරීමේ හැකියාව එක් කරන ලදී;
  • එකතු කරන ලද කාර්යය std:: any::type_name, නිදොස් කිරීමේ අරමුණු සඳහා ප්‍රයෝජනවත් විය හැකි, වර්ගයෙහි නම සොයා ගැනීමට ඔබට ඉඩ සලසයි. උදාහරණයක් ලෙස, වැඩසටහන ක්‍රියාත්මක කිරීමේදී ඔබට ශ්‍රිතය හැඳින්වූයේ කුමන වර්ගය සඳහාද යන්න සොයාගත හැකිය:

    fn gen_value‹T: Default>() -› T {
    println!("{} හි අවස්ථාවක් ආරම්භ කිරීම", std::any::type_name::‹T›());
    පෙරනිමි::default()
    }

    fn ප්‍රධාන() {
    ඉඩ _: i32 = gen_value(); # "i32" මුද්‍රණය කෙරේ
    ඉඩ _: String = gen_value(); # "alloc::string::String" මුද්‍රණය කරනු ඇත
    }

  • සම්මත පුස්තකාලයේ විස්තීරණ කාර්යයන්:
    • පෙත්ත::{concat, connect, join} දැන් &T ට අමතරව &[T] අගය ගත හැක;
    • "*const T" සහ "*mut T" දැන් ලකුණුකරය ක්‍රියාත්මක කරයි ::Unpin;
    • "Arc‹[T]›" සහ "Rc‹[T]›" දැන් FromIterator‹T›;
    • iter::{StepBy, Peekable, Take} දැන් DoubleEndedIterator ක්‍රියාත්මක කරන්න.
    • ascii::EscapeDefault ක්ලෝන් සහ ඩිස්ප්ලේ ක්‍රියාත්මක කරයි.
  • API හි නව කොටසක් ස්ථායී කර ඇති ක්‍රම ඇතුළුව ස්ථායී කාණ්ඩයට මාරු කර ඇත
    • ‹*const T›::cast, ‹*mut T›::cast,
    • කාලසීමාව::as_secs_f{32|64},
    • කාල සීමාව::div_duration_f{32|64},
    • කාලසීමාව::div_f{32|64},
    • කාලය::from_secs_f{32|64},
    • කාලසීමාව::mul_f{32|64},
    • ඉතිරි කොටස සමඟ බෙදීමේ මෙහෙයුම්
      සියලුම පූර්ණ සංඛ්‍යා ප්‍රාථමික සඳහා div_euclid සහ rem_euclid;

  • භාණ්ඩ පැකේජ කළමණාකරු තුළ විවිධ විශේෂාංග සක්‍රීය කිරීම සඳහා “--විශේෂාංග” විකල්පය කිහිප වතාවක් සඳහන් කිරීම සඳහා සහය එක් කරන ලදී;
  • සම්පාදකය තෙවනුව සපයයි මට්ටමට aarch64-uwp-windows-msvc, i686-uwp-windows-gnu, i686-uwp-windows-msvc, x86_64-uwp-windows-gnu, x86_64-uwp-windows-gnu, x7_7-uwp-windows-known armuns-msvx32 ඉලක්ක වේදිකා සඳහා සහය -gnueabi, armvXNUMX-unknown-linux-musleabi, hexagon-unknown-linux-musl සහ riscvXNUMXi-unknown-none-elf. තෙවන මට්ටමට මූලික සහාය ඇතුළත් වේ, නමුත් ස්වයංක්‍රීය පරීක්ෂණ සහ නිල ගොඩනැගීම් ප්‍රකාශනයකින් තොරව.

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

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