රස්ට් 1.53 නිකුත් කරන ලදී. ලිනක්ස් කර්නලයට රස්ට් සහාය එක් කිරීමට ගූගල් අරමුදල් සපයනු ඇත

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

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

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

  • අරා සඳහා, IntoIterator ලක්ෂණය ක්‍රියාත්මක කර ඇති අතර, එමඟින් ඔබට අරා මූලද්‍රව්‍ය පුනරාවර්තනය අගයන් මගින් සංවිධානය කිරීමට ඉඩ සලසයි: i සඳහා [1, 2, 3] { .. }

    පුනරාවර්තක පිළිගන්නා ක්‍රම වෙත අරාවන් යැවීමටද හැකිය, උදාහරණයක් ලෙස: set = BTreeSet::from_iter([1, 2, 3]); සඳහා (a, b) some_iterator.chain([1]).zip([1, 2, 3]) { ..}

    මීට පෙර, IntoIterator ක්‍රියාත්මක වූයේ අරා යොමු සඳහා පමණි, i.e. අගයන් මත පුනරාවර්තනය කිරීමට යොමු (“&[1, 2, 3]”) හෝ “[1, 2, 3].iter()” භාවිතා කිරීම අවශ්‍ය වේ. array.into_iter() සිට (&array).into_iter() දක්වා පෙර සම්පාදක පරිවර්තනයක් හේතුවෙන් ඇති වූ ගැළපුම් ගැටළු නිසා අරා සඳහා IntoIterator ක්‍රියාත්මක කිරීම අඩාල විය. මෙම ගැටළු විසදුමක් සමඟින් විසඳා ඇත - IntoIterator ලක්ෂණය ක්‍රියාවට නැංවීමක් සිදු නොවූවාක් මෙන්, සම්පාදකයා විසින් array.into_iter() වෙත (&array).into_iter() වෙත පරිවර්තනය කිරීම දිගටම කරගෙන යනු ඇත, නමුත් ".into_iter() භාවිතයෙන් ක්‍රමය ඇමතීමේ දී පමණි. )" වාක්‍ය ඛණ්ඩය සහ "[1, 2, 3]", "iter.zip([1, 2, 3])", "IntoIterator::into_iter([1, 2, 3]" ආකාරයෙන් ඇමතුම් ස්පර්ශ නොකර )".

  • "|" ප්‍රකාශන නියම කළ හැක (තාර්කික හෝ ක්‍රියාකාරිත්වය) අච්චුවේ ඕනෑම කොටසක, උදාහරණයක් ලෙස, “සමහර (1) වෙනුවට | සමහර(2)" ඔබට දැන් ලිවිය හැක "සමහර(1 | 2)": ගැලපුම් ප්‍රතිඵලය {Ok(සමහර(1 | 2)) => { ..} Err(MyError { kind: FileNotFound | PermissionDenied, .. }) => {..} _ => {..}}
  • Unicode UAX 31 පිරිවිතරයේ අර්ථ දක්වා ඇති ඕනෑම ජාතික අක්ෂර ඇතුළුව, නමුත් ඉමොජි අක්ෂර හැර හඳුනාගැනීම් තුළ ASCII නොවන අක්ෂර භාවිතයට අවසර ඇත. ඔබ වෙනස් නමුත් සමාන අක්ෂර භාවිතා කරන්නේ නම්, සම්පාදකයා අනතුරු ඇඟවීමක් නිකුත් කරයි. const BLÅHAJ: &str = "🦈"; struct 人 {名字: String, } ඉඩ α = 1; letÓos = 2; අනතුරු ඇඟවීම: හඳුනාගැනීමේ යුගලය 's' සහ 's' අතර ව්‍යාකූල ලෙස සැලකේ
  • පහත ස්ථායීකරනය ඇතුළුව API හි නව කොටසක් ස්ථායී කාණ්ඩයට මාරු කර ඇත:
    • අරාව::from_ref
    • අරාව::from_mut
    • AtomicBool::fetch_update
    • AtomicPtr::fetch_update
    • BTreeSet:: රඳවා ගන්න
    • BTreeMap::retain
    • BufReader::seek_relative
    • cmp::min_by
    • cmp::min_by_key
    • cmp::max_by
    • cmp::max_by_key
    • DebugStruct::finish_non_exhaustive
    • කාල සීමාව::ZERO
    • කාල සීමාව::MAX
    • කාලසීමාව:: is_zero
    • කාලය::saturating_add
    • කාල සීමාව:: saturating_sub
    • කාලසීමාව:: saturating_mul
    • f32:: is_subnormal
    • f64:: is_subnormal
    • අරා සඳහා IntoIterator
    • {integer}::BITS
    • io::Error::සහාය නොදක්වයි
    • ශුන්‍ය නොවන*:: ප්‍රමුඛ_ශුන්‍ය
    • Zero නොවන*:: trailing_zeros
    • විකල්පය :: ඇතුල් කරන්න
    • ඇණවුම් කිරීම::is_eq
    • ඇණවුම් කිරීම ::is_ne
    • ඇණවුම් කිරීම::is_lt
    • ඇණවුම් කිරීම::is_gt
    • ඇණවුම් කිරීම::is_le
    • ඇණවුම් කිරීම ::is_ge
    • OsStr::make_ascii_කුඩා අකුරු
    • OsStr::make_ascii_uppercase
    • OsStr::to_ascii_කුඩා අකුරු
    • OsStr:: to_ascii_uppercase
    • OsStr::is_ascii
    • OsStr::eq_ignore_ascii_case
    • බලන්න පුළුවන්::peek_mut
    • Rc:: increment_strong_count
    • Rc::decrement_strong_count
    • පෙත්ත::IterMut::as_slice
    • AsRef<[T]> පෙත්ත සඳහා::IterMut
    • Impl SliceIndex සඳහා (බැඳී ඇත , බැඳී ඇත )
    • Vec::extend_from_thin
  • wasm64-නොදන්නා-නොදන්නා වේදිකාව සඳහා තුන්වන මට්ටමේ සහාය ක්‍රියාත්මක කර ඇත. තෙවන මට්ටමට මූලික සහාය ඇතුළත් වේ, නමුත් ස්වයංක්‍රීය පරීක්ෂණ නොමැතිව, නිල ගොඩනැගීම් ප්‍රකාශනය කිරීම සහ කේත ගොඩනැගීමේ හැකියාව සත්‍යාපනය කිරීම.
  • පෙරනිමියෙන් Git ගබඩාවේ (HEAD) ප්‍රධාන ශාඛාව සඳහා "ප්‍රධාන" යන නම භාවිතා කිරීමට Cargo පැකේජ කළමනාකරු මාරු කර ඇත. Master වෙනුවට main යන නම භාවිතා කරන repositories හි සත්කාරකත්වය දරන පරායත්තතා තවදුරටත් branch = "main" වින්‍යාස කිරීමට අවශ්‍ය නොවේ.
  • සම්පාදකයේ, LLVM හි අවම අනුවාදය සඳහා අවශ්‍යතා LLVM 10 දක්වා ඉහළ නංවා ඇත.

මීට අමතරව, රස්ට් භාෂාවේ සංරචක සංවර්ධනය කිරීම සඳහා මෙවලම්වල Linux කර්නලය වෙත ඒකාබද්ධ කිරීම සංවර්ධනය කිරීම සඳහා අරමුදල් සැපයීම අපට සටහන් කළ හැකිය. Let's Encrypt ව්‍යාපෘතියේ නිර්මාතෘ වන සහ HTTPS ප්‍රවර්ධනය කරන ISRG සංවිධානයේ (Internet Security Research Group) අනුග්‍රහය යටතේ Prossimo ව්‍යාපෘතියේ රාමුව තුළ මෙම කාර්යය සිදු කෙරේ. අන්තර්ජාල. Rust-for-Linux ව්‍යාපෘතියේ කතුවරයා වන Miguel Ojeda ගේ වැඩ සඳහා ගෙවන Google විසින් අරමුදල් සපයනු ඇත. පෙරදී, ISRG සහ Google දැනටමත් curl උපයෝගීතාව සඳහා විකල්ප HTTP පසුබිමක් නිර්මාණය කිරීම සහ Apache http සේවාදායකය සඳහා නව TLS මොඩියුලයක් සංවර්ධනය කිරීම සඳහා අරමුදල් සපයා ඇත.

මයික්‍රොසොෆ්ට් සහ ගූගල් වලට අනුව, දුර්වලතා වලින් 70% ක් පමණ අනාරක්ෂිත මතක හැසිරවීම නිසා ඇතිවේ. උපාංග ධාවක වැනි කර්නල් සංරචක සංවර්ධනය කිරීම සඳහා රස්ට් භාෂාව භාවිතා කිරීම අනාරක්ෂිත මතක හැසිරවීම නිසා ඇති වන අවදානම් අවදානම අඩු කරනු ඇති අතර එය නිදහස් කිරීමෙන් පසු මතක කලාපයකට ප්‍රවේශ වීම සහ බෆර සීමාවන් ඉක්මවා යාම වැනි දෝෂ ඉවත් කරනු ඇතැයි අපේක්ෂා කෙරේ.

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

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

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