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

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

නව අනුවාදයේ:

  • මෙවලම් කට්ටලය සහ alloc පුස්තකාලයේ ප්‍රභේදයක්, දෝෂ ඇති වූ විට ඇති විය හැකි "භීතිකාව" තත්ත්වයෙන් තොර, Rust 1.62 නිකුත් කිරීම සඳහා යාවත්කාලීන කර ඇත. කලින් භාවිතා කරන ලද අනුවාදය හා සසඳන විට, Rust මෙවලම් කට්ටලය කර්නල් පැච් වල භාවිතා කරන const_fn_trait_bound ක්‍රියාකාරීත්වය සඳහා ස්ථාවර සහය ලබා දී ඇත.
  • බන්ධන කේතය වෙනම කූඩ පැකේජයක් "බන්ධන" ලෙස වෙන් කර ඇත, ප්රධාන පැකේජය "කර්නලය" සඳහා පමණක් වෙනස්කම් සිදු කළහොත් නැවත ගොඩනැඟීම සරල කරයි.
  • සාර්ව “concat_idents!” ක්‍රියාත්මක කිරීම concat_idents ක්‍රියාකාරීත්වයට සම්බන්ධ නොවන ක්‍රියා පටිපාටි සාර්ව ස්වරූපයෙන් නැවත ලියා ඇති අතර දේශීය විචල්‍යයන් වෙත යොමු භාවිතයට ඉඩ සලසයි.
  • නියතයන් වෙනුවට ඕනෑම සන්දර්භයක "core::assert!()" භාවිතා කිරීමට ඉඩ සලසමින් "static_assert!" මැක්රෝ නැවත ලියා ඇත.
  • මැක්රෝ "build_error!" "RUST_BUILD_ASSERT_{WARN,ALLOW}" මාදිලිය මොඩියුල සඳහා සකසා ඇති විට වැඩ කිරීමට අනුවර්තනය විය.
  • "kernel/configs/rust.config" සැකසුම් සහිත වෙනම ගොනුවක් එකතු කරන ලදී.
  • සාර්ව ආදේශකවල සකසන ලද “*.i” ගොනු “*.rsi” ලෙස නැවත නම් කර ඇත.
  • C කේතය සඳහා භාවිතා කරන මට්ටමට වඩා වෙනස් ප්‍රශස්තිකරණ මට්ටම් සහිත රස්ට් සංරචක ගොඩනැගීම සඳහා වන සහාය අත්හිටුවා ඇත.
  • ගොනු පද්ධති සමඟ වැඩ කිරීම සඳහා බන්ධන සපයන fs මොඩියුලය එකතු කරන ලදී. රස්ට් වලින් ලියා ඇති සරල ගොනු පද්ධතියක උදාහරණයක් සපයනු ලැබේ.
  • පද්ධති පෝලිම් සමඟ වැඩ කිරීම සඳහා වැඩ පෝලිම් මොඩියුලය එකතු කරන ලදි (work_struct සහ workqueue_struct කර්නල් ව්‍යුහයන් මත බන්ධන සපයයි).
  • අසමමුහුර්ත ක්‍රමලේඛන ක්‍රම (අසමමුහුර්තකරණය) ක්‍රියාත්මක කිරීමත් සමඟ kasync මොඩියුලයේ සංවර්ධනය දිගටම පැවතුනි. රස්ට් වලින් ලියා ඇති මූලික මට්ටමේ TCP සේවාදායකයක උදාහරණයක් එක් කරන ලදී.
  • [Threaded]Handler වර්ග සහ [Threaded]Registration` වර්ග භාවිතයෙන් Rust language හි බාධා කිරීම් හැසිරවීමේ හැකියාව එක් කරන ලදී.
  • ගොනු_මෙහෙයුම් ව්‍යුහය වැනි ශ්‍රිත දර්ශක වගු සමඟ වැඩ කිරීම පහසු කිරීම සඳහා ක්‍රියා පටිපාටි සාර්ව "#[vtable]" එක් කරන ලදී.
  • ද්විපාර්ශ්වික සම්බන්ධිත ලැයිස්තු "අනාරක්ෂිත_ලැයිස්තුව::ලැයිස්තුව" ක්‍රියාත්මක කිරීම එකතු කරන ලදි.
  • RCU (කියවීම-පිටපත්-යාවත්කාලීන කිරීම) සහ ගාඩ් වර්ගය සඳහා මූලික සහය එක් කරන ලද්දේ කියවීමේ අගුලක් වත්මන් නූලට බැඳී ඇත්දැයි පරීක්ෂා කිරීමටය.
  • කර්නල් නූල් සෑදීමට සහ ස්වයංක්‍රීයව ආරම්භ කිරීමට Task ::spawn() ශ්‍රිතය එක් කරන ලදී. Task::wake_up() ක්‍රමයද එක් කර ඇත.
  • ප්‍රමාදයන් භාවිතා කිරීමට ඔබට ඉඩ සලසන ප්‍රමාද මොඩියුලයක් එක් කරන ලදී (msleep() මත එතුම).

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

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

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

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