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

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

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

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

  • Crates.io public registry සමඟ සහජීවනයෙන් පැවතිය හැකි විකල්ප පැකේජ රෙජිස්ට්‍රාර් සමඟ වැඩ කිරීමට Cargo පැකේජ කළමනාකරු මෙවලම් එකතු කර ඇත. උදාහරණයක් ලෙස, හිමිකාර යෙදුම් සංවර්ධකයින්ට දැන් Cargo.toml හි පරායත්තතා ලැයිස්තුගත කිරීමේදී භාවිතා කළ හැකි ඔවුන්ගේ පුද්ගලික ලේඛනය භාවිතා කළ හැකි අතර, ඔවුන්ගේ නිෂ්පාදන සඳහා crates.io ට සමාන අනුවාද ආකෘතියක් යෙදිය හැකි අතර, කූඩ දෙකටම පරායත්තතා යොමු කරන්න. io සහ ඔබේම රෙජිස්ට්රි වෙත.

    ~/.cargo/config වෙත බාහිර ලේඛනයක් එක් කිරීමට
    "[registries]" කොටසේ "my-registry" යන නව විකල්පය සපයා ඇති අතර, "[පරාධීනතා]" කොටසේ Cargo.toml හි පරායත්තතා වල බාහිර ලේඛනය සඳහන් කිරීමට "වෙනත්-කූඩ" විකල්පයක් එක් කර ඇත. අතිරේක රෙජිස්ට්‍රියකට සම්බන්ධ වීමට, සත්‍යාපන ටෝකනය ~/.cargo/credentials ගොනුවේ තබා විධානය ක්‍රියාත්මක කරන්න.
    "භාණ්ඩ පිවිසුම --registry=my-registry" සහ පැකේජයක් ප්‍රකාශ කිරීමට -
    "භාණ්ඩ ප්‍රකාශනය -registry=my-registry";

  • “?” ක්‍රියාකරු භාවිතා කිරීම සඳහා සම්පූර්ණ සහය එක් කරන ලදී. doctests තුළ, ඔබට ලේඛනවල උදාහරණ කේතය පරීක්ෂණ ලෙස භාවිතා කිරීමට ඉඩ සලසයි. කලින් ක්රියාකරු
    "?" "fn main()" ශ්‍රිතය හෝ "#[test]" ශ්‍රිතයන් තුළ පමණක් පරීක්ෂණ ක්‍රියාත්මක කිරීමේදී දෝෂ හැසිරවීමට භාවිතා කළ හැක;

  • ක්‍රියාපටිපාටික මැක්‍රෝ භාවිතයෙන් නිර්වචනය කර ඇති අභිරුචි උපලක්ෂණවලදී, අත්තනෝමතික ටෝකන කට්ටල භාවිතා කළ හැකිය (“#[attr($tokens)]”, “#[attr[$tokens]] සහ #[attr{$tokens}]”) . මීට පෙර, මූලද්‍රව්‍ය තන්තු වචන භාවිතයෙන් ගසක/ප්‍රත්‍යාවර්තක ආකාරයෙන් පමණක් සඳහන් කළ හැකි විය, උදාහරණයක් ලෙස “#[foo(bar, baz(quux, foo = “bar”))]”, නමුත් දැන් ගණන් බැලීම් (' #[පරාසය(0. .10)]') සහ "#[බන්ධිත(T: MyTrait)]" වැනි ඉදිකිරීම්;
  • ට්‍රයිෆ්‍රොම් සහ ට්‍රයිඉන්ටෝ ලක්‍ෂණ ස්ථායී කර ඇත, දෝෂ හැසිරවීම සමඟ වර්ග පරිවර්තනයට ඉඩ සලසයි. උදාහරණයක් ලෙස, integer ආකාරයේ from_be_bytes වැනි ක්‍රම ආදානය ලෙස array භාවිතා කරයි, නමුත් දත්ත බොහෝ විට Slice වර්ගයකින් පැමිණේ, සහ arrays සහ slices අතර පරිවර්තනය කිරීම අතින් සිදු කිරීම ගැටළු සහගත වේ. නව ලක්ෂණ ආධාරයෙන්, නිශ්චිත මෙහෙයුම .try_into() වෙත ඇමතුමක් හරහා පියාසර කළ හැක, උදාහරණයක් ලෙස, "Lum = u32::from_be_bytes(slice.try_into()?)". සෑම විටම සාර්ථක වන පරිවර්තන සඳහා (උදාහරණයක් ලෙස, u8 වර්ගය සිට u32 දක්වා), විනිවිද පෙනෙන භාවිතයට ඉඩ දීම සඳහා නොවරදින දෝෂ වර්ගයක් එක් කර ඇත.
    "From" හි පවතින සියලුම ක්‍රියාත්මක කිරීම් සඳහා TryFrom;

  • CommandExt::before_exec ශ්‍රිතය අත්හරින ලදී, එය ෆෝක්() ඇමතුමෙන් පසුව දෙබල කරන ලද ළමා ක්‍රියාවලියක සන්දර්භය තුළ ක්‍රියාත්මක කරන ලද exec ට පෙර හසුරුවන්නක් ක්‍රියාත්මක කිරීමට ඉඩ සලසයි. එවැනි තත්වයන් යටතේ, ගොනු විස්තර සහ සිතියම්ගත මතක ප්‍රදේශ වැනි මාපිය ක්‍රියාවලියේ සමහර සම්පත් අනුපිටපත් කළ හැකි අතර, එය නිර්වචනය නොකළ හැසිරීම් සහ පුස්තකාලවල වැරදි ක්‍රියාකාරිත්වයට හේතු විය හැක.
    before_exec වෙනුවට, CommandExt::pre_exec අනාරක්ෂිත ශ්‍රිතය භාවිතා කිරීම රෙකමදාරු කරනු ලැබේ.

  • බිටු 8 සිට 64 දක්වා (උදාහරණයක් ලෙස, AtomicU8) ප්‍රමාණයේ ස්ථායීකෘත අත්සන් කළ සහ අත්සන් නොකළ පරමාණු පූර්ණ සංඛ්‍යා වර්ග මෙන්ම අත්සන් කළ වර්ග NonZeroI[8|16|32|54|128].
  • ඕනෑම::type_id, Error::type_id, slice::sort_by_cached_key, str::escape_*, str::split_ascii_whitespace, Instant::checked_[add|sub ​​ඇතුළුව, API හි නව කොටසක් ස්ථාවර ප්‍රවර්ගය වෙත ගෙන ගොස් ඇත. ] සහ SystemTime ක්‍රම ස්ථායීකරණය කර ඇත ::checked_[add|sub]. iter::from_fn සහ iter:: අනුප්‍රාප්තික ශ්‍රිත ස්ථායීකරණය කර ඇත;
  • සියලුම නිඛිල වර්ග සඳහා, checked_pow, saturating_pow, wrapping_pow සහ overflowing_pow ක්‍රම ක්‍රියාත්මක කෙරේ;
  • “-C linker-plugin-lto” ගොඩනැගීමේ විකල්පය සඳහන් කිරීමෙන් සම්බන්ධක අදියරේදී ප්‍රශස්තකරණයන් සක්‍රීය කිරීමේ හැකියාව එක් කරන ලදී (rustc LLVM බිට්කෝඩ් බවට Rust කේතය සම්පාදනය කරයි, එමඟින් LTO ප්‍රශස්තිකරණයන් යෙදිය හැක).

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

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