Rust භාෂාව සඳහා සහය ඇති Linux කර්නලය සඳහා වන පැච් වල හයවන අනුවාදය

Rust-for-Linux ව්‍යාපෘතියේ කතුවරයා වන Miguel Ojeda, Linux කර්නල් සංවර්ධකයින් විසින් සලකා බැලීම සඳහා Rust භාෂාවෙන් උපාංග ධාවක සංවර්ධනය කිරීම සඳහා v6 සංරචක නිකුත් කිරීමට යෝජනා කළේය. අනුවාද අංකයක් නොමැතිව ප්‍රකාශයට පත් කරන ලද පළමු අනුවාදය සැලකිල්ලට ගනිමින් මෙය පැච් වල හත්වන සංස්කරණයයි. මලකඩ ආධාරය පර්යේෂණාත්මක ලෙස සලකනු ලැබේ, නමුත් දැනටමත් linux-ඊළඟ ශාඛාවේ ඇතුළත් කර ඇති අතර කර්නල් උප පද්ධති මත වියුක්ත ස්ථර සෑදීම මෙන්ම ධාවක සහ මොඩියුල ලිවීමේ වැඩ ආරම්භ කිරීමට ප්‍රමාණවත් ලෙස සංවර්ධනය කර ඇත. සංවර්ධනය සඳහා අරමුදල් සපයනු ලබන්නේ Google සහ ISRG (අන්තර්ජාල ආරක්ෂණ පර්යේෂණ කණ්ඩායම) විසිනි, එය Let’s Encrypt ව්‍යාපෘතියේ නිර්මාතෘ වන අතර HTTPS සහ අන්තර්ජාලයේ ආරක්ෂාව වැඩි දියුණු කිරීම සඳහා තාක්ෂණයන් සංවර්ධනය කිරීම ප්‍රවර්ධනය කරයි.

නව අනුවාදයේ:

  • මෙවලම් කට්ටලය සහ alloc පුස්තකාලයේ ප්‍රභේදයක්, දෝෂ ඇති වූ විට ඇති විය හැකි "පැනික්" තත්වයෙන් මිදී, Rust 1.60 නිකුතුවට යාවත්කාලීන කර ඇත, එය කර්නල් පැච් වල භාවිතා වන "maybe_uninit_extra" මාදිලිය සඳහා සහය ස්ථායි කරයි.
  • කර්නලය පූරණය කිරීමේදී ක්‍රියාත්මක කරන ලද KUnit පරීක්ෂණ බවට කර්නල් API සමඟ සම්බන්ධ කර ඇති පරීක්ෂණ සම්පාදන-කාල පරිවර්තන හරහා ලේඛනගත කිරීම් (ලේඛනගත කිරීමේදී උදාහරණ ලෙස භාවිතා කරන පරීක්ෂණ) වෙතින් පරීක්ෂණ ධාවනය කිරීමේ හැකියාව එක් කරන ලදී.
  • රස්ට් කර්නල් කේතය මෙන් පරීක්ෂණ ක්ලිපි ලින්ටර් අනතුරු ඇඟවීමක් සිදු නොකළ යුතු බවට අවශ්‍යතා සම්මත කර ඇත.
  • ජාල කාර්යයන් සහිත "net" මොඩියුලයේ මූලික ක්රියාත්මක කිරීම යෝජනා කෙරේ. රස්ට් කේතයට Namespace (struct net kernel ව්‍යුහය මත පදනම්ව), SkBuff (struct sk_buff), TcpListener, TcpStream (struct socket), Ipv4Addr (struct in_addr), SocketAddvaltrV4 වැනි කර්නල් ජාල ව්‍යුහයන් වෙත ප්‍රවේශය ඇත. .
  • kasync මොඩියුලය ආකාරයෙන් ක්‍රියාත්මක කරන ලද අසමමුහුර්ත ක්‍රමලේඛන ශිල්පීය ක්‍රම (Async) සඳහා මූලික සහාය ඇත. උදාහරණයක් ලෙස, ඔබට TCP සොකට් හැසිරවීමට අසමමුහුර්ත කේතය ලිවිය හැක: async fn echo_server(stream: TcpStream) -> Result {let mut buf = [0u8; 1024]; loop {let n = stream.read(&mut buf).await?; n == 0 නම් {ආපසු Ok(()); } stream.write_all(&buf[..n]).wait?; } }
  • ජාල පැකට් පෙරහන් හැසිරවීම සඳහා ශුද්ධ ::පෙරහන මොඩියුලය එකතු කරන ලදී. Rust භාෂාවෙන් පෙරහන් ක්‍රියාත්මක කිරීමක් සහිත උදාහරණයක් rust_netfilter.rs එක් කරන ලදී.
  • ඇමිණීම අවශ්‍ය නොවන සරල mutex smutex::Mutex ක්‍රියාත්මක කිරීම එකතු කරන ලදි.
  • NoWaitLock එකතු කරන ලද අතර, එය කිසිදා අගුලක් බලා නොසිටින අතර, වෙනත් නූලකින් අල්ලාගෙන තිබේ නම්, ඇමතුම්කරු නතර කිරීම වෙනුවට අගුල ලබා ගැනීමට උත්සාහ කිරීමේදී දෝෂයක් වාර්තා කිරීමට හේතු වේ.
  • නිෂ්ක්‍රීයව පැවතිය නොහැකි කොටස් වෙත යෙදීමට, කර්නලයේ raw_spinlock_t මගින් හඳුනාගෙන ඇති RawSpinLock එක් කරන ලදී.
  • යොමු ගණන් කිරීමේ යාන්ත්‍රණය යොදන වස්තුවකට යොමු කිරීම් සඳහා ARef වර්ගය එකතු කරන ලදි (සැමවිටම නැවත ගණනය කෙරේ).
  • rustc_codegen_gcc පසුපෙළ, ඔබට GCC ව්‍යාපෘතියේ ඇති libgccjit පුස්තකාලය rustc හි කේත උත්පාදකයක් ලෙස භාවිතා කිරීමට ඉඩ සලසයි, GCC හි ඇති ගෘහනිර්මාණ සහ ප්‍රශස්තිකරණය සඳහා සහය ඇතිව rustc සැපයීමට, rustc compiler bootstrapping කිරීමේ හැකියාව ක්‍රියාත්මක කර ඇත. සම්පාදක ප්‍රවර්ධනය යන්නෙන් අදහස් කරන්නේ rustc සම්පාදකයම තැනීම සඳහා rustc හි GCC-පාදක කේත උත්පාදකයක් භාවිතා කිරීමේ හැකියාවයි. මීට අමතරව, GCC 12.1 හි මෑත නිකුතුවේ rustc_codegen_gcc නිවැරදිව ක්‍රියා කිරීමට අවශ්‍ය libgccjit වෙත නිවැරදි කිරීම් ඇතුළත් වේ. Rustup උපයෝගීතාව භාවිතයෙන් rustc_codegen_gcc ස්ථාපනය කිරීමේ හැකියාව ලබා දීමට සූදානම් වෙමින් පවතී.
  • GCC මත පදනම් වූ Rust භාෂා සම්පාදකය ක්‍රියාත්මක කිරීමත් සමඟ GCC ඉදිරිපස gccrs සංවර්ධනයේ ප්‍රගතිය සටහන් වේ. දැනට gccrs මත වැඩ කරන පූර්ණ කාලීන සංවර්ධකයින් දෙදෙනෙක් සිටී.

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

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

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

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