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

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

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

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

  • ගුණාංගය භාවිතයෙන් ව්‍යුහයන් (ව්‍යුහය) සහ ගණනය කිරීම් (විචල්‍ය බ්ලොක් සහිත enum) සලකුණු කිරීමේ හැකියාව එක් කරන ලදී "#[සම්පූර්ණ_නොවන]", කුමන එය ඉඩ අනාගතයේදී, ප්‍රකාශිත ව්‍යුහයන් සහ ගණනය කිරීම් සඳහා නව ක්ෂේත්‍ර සහ විකල්ප එක් කරන්න. උදාහරණයක් ලෙස, ප්‍රසිද්ධියේ ප්‍රකාශිත ක්ෂේත්‍ර සහිත ව්‍යුහයන් ඇති මොඩියුලවල සංවර්ධකයින්ට අනාගතයේ දී නව ක්ෂේත්‍ර එකතු කළ හැකි ව්‍යුහයන් සලකුණු කිරීමට "#[non_exhaustive]" භාවිතා කළ හැක. මේ වන තෙක්, මෙම තත්වය තුළ, ක්ෂේත්‍ර පුද්ගලිකව ප්‍රකාශ කිරීම සහ වෙනස් කළ නොහැකි ක්ෂේත්‍ර ලැයිස්තුවකට බැඳීම අතර තෝරා ගැනීමට සංවර්ධකයාට බල කෙරුනි. නව ගුණාංගය මෙම සීමාව ඉවත් කරන අතර කලින් සම්පාදනය කරන ලද බාහිර කේතය බිඳ දැමීමේ අවදානමකින් තොරව අනාගතයේදී නව ක්ෂේත්ර එකතු කිරීමට ඔබට ඉඩ සලසයි. කූඩ පැකේජවල, “ගැලපීම” කොටසේ විකල්ප ගැලපීමේ දී, අනාගත ක්ෂේත්‍ර ආවරණය කරමින් “_ => {...}” ආවරණයේ පැහැදිලි අර්ථ දැක්වීමක් අවශ්‍ය වේ, එසේ නොමැති නම් නව ක්ෂේත්‍ර එකතු කිරීමේදී දෝෂයක් පෙන්වනු ඇත.
  • එකතු කරන ලදී ක්‍රියා පටිපාටි මැක්‍රෝ මැක්!() ආකාරයේ සන්දර්භයක් තුළ ඇමතීමේ හැකියාව. උදාහරණයක් ලෙස, "expand_to_type" යනු පරිපාටිමය සාර්වයක් නම්, ඔබට දැන් "type Foo = Expand_to_type!(bar);" ලිවිය හැක.
  • "බාහිර { ... }" කුට්ටි වල එකතු කළා උදාහරණයක් ලෙස, "bang!()" macros ඇතුළුව, ක්‍රියාපටිපාටික සහ උපලක්ෂණ මැක්‍රෝ භාවිතා කිරීමේ හැකියාව:

    macro_rules! make_item { ($name:ident) => {fn $name(); } }

    බාහිර {
    කරන්න_අයිතම!(ඇල්ෆා);
    Make_item!(beta);
    }

    බාහිර "C" {
    #[මගේ_අනන්‍යතාවය_මැක්‍රෝ] fn foo ();
    }

  • මැක්රෝ වල ක්රියාත්මක කර ඇත "macro_rules!" මූලද්‍රව්‍ය ජනනය කිරීමේ හැකියාව. "macro_rules!" උත්පාදනය කරමින් ශ්‍රිත වැනි මැක්‍රෝ (“මැක්!()”) සහ උපලක්ෂණ (“#[mac]”) ආකාරයෙන් මැක්‍රෝ යන දෙකෙහිම හැකි ය.
  • $m:meta සිතියම්කරණ අංගය තුළ එකතු කළා අත්තනෝමතික ටෝකන් ගණන් කිරීමේ අගයන් සඳහා සහාය ("[TOKEN_STREAM]", "{TOKEN_STREAM}" සහ "(TOKEN_STREAM)"), උදාහරණයක් ලෙස:

    macro_rules! පිළිගන්න_මෙටා { ($m:meta) => {}}
    පිළිගන්න_මෙටා!( මගේ:: මාර්ගය );
    accept_meta!( my::path = "lit" );
    accept_meta!( my::path ( a b c ) );
    පිළිගන්න_මෙටා!( my::path [ a b c ] );
    accept_meta!( my::path { a b c } );

  • Rust 2015 මාදිලියේදී, NLL (Lexical නොවන ජීවිත කාලයන්) තාක්ෂණය භාවිතයෙන් විචල්‍යයන් ණයට ගැනීම (ණය පරීක්ෂක) පරීක්ෂා කිරීමේදී හඳුනාගත් ගැටළු සඳහා දෝෂ ප්‍රතිදානය සක්‍රීය කර ඇත. මීට පෙර, Rust 2018 මාදිලියේ ධාවනය වන විට අනතුරු ඇඟවීම් දෝෂ සමඟ ප්‍රතිස්ථාපනය විය.
    වෙනස් කිරීම Rust 2015 මාදිලිය දක්වා දීර්ඝ කිරීමෙන් පසුව, අවසානයේ සංවර්ධකයින්ට හැකි විය බේරෙන්න පැරණි ණය පරීක්ෂකගෙන්.

    ණයට ගත් විචල්‍යවල ආයු කාලය සැලකිල්ලට ගැනීම සඳහා නව යාන්ත්‍රණයක් මත පදනම් වූ සත්‍යාපන පද්ධතිය පැරණි සත්‍යාපන කේතය මගින් අවධානයට ලක් නොවූ ගැටළු කිහිපයක් හඳුනා ගැනීමට හැකි වූ බව අපි සිහිපත් කරමු. එවැනි චෙක්පත් සඳහා දෝෂ ප්‍රතිදානය කලින් ක්‍රියාකාරී කේතය සමඟ ගැළපීමට බලපෑ හැකි බැවින්, දෝෂ වෙනුවට අනතුරු ඇඟවීම් මුලින් නිකුත් කරන ලදී.

  • නියතයන් වෙනුවට ඕනෑම සන්දර්භයක එය භාවිතා කිරීමේ හැකියාව තීරණය කරන “const” ගුණාංගය is_power_of_two ශ්‍රිතය සඳහා (අත්සන් නොකළ පූර්ණ සංඛ්‍යා සඳහා) භාවිතා වේ.
  • API හි නව කොටසක් todo!() macro සහ slice::repeat, mem::take, BTreeMap::get_key_value, HashMap::get_key_value, ක්‍රම ස්ථායීකරනය කර ඇතුඵව, ස්ථාවර ප්‍රවර්ගය වෙත ගෙන ගොස් ඇත.
    විකල්පය::as_deref, විකල්පය::as_deref_mut, විකල්පය:: සමතලා, UdpSocket::peer_addr, {f32,f64}::to_be_bytes, {f32,f64}::to_le_bytes,{f32,f64}::to_ne_32bytes, f64}::from_be_bytes, {f32,f64}::from_le_bytes, සහ {f32,f64}::from_ne_bytes.

  • පැකේජ කළමනාකරු භාණ්ඩ තුළ
    ක්රියාත්මක කර ඇත තැටියේ සම්පාදක අනතුරු ඇඟවීම් හැඹිලිගත කිරීම. "භාණ්ඩ පාරදත්ත" විධානයට "භාණ්ඩ පාරදත්ත" විකල්පය එක් කරන ලදී--පෙරහන්-වේදිකාව" පරායත්තතා විභේදන තීරුවේ නියමිත ඉලක්ක වේදිකාවට බැඳී ඇති පැකේජ පමණක් පෙන්වීමට. වලංගු TLS අනුවාද නිර්වචනය කිරීමට http.ssl-version වින්‍යාස කිරීමේ විකල්පය එක් කරන ලදී.
    කොටස ප්‍රකාශයට පත් කිරීමේ හැකියාව එක් කරන ලදී "dev-යැපීම්"අනුවාද" යතුර සඳහන් නොකර.

  • rustc සම්පාදකය thumbv7neon-unknown-linux-musleabihf, aarch64-unknown-none-softfloat, mips64-unknown-linux-muslabi64 සහ mips64el-unknown-linux-muslabi64 යන ඉලක්ක වේදිකා සඳහා තෙවන මට්ටමේ සහය සපයයි. තෙවන මට්ටමට මූලික සහාය ඇතුළත් වේ, නමුත් ස්වයංක්‍රීය පරීක්ෂණ සහ නිල ගොඩනැගීම් ප්‍රකාශනයකින් තොරව.

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

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