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

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

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

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

  • ස්ථාවරයි "Async" ශ්‍රිතය මත පදනම් වූ නව අසමමුහුර්ත ක්‍රමලේඛන වාක්‍ය ඛණ්ඩයක්, async move {... } block, සහ ".await" ක්‍රියාකරු, ප්‍රධාන විධාන ප්‍රවාහය අවහිර නොකරන හසුරුවන්නන් ලිවීම පහසු කරයි. අසමමුහුර්ත I/O සඳහා කලින් ලබා දුන් API හා සසඳන විට, async/.await ඉදිකිරීම් තේරුම් ගැනීමට සරල වන අතර, ඉතා පහසුවෙන් කියවිය හැකි අතර, ලූප, කොන්දේසිගත ප්‍රකාශ සහ ව්‍යතිරේක මත පදනම් වූ හුරුපුරුදු ප්‍රවාහ පාලන ක්‍රම භාවිතයෙන් සංකීර්ණ අසමමුහුර්ත අන්තර්ක්‍රියා ක්‍රියාත්මක කිරීමට ඔබට ඉඩ සලසයි.

    Async-await වාක්‍ය ඛණ්ඩය මඟින් ඔබට ඒවා ක්‍රියාත්මක කිරීම විරාම කළ හැකි, ප්‍රධාන ත්‍රෙඩ් වෙත පාලනය ආපසු ලබා දිය හැකි, සහ පසුව ක්‍රියාත්මක කිරීම නැවැත්වූ ස්ථානයේ සිට නැවත ආරම්භ කළ හැකි කාර්යයන් නිර්මාණය කිරීමට ඉඩ සලසයි. උදාහරණයක් ලෙස, I/O සැකසීමේදී එවැනි විරාමයක් අවශ්‍ය වන අතර, මීළඟ දත්ත කොටස පැමිණෙන තෙක් බලා සිටියදී වෙනත් කාර්යයක් කළ හැකිය. "Async fn" සහ "async move" සමඟ අර්ථ දක්වා ඇති කාර්යයන් සහ කොටස් ලක්ෂණයක් ලබා දෙයි අනාගතය, එය විලම්බිත අසමමුහුර්ත ගණනය කිරීම් නිරූපණයක් අර්ථ දක්වයි. ".await" ක්‍රියාකරු භාවිතයෙන් ඔබට සෘජුවම කල් දැමූ ගණනය කිරීමක් ආරම්භ කර ප්‍රතිඵලය ලබා ගත හැක. .await කැඳවන තෙක් කිසිදු ක්‍රියාවක් සිදු නොකෙරේ හෝ පෙර සැලසුම් කර නැත, අමතර පොදු කාර්යක් නොමැතිව සංකීර්ණ කැදලි ඉදිකිරීම් නිර්මාණය කිරීමට ඉඩ සලසයි.

    async fn first_function() -> u32 { ..}
    ...
    අනාගතයට ඉඩ දෙන්න = first_function();
    ...
    ප්‍රතිඵලයට ඉඩ දෙන්න: u32 = future.await;

  • ස්ථාවරයි "#![feature(bind_by_move_pattern_guards)]", බන්ධන වර්ගය සමඟ විචල්‍ය භාවිතයට ඉඩ දෙයි "by-move" සැකිලි තුළ සහ ප්‍රකාශනයේ "if" කොටසේ මෙම විචල්‍යයන් සඳහා යොමු භාවිතා කරන්න "තරගය". උදාහරණයක් ලෙස, පහත ඉදිකිරීම් දැන් අවසර දී ඇත:

    fn ප්‍රධාන() {
    ඉඩ අරාව: කොටුව<[u8; 4]> = කොටුව::නව([1, 2, 3, 4]);

    ගැලපුම් අරාව {
    අංක
    නම් nums.iter().sum::() == 10

    => {
    drop (සංඛ්යා);
    }
    _ => ළඟා විය නොහැක!(),
    }
    }

  • ඇඟවීමට අවසර ඇත ගුණාංග ශ්‍රිත පරාමිති, වසා දැමීම් සහ ක්‍රියාකාරී දර්ශක නිර්වචනය කිරීමේදී. ලින්ට් හරහා රෝග විනිශ්චය පාලනය කරන කොන්දේසිගත සම්පාදනය කිරීමේ ගුණාංග (cfg, cfg_attr) සහ සහායක සාර්ව ඇමතුම් ගුණාංග සඳහා සහය දක්වයි.

    fn len(
    #[cfg(windows)] පෙත්ත: &[u16], // Windows හි පරාමිතිය භාවිතා කරන්න
    #[cfg(නො(කවුළු))] පෙත්ත: &[u8], // වෙනත් OS වල භාවිතා කරන්න
    ) -> භාවිතා කරන්න {
    slice.len()
    }

  • NLL (Lexical නොවන Lifetimes) තාක්‍ෂණය භාවිතයෙන් විචල්‍යයන් (ණය පරීක්‍ෂක) ණයට ගැනීම පරීක්ෂා කිරීමේදී හඳුනාගත් ගැටළු පිළිබඳ අනතුරු ඇඟවීම්, පරිවර්තනය කර ඇත මාරාන්තික දෝෂ කාණ්ඩයට. ණයට ගත් විචල්‍යවල ආයු කාලය සැලකිල්ලට ගැනීම සඳහා නව යාන්ත්‍රණයක් මත පදනම් වූ සත්‍යාපන පද්ධතිය පැරණි සත්‍යාපන කේතය මගින් අවධානයට ලක් නොවූ ගැටළු කිහිපයක් හඳුනා ගැනීමට හැකි වූ බව අපි සිහිපත් කරමු. එවැනි චෙක්පත් සඳහා දෝෂ ප්‍රතිදානය කලින් ක්‍රියාකාරී කේතය සමඟ ගැළපීමට බලපෑ හැකි බැවින්, දෝෂ වෙනුවට අනතුරු ඇඟවීම් මුලින් නිකුත් කරන ලදී. Rust 2018 මාදිලියේ ධාවනය වන විට අනතුරු ඇඟවීම් දැන් දෝෂ සහිතව ප්‍රතිස්ථාපනය කර ඇත. මීළඟ නිකුතුවේදී, දෝෂ ප්‍රතිදානය Rust 2015 මාදිලියේ ද ක්‍රියාත්මක වනු ඇත, එය අවසානයේ පැරණි ණය පරීක්ෂකයෙන් මිදෙනු ඇත;
  • නියතයන් වෙනුවට ඕනෑම සන්දර්භයක භාවිතා කිරීමේ හැකියාව තීරණය කරන “const” ගුණාංගය Vec::new, String::new, LinkedList::new, str::len, [T]::len ශ්‍රිත සඳහා භාවිතා වේ. , str::as_bytes,
    abs, wrapping_abs සහ overflowing_abs;

  • API හි නව කොටසක් ස්ථායී කර ඇති ක්‍රම ඇතුළුව ස්ථායී කාණ්ඩයට මාරු කර ඇත
    Pin::into_inner, Instant::checked_duration_ince සහ Instant::saturating_duration_since;

  • භාණ්ඩ පැකේජ කළමනාකරුට දැන් වින්‍යාස ගොනු සඳහා “.toml” දිගුව භාවිතා කිරීමේ හැකියාව ඇත. භාණ්ඩ වලින් සෘජුවම සම්මත පුස්තකාලය ගොඩනැගීම සඳහා මූලික සහාය එකතු කරන ලදී. මතභේදාත්මක "--සියල්ල" ධජය ප්‍රතිස්ථාපනය කරමින් "--වැඩ අවකාශය" ධජය එක් කරන ලදී. පාරදත්ත වෙත නව ක්ෂේත්‍රයක් එක් කර ඇත "ප්රකාශයට පත් කරයි“, git ටැගයක් සහ අනුවාද අංකයක් නියම කිරීමෙන් පරායත්තතා ප්‍රකාශ කිරීමට ඔබට ඉඩ සලසයි. විවිධ සම්පාදන අදියරවල ක්‍රියාත්මක වන වේලාවන් පිළිබඳ HTML වාර්තාවක් ජනනය කිරීම සඳහා පරීක්ෂණ විකල්පය "-Ztimings" එක් කරන ලදී.
  • rustc සම්පාදකයේ, රෝග විනිශ්චය පණිවිඩවල ටර්මිනලයට නොගැලපෙන කේතයේ වලිග කැපීම ඇතුළත් වේ. ඉලක්ක වේදිකා සඳහා තුන්වන මට්ටමේ සහාය ලබා දී ඇත
    i686-unknown-uefi සහ sparc64-unknown-openbsd. තෙවන මට්ටමට මූලික සහාය ඇතුළත් වේ, නමුත් ස්වයංක්‍රීය පරීක්ෂණ සහ නිල ගොඩනැගීම් ප්‍රකාශනයකින් තොරව.

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

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