රස්ට් ක්‍රමලේඛන භාෂා නිකුතුව 2021 (1.56)

මොසිල්ලා ව්‍යාපෘතිය විසින් ආරම්භ කරන ලද නමුත් දැන් ස්වාධීන ලාභ නොලබන සංවිධානයක් වන රස්ට් පදනමේ අනුග්‍රහය යටතේ සංවර්ධනය කරන ලද පද්ධති ක්‍රමලේඛන භාෂාව Rust 1.56 නිකුත් කිරීම ප්‍රකාශයට පත් කර ඇත. සාමාන්‍ය අනුවාද අංකයට අමතරව, නිකුතුව Rust 2021 ලෙසද නම් කර ඇති අතර පසුගිය වසර තුන තුළ යෝජිත වෙනස්කම්වල ස්ථායීතාවයක් සනිටුහන් කරයි. Rust 2021 ඉදිරි වසර තුන තුළ ක්‍රියාකාරීත්වය වැඩි කිරීමේ පදනම ලෙස ද සේවය කරනු ඇත, පසුගිය වසර තුන තුළ Rust 2018 නිකුත් කිරීම භාෂාවේ සංවර්ධනය සඳහා පදනම වූ ආකාරය හා සමානයි.

ගැළපුම පවත්වා ගැනීම සඳහා, සංවර්ධකයින්ට ඔවුන්ගේ වැඩසටහන් වල "2015", "2018" සහ "2021" ලේබල් භාවිතා කළ හැකි අතර, Rust හි තෝරාගත් සංස්කරණවලට අනුරූප වන භාෂා රාජ්‍ය පෙති වලට වැඩසටහන් සම්බන්ධ කිරීමට ඉඩ සලසයි. නොගැලපෙන වෙනස්කම් වෙන් කිරීම සඳහා සංස්කරණ හඳුන්වා දී ඇති අතර "[පැකේජය]" කොටසේ "සංස්කරණය" ක්ෂේත්‍රය හරහා භාණ්ඩ පැකේජවල පාර-දත්ත තුළ වින්‍යාස කර ඇත. උදාහරණයක් ලෙස, "2018" සංස්කරණයට 2018 අවසානය වන විට ස්ථාවර වූ ක්‍රියාකාරීත්වය ඇතුළත් වන අතර ගැළපුම නොබිඳෙන සියලු වෙනස්කම් ද ආවරණය කරයි. 2021 සංස්කරණයට වත්මන් 1.56 නිකුතුවේ යෝජනා කර ඇති සහ අනාගත ක්‍රියාත්මක කිරීම සඳහා අනුමත කරන ලද අන්තර් ක්‍රියාකාරීත්වය බිඳීමේ විශේෂාංග ඇතුළත් වේ. භාෂාවට අමතරව, සංස්කාරකවරුන් මෙවලම් සහ ලේඛනවල තත්ත්වය ද සැලකිල්ලට ගනී.

රස්ට් 2021 හි වාර්තා වූ ප්‍රධාන නොගැලපීම්:

  • වසා දැමීම් තුළ වෙනම ග්‍රහණය කිරීම - වසා දැමීම්වලට දැන් සම්පූර්ණ හැඳුනුම්කාරකය වෙනුවට තනි ක්ෂේත්‍ර නාම ග්‍රහණය කළ හැක. උදාහරණයක් ලෙස, "|| ax + 1" මගින් "a" වෙනුවට "ax" පමණක් අල්ලා ගනු ඇත.
  • අරා සඳහා IntoIterator ලක්ෂණය: array.into_iter() මඟින් ඔබට යොමු මඟින් නොව අගයන් මඟින් අරා මූලද්‍රව්‍ය හරහා පුනරාවර්තනය කිරීමට ඉඩ සලසයි.
  • macro_rules හි "|" ප්‍රකාශන සැකසීම වෙනස් කර ඇත (බූලියන් OR) රටා තුළ - ගැලපීම් වල ":pat" විශේෂණය දැන් "A | බී".
  • භාණ්ඩ පැකේජ කළමණාකරුට පෙරනිමියෙන් විශේෂාංග නිරාකරණයේ දෙවන අනුවාදය ඇතුළත් වේ, එය සඳහා සහය රස්ට් 1.51 හි දර්ශනය විය.
  • Prelude සම්මත පුස්තකාල මොඩියුලයට TryFrom, TryInto සහ FromIterator ලක්ෂණ එකතු කර ඇත.
  • සන්ත්‍රාසය!(..) සහ ප්‍රකාශ කරන්න!(expr, ..) මැක්‍රෝස් දැන් සෑම විටම තන්තු හැඩතල ගැන්වීමට format_args!(..) භාවිතා කරයි, println!().
  • ident#, ident»..." සහ ident'...' යන ප්‍රකාශන භාෂා වාක්‍ය ඛණ්ඩයේ වෙන් කර ඇත.
  • Bare_trait_objects සහ ellipsis_inclusive_range_patterns අනතුරු ඇඟවීම් දෝෂ වෙත ගෙන යන ලදී.

රස්ට් 1.56 හි අලුත්:

  • Cargo.toml හි, “[පැකේජය]” කොටසේ, මලකඩ-අනුවාද ක්ෂේත්‍රය එක් කර ඇත, එමඟින් ඔබට කූඩ පැකේජය සඳහා රස්ට් හි අවම සහාය දක්වන අනුවාදය තීරණය කළ හැකිය. වත්මන් අනුවාදය නිශ්චිත පරාමිතියට නොගැලපේ නම්, Cargo දෝෂ පණිවිඩයක් සමඟ වැඩ කිරීම නවත්වනු ඇත.
  • "බන්ධන @ රටා" ප්‍රකාශන භාවිතයෙන් රටා ගැළපෙන විට, අමතර බන්ධන සඳහන් කිරීම සඳහා සහය සපයනු ලැබේ (උදාහරණයක් ලෙස, "matrix @ Matrix {row_len, .. } = get_matrix();").
  • API හි නව කොටසක් ස්ථායී කාණ්ඩයට ගෙන ගොස් ඇත, ගතිලක්ෂණවල ක්‍රම සහ ක්‍රියාත්මක කිරීම් ස්ථායීකරණය කර ඇත:
    • std::os::unix::fs::chroot
    • අනාරක්ෂිත Cell::raw_get
    • BufWriter::කොටස්_තුල
    • core::panic::{UnwindSafe, RefUnwindSafe, AssertUnwindSafe}
    • Vec::shrink_to
    • තන්තුව::shrink_to
    • OsString::shrink_to
    • PathBuf::shrink_to
    • BinaryHeap::shrink_to
    • VecDeque::shrink_to
    • HashMap::shrink_to
    • HashSet::shrink_to
  • නියතයන් වෙනුවට ඕනෑම සන්දර්භයක භාවිතා කිරීමේ හැකියාව තීරණය කරන “const” ගුණාංගය ශ්‍රිතවල භාවිතා වේ.
    • std::mem:: transmute
    • [T]::පළමු
    • [T]::split_first
    • [T]:: අන්තිම
    • [T]::split_last
  • සම්පාදකය LLVM අනුවාදය 13 භාවිතා කිරීමට මාරු කර ඇත.
  • aarch64-apple-ios-sim වේදිකාව සඳහා දෙවන මට්ටමේ සහය ක්‍රියාත්මක කර ඇති අතර powerpc-unknown-freebsd සහ riscv32imc-esp-espidf වේදිකා සඳහා තෙවන මට්ටමක් ක්‍රියාත්මක කර ඇත. තෙවන මට්ටමට මූලික සහාය ඇතුළත් වේ, නමුත් ස්වයංක්‍රීය පරීක්ෂණ නොමැතිව, නිල ගොඩනැගීම් ප්‍රකාශනය කිරීම සහ කේත ගොඩනැගීමේ හැකියාව සත්‍යාපනය කිරීම.

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

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

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

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