ලිනක්ස් කර්නලයට රස්ට් සංවර්ධන මෙවලම් එකතු කිරීමේ ගැටළුව සාකච්ඡා කිරීමේ යෝජනාව

නික් ඩෙසාග්නියර් (නික් ඩෙසෝල්නියර්ස්), සැපයීමට Google හි සේවය කරන සහාය Clang සම්පාදකය භාවිතා කරමින් Linux කර්නලය ගොඩනඟා ගැනීම සහ උදව් කරමින් රස්ට් සම්පාදකයේ දෝෂ නිවැරදි කරන්න, යෝජනා කර ඇත සම්මන්ත්‍රණයක පවත්වන්න Linux ජලනල කාර්මික සමුළුව 2020 Rust හි කර්නල් සංරචක සංවර්ධනය කිරීමට හැකි වන පරිදි සාකච්ඡා කිරීමට සැසිය. නික් LLVM සඳහා කැප වූ ක්ෂුද්‍ර සම්මන්ත්‍රණයක් සංවිධානය කරන අතර, රස්ට් සහාය කර්නලයට ඒකාබද්ධ කිරීමේ තාක්ෂණික අංශ පිළිබඳව සාකච්ඡා කිරීම සතුටක් බව විශ්වාස කරයි (ඔහු දැනටමත් KBuild සඳහා ක්‍රියාකාරී මූලාකෘතියක් සකස් කර ඇත) සහ එවැනි සහායක් ලබා දිය යුතුද යන්න තේරුම් ගන්න. සම්පූර්ණයෙන්ම එකතු කළ යුතු අතර, රස්ට් භාවිතය සඳහා පිළිගත යුතු සීමාවන් මොනවාද?

විවෘත මූලාශ්‍ර සමුළුවේ සහ Embedded Linux සම්මන්ත්‍රණයේ මෑතකාලීන සාකච්ඡාවකදී Linus Torvalds බව අපි සිහිපත් කරමු. එය බැහැර කළේ නැත රස්ට් වැනි භාෂාවලින් මූලික නොවන කර්නල් උප පද්ධති (උදාහරණයක් ලෙස, ධාවක) සංවර්ධනය සඳහා බැඳීම් මතුවීම. Rust හි ධාවක සංවර්ධනය කිරීමේ හැකියාව, නිදහස් කිරීමෙන් පසු මතක ප්‍රවේශය, null pointer dereferences සහ buffer overruns වැනි ගැටළු වලින් තොරව අවම උත්සාහයකින් ආරක්ෂිත සහ වඩා හොඳ රියදුරන් නිර්මාණය කිරීමට අපට ඉඩ සලසයි. මෙම විශේෂාංගය ක්‍රියාත්මක කිරීමට දැනටමත් තුන්වන පාර්ශ්ව ව්‍යාපෘති කිහිපයක් තිබේ:

  • "බැරලයේ මාළු" සමාගමේ සංවර්ධකයින් සකස් කර ඇත ආරක්ෂාව වැඩි කිරීම සඳහා අතුරුමුහුණත් සහ කර්නල් ව්‍යුහය මත වියුක්ත ස්ථර කට්ටලයක් භාවිතා කරමින් රස්ට් භාෂාවෙන් Linux කර්නලය සඳහා පූරණය කළ හැකි මොඩියුල ලිවීම සඳහා මෙවලම් කට්ටලයක්. උපයෝගීතාව භාවිතයෙන් පවතින කර්නල් ශීර්ෂ ගොනු මත පදනම්ව ස්ථර ස්වයංක්‍රීයව ජනනය වේ bindgen. ස්ථර තැනීම සඳහා ක්ලැන්ග් භාවිතා කරයි. අන්තර් ස්ථර වලට අමතරව, එකලස් කරන ලද මොඩියුලයන් staticlib පැකේජය භාවිතා කරයි.
  • හොංකොං චීන විශ්ව විද්‍යාලයේ පර්යේෂකයන් දියුණු කරනවා රස්ට් හි කාවැද්දූ පද්ධති සහ ඉන්ටර්නෙට් ඔෆ් තින්ග්ස් උපාංග සඳහා ධාවක සංවර්ධනය කිරීමේ ව්‍යාපෘතියකි, එය කර්නල් ශීර්ෂ ගොනු මත පදනම්ව ස්ථර ජනනය කිරීමට බයින්ඩ්ජන් භාවිතා කරයි. කර්නලයේ වෙනස්කම් සිදු නොකර රියදුරු ආරක්ෂාව වැඩි දියුණු කිරීමට රාමුව ඔබට ඉඩ සලසයි - කර්නලයේ ධාවක සඳහා අමතර හුදකලා මට්ටම් නිර්මාණය කිරීම වෙනුවට, වඩාත් ආරක්ෂිත රස්ට් භාෂාව භාවිතා කරමින් සම්පාදනය කිරීමේ අදියරේදී ගැටළු අවහිර කිරීමට යෝජනා කෙරේ. නිසි විගණනයක් සිදු නොකර කඩිමුඩියේ හිමිකාර රියදුරන් සංවර්ධනය කරන උපකරණ නිෂ්පාදකයින් විසින් එවැනි ප්‍රවේශයක් ඉල්ලුමේ තිබිය හැකි යැයි උපකල්පනය කෙරේ.
  • රාමු සංවර්ධකයින් C2Rust C කේතය රස්ට් වෙත විකාශනය කිරීම සඳහා, වියදම් කරනවා අවම අතින් සංස්කරණයන් සමඟ කර්නල් මොඩියුල පරිවර්තනය කිරීමේ අත්හදා බැලීම්. සටහන් කර ඇති එක් ගැටළුවක් නම් C2Rust හි තවමත් සහය නොදක්වන GCC දිගු භාවිතා කරන කේත කර්නලයේ බොහෝ කොටස් වල භාවිතයයි. මෙම ගැටළුව විසඳීම සඳහා, C2Rust GCC ගුණාංග සඳහා පේළිගත, සීතල, අන්වර්ථ, භාවිතා කළ සහ කොටස සඳහා සහය එක් කිරීමට සැලසුම් කරයි, මෙන්ම පේළිගත එකලස් කිරීමේ හැකියාවන් පුළුල් කිරීමට සහ පෙළගස්වා ඇති සහ ඇසුරුම් කර ඇති ව්‍යුහයන් සමඟ ගැටලු විසඳීමට (උදාහරණයක් ලෙස, xregs_state) . අතින් වැඩ කිරීම අවශ්‍ය වන සැලකිය යුතු ගැටළු අතර සුළු නොවන C macros Rust macros බවට පරිවර්තනය කිරීමේ නොහැකියාව සහ වර්ග නැවත අර්ථ දැක්වීමේ අවශ්‍යතාවය ඇතුළත් වේ, මන්ද C2Rust C වර්ග libc පැකේජයේ අර්ථ දැක්වීම් වලට පරිවර්තනය කරයි, නමුත් මෙම පැකේජය කර්නල් මොඩියුලවල භාවිතා කළ නොහැක.

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

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