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

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

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

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

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

  • නිඛිල නිරූපණ සහිත ගණනය කිරීම් වලදී ("#[repr(Int)]" ගුණාංගය), ගණන් කිරීමේ ක්‍ෂේත්‍ර අඩංගු වුවද, වෙනස් කොට සැලකීමේ (ගණනයේ ප්‍රභේද අංකය) පැහැදිලි ඇඟවීමට ඉඩ දෙනු ලැබේ. #[repr(u8)] enum Foo {A(u8), # discriminant 0 B(i8), # discriminant 1 C(bool) = 42, # discriminant 42 }
  • එක් කරන ලද ශ්‍රිත හරය::hint::black_box එය හුදෙක් ලැබුණු අගය ලබා දෙයි. මෙම ශ්‍රිතය යමක් කරන බව සම්පාදකයා සිතන බැවින්, කේත කාර්ය සාධන පරීක්‍ෂණය සිදු කරන විට හෝ උත්පාදනය කරන ලද යන්ත්‍ර කේතය පරීක්ෂා කිරීමේදී (සම්පාදකයා විසින් කේතය භාවිත නොකළ බව නොසලකන ලෙස සහ එය ඉවත් කිරීමට) ලූප සඳහා සම්පාදක ප්‍රශස්තිකරණය අක්‍රිය කිරීමට black_box ශ්‍රිතය භාවිතා කළ හැක. උදාහරණයක් ලෙස, පහත උදාහරණයේ, black_box(v.as_ptr()) දෛශිකය v භාවිතා නොකරන බව සිතීම සම්පාදකයා වළක්වයි. std භාවිතා කරන්න::hint::black_box; fn push_cap(v: &mut Vec) { for i in 0..4 {v.push(i); black_box(v.as_ptr()); } }
  • "කාර්ගෝ" පැකේජ කළමනාකරු "ඉවත් කරන්න" විධානය ලබා දෙයි, එය ඔබට විධාන රේඛාවෙන් Cargo.toml මැනිෆෙස්ටයෙන් පරායත්තතා ඉවත් කිරීමට ඉඩ සලසයි.
  • API හි නව කොටසක් ස්ථායී කාණ්ඩයට ගෙන ගොස් ඇත, ගතිලක්ෂණවල ක්‍රම සහ ක්‍රියාත්මක කිරීම් ස්ථායීකරණය කර ඇත:
    • proc_macro::Span::source_text
    • u*::{checked_add_signed, overflowing_add_signed, saturating_add_signed, wrapping_add_signed}
    • i*::{checked_add_unsigned, overflowing_add_unsigned, saturating_add_unsigned, wrapping_add_unsigned}
    • i*::{checked_sub_unsigned, overflowing_sub_unsigned, saturating_sub_unsigned, wrapping_sub_unsigned}
    • BTreeSet::{පළමු, අවසාන, pop_first, pop_last}
    • BTreeMap::{first_key_value, last_key_value, first_entry, last_entry, pop_first, pop_last}
    • WASI භාවිතා කරන විට stdio අගුළු වර්ග සඳහා AsFd ක්‍රියාත්මක කිරීම් එක් කරන්න.
    • impl TryFrom > පෙට්ටිය සඳහා<[T; N]>
    • core::hint::black_box
    • කාලසීමාව::try_from_secs_{f32,f64}
    • විකල්පය:: unzip
    • std::os::fd
  • සැකිලි තුළ "..X" සහ "..=X" පරාසයන් ඉඩ දෙනු ලැබේ.
  • rustc සම්පාදකයේ ඉදිරිපස අන්තය සහ LLVM පසුබිම ගොඩනඟන විට, ලැබෙන කේතයේ කාර්ය සාධනය වැඩි කිරීමට සහ මතක පරිභෝජනය අඩු කිරීමට LTO (Link Time Optimization) සහ BOLT (Binary Optimization සහ Layout Tool) ප්‍රශස්තිකරණ මාතයන් භාවිතා කරයි.
  • armv5te-none-eabi සහ thumbv5te-none-eabi වේදිකා සඳහා XNUMX මට්ටමේ සහාය ක්‍රියාත්මක කරන ලදී. තුන්වන මට්ටම මූලික සහාය අදහස් කරයි, නමුත් ස්වයංක්‍රීය පරීක්ෂාවකින් තොරව, නිල ගොඩනැගීම් ප්‍රකාශයට පත් කිරීම සහ කේතය ගොඩනැගීමේ හැකියාව පරීක්ෂා කිරීම.
  • macOS Generic Libraries වෙත සම්බන්ධ කිරීම සඳහා සහය එක් කරන ලදී.

මීට අමතරව, රස්ට් භාෂාවේ (gccrs) ඉදිරිපස සම්පාදකයේ GCC කේත පදනමේ ඇතුළත් කිරීම අපට සටහන් කළ හැකිය. ඉදිරිපස කොටස GCC 13 ශාඛාවේ ඇතුළත් කර ඇති අතර එය 2023 මැයි මාසයේදී නිකුත් කෙරේ. GCC 13 සමඟින් පටන් ගෙන, LLVM වර්ධනයන් භාවිතයෙන් සාදන ලද rustc සම්පාදකය ස්ථාපනය කිරීමේ අවශ්‍යතාවයකින් තොරව Rust වැඩසටහන් සම්පාදනය කිරීමට සම්මත GCC මෙවලම් කට්ටලය භාවිතා කළ හැක. GCC 13 හි රස්ට් ක්‍රියාත්මක කිරීම බීටා තත්වයේ පවතිනු ඇත, පෙරනිමියෙන් සබල නොවේ.

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

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