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

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

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

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

පැච් වල නව අනුවාදය, පැච් වල පළමු සහ දෙවන අනුවාද පිළිබඳ සාකච්ඡාවේදී කරන ලද අදහස් ඉවත් කිරීම දිගටම කරගෙන යයි. වඩාත්ම කැපී පෙනෙන වෙනස්කම්:

  • රස්ට් 1.57 හි ස්ථාවර නිකුතුව විමර්ශන සම්පාදකය ලෙස භාවිතා කිරීමට සංක්‍රමණයක් සිදු කර ඇති අතර රස්ට් 2021 භාෂාවේ ස්ථායීකෘත සංස්කරණයට සබැඳියක් ලබා දී ඇත.මීට පෙර, පැච් රස්ට් හි බීටා ශාඛාවට බැඳ ඇති අතර සමහර භාෂා විශේෂාංග භාවිතා කරන ලදී. අස්ථායී ලෙස වර්ග කර ඇත. Rust 2021 පිරිවිතර වෙත සංක්‍රමණය වීම const_fn_transmute, const_panic, const_unavailable_unchecked සහ core_panic සහ try_reserve වැනි පැච්වල එවැනි අස්ථායී විශේෂාංග භාවිතය වැළැක්වීම සඳහා වැඩ ආරම්භ කිරීමට අපට ඉඩ ලබා දුන්නේය.
  • පැච්වල ඇතුළත් කර ඇති රස්ට් පුස්තකාලයේ විභේදන අනුවාදයේ සංවර්ධනය අඛණ්ඩව සිදු කර ඇත, මතකය නැතිවීම වැනි දෝෂ ඇති වූ විට “සන්ත්‍රාසය” තත්වයේ ඇති විය හැකි මතක වෙන් කිරීමේ ක්‍රියාකාරකම් ඉවත් කිරීමට වෙනස් කර ඇත. නව අනුවාදය මගින් "no_rc" සහ "no_sync" විකල්ප ක්‍රියාත්මක කර කර්නල් රස්ට් කේතයේ භාවිතා නොකරන ක්‍රියාකාරීත්වය අක්‍රීය කිරීමට, පුස්තකාලය වඩාත් මොඩියුලර් බවට පත් කරයි. කර්නලය සඳහා අවශ්‍ය වෙනස්කම් ප්‍රධාන පුස්තකාලයට මාරු කිරීම අරමුණු කරගත් ප්‍රධාන විබෙදුම් සංවර්ධකයින් සමඟ වැඩ දිගටම කරගෙන යයි. පුස්තකාලයට කර්නල් මට්ටමින් ක්‍රියා කිරීමට අවශ්‍ය “no_fp_fmt_parse” විකල්පය, Rust base library (core) වෙත ගෙන ගොස් ඇත.
  • කර්නලය CONFIG_WERROR ආකාරයෙන් ගොඩනඟන විට ඇති විය හැකි සම්පාදක අනතුරු ඇඟවීම් ඉවත් කිරීමට කේතය පිරිසිදු කර ඇත. රස්ට් තුළ කේතය ගොඩනඟන විට, අතිරේක සම්පාදක රෝග විනිශ්චය ක්‍රම සහ Clippy linter අනතුරු ඇඟවීම් සක්‍රීය වේ.
  • Seqlocks (sequence locks), power management සඳහා callback calls, I/O Memory (readX/writeX), interrupt and thread handlers, GPIO, උපාංග වෙත ප්‍රවේශය, ධාවක සහ අක්තපත්‍ර සඳහා රස්ට් කේතයේ භාවිතය සඳහා සාරාංශ යෝජනා කර ඇත.
  • රියදුරු සංවර්ධනය සඳහා වන මෙවලම් නැවත ස්ථානගත කළ හැකි මුටෙක්ස්, බිට් පුනරාවර්තක, සරල කරන ලද පොයින්ටර් බන්ධන, වැඩිදියුණු කළ දෝෂ හඳුනාගැනීම් සහ දත්ත බස්-ස්වාධීන යටිතල පහසුකම් ඇතුළත් කිරීමට පුළුල් කර ඇත.
  • යොමු ගණන් කිරීම සඳහා එකම නමේ කර්නල් API භාවිතා කරන refcount_t පසුපෙළ මත පදනම්ව, සරල කළ Ref වර්ගයක් භාවිතා කරමින් සබැඳි සමඟ වැඩිදියුණු කළ වැඩ. සම්මත alloc පුස්තකාලයේ සපයා ඇති Arc සහ Rc වර්ග සඳහා සහය ඉවත් කර ඇති අතර කර්නල් මට්ටමින් ක්‍රියාත්මක කරන ලද කේතයෙහි නොමැත (මෙම වර්ග අක්‍රිය කරන පුස්තකාලය සඳහාම විකල්ප සකස් කර ඇත).
  • පැච් වල PL061 GPIO ධාවකයේ අනුවාදයක් ඇතුළත් වේ, එය Rust වලින් නැවත ලියා ඇත. ධාවකයේ විශේෂ ලක්ෂණයක් නම්, එය ක්‍රියාත්මක කිරීම පාහේ පේළියෙන් පේළිය C භාෂාවෙන් පවතින GPIO ධාවකය පුනරාවර්තනය වීමයි. රස්ට් හි ධාවක නිර්මාණය කිරීම පිළිබඳව දැන හඳුනා ගැනීමට අවශ්‍ය සංවර්ධකයින් සඳහා, සී කේතය පරිවර්තනය කරන්නේ කුමන ඉදිකිරීම්වලටද යන්න තේරුම් ගැනීමට ඉඩ සලසන පේළියෙන් පේළි සංසන්දනයක් සකස් කර ඇත.
  • ප්‍රධාන Rust codebase විසින් rustc_codegen_gcc භාවිතා කර ඇත, එය GCC සඳහා rustc පසුපෙළක් වන අතර එය libgccjit පුස්තකාලය භාවිතයෙන් පෙරට (AOT) සම්පාදනය කරයි. පසුබිම නිසි ලෙස සංවර්ධනය කිරීමත් සමඟ, GCC භාවිතයෙන් කර්නලයට සම්බන්ධ වූ රස්ට් කේතය එකතු කිරීමට එය ඔබට ඉඩ සලසයි.
  • ARM, Google සහ Microsoft වලට අමතරව, Linux කර්නලයේ Rust භාෂාව භාවිතා කිරීමට Red Hat කැමැත්ත පළ කර ඇත. Google සෘජුවම Linux සඳහා Rust ව්‍යාපෘතිය සඳහා සහාය ලබා දෙන බව අපි සිහිපත් කරමු, රස්ට් හි Binder interprocess සන්නිවේදන යාන්ත්‍රණයේ නව ක්‍රියාත්මක කිරීමක් සංවර්ධනය කරමින් සිටින අතර Rust හි විවිධ ධාවක නැවත සකස් කිරීමේ හැකියාව සලකා බලමින් සිටී. මයික්‍රොසොෆ්ට් විසින් රස්ට් හි හයිපර්-වී සඳහා ධාවක ක්‍රියාත්මක කිරීම ආරම්භ කර ඇත. ARM පාදක පද්ධති සඳහා රස්ට් සහාය වැඩිදියුණු කිරීමට ARM කටයුතු කරයි. IBM විසින් PowerPC පද්ධති සඳහා කර්නලයේ රස්ට් සහාය ක්‍රියාත්මක කර ඇත.

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

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