አምስተኛው እትም ለሊኑክስ ከርነል ከዝገት ቋንቋ ድጋፍ ጋር

የ Rust-for-Linux ፕሮጄክት ደራሲ ሚጌል ኦጄዳ በሊኑክስ ከርነል ገንቢዎች ግምት ውስጥ ለመግባት በሩስት ቋንቋ የመሣሪያ ነጂዎችን ለማዳበር አምስተኛውን የአካል ክፍሎች አቅርቧል። የዝገት ድጋፍ እንደ ሙከራ ይቆጠራል ነገር ግን ቀድሞውንም በሚቀጥለው ሊኑክስ ቅርንጫፍ ውስጥ ተካቷል እና በከርነል ንዑስ ስርዓቶች ላይ የአብስትራክሽን ንብርብሮችን ለመፍጠር እንዲሁም ሾፌሮችን እና ሞጁሎችን ለመፃፍ በበቂ ሁኔታ ተዘጋጅቷል። ልማቱ በGoogle እና ISRG (የኢንተርኔት ደኅንነት ጥናትና ምርምር ቡድን) የገንዘብ ድጋፍ የሚደረግለት ሲሆን ይህ ፕሮጀክት መስራች እና ኤችቲቲፒኤስን እና የኢንተርኔት ደህንነትን ለማሻሻል ቴክኖሎጂዎችን በማስፋፋት ነው።

የታቀዱት ለውጦች ሹፌሮችን እና የከርነል ሞጁሎችን ለማዳበር Rustን እንደ ሁለተኛ ቋንቋ ለመጠቀም እንዳስቻሉ ያስታውሱ። የዝገት ድጋፍ በነባሪነት ያልነቃ እና ለከርነል ከሚያስፈልጉት የግንባታ ጥገኞች መካከል ዝገት እንዲካተት የማያደርግ አማራጭ ሆኖ ቀርቧል። ሹፌሮችን ለማዳበር Rustን መጠቀም በትንሹ ጥረት ደህንነቱ የተጠበቀ እና የተሻሉ አሽከርካሪዎችን ለመፍጠር ያስችላል፣ ከችግሮች ነፃ ከወጣ በኋላ የማስታወሻ ቦታ ማግኘት፣ ባዶ ጠቋሚዎችን መሰረዝ እና ቋት መጨናነቅ።

የማህደረ ትውስታ-አስተማማኝ አያያዝ በዝገት ውስጥ በማጠናቀር ጊዜ በማጣቀሻ ፍተሻ፣ የነገሮችን ባለቤትነት እና የእቃውን የህይወት ዘመን (ስፋት) በመከታተል እንዲሁም በኮድ አፈፃፀም ወቅት የማስታወስ ችሎታን ትክክለኛነት በመገምገም ይሰጣል። ዝገት ከኢንቲጀር መብዛት ጥበቃን ይሰጣል፣ ከመጠቀምዎ በፊት ተለዋዋጭ እሴቶችን የግዴታ ማስጀመርን ይጠይቃል፣ በመደበኛ ቤተ-መጽሐፍት ውስጥ ስህተቶችን በተሻለ ሁኔታ ይቆጣጠራል ፣ የማይለዋወጥ ማጣቀሻዎችን እና ተለዋዋጮችን በነባሪነት ይተገበራል ፣ ምክንያታዊ ስህተቶችን ለመቀነስ ጠንካራ የማይንቀሳቀስ ትየባ ይሰጣል።

አዲሱ የ patches ስሪት በመጀመሪያ ፣ ሁለተኛ ፣ ሦስተኛ እና አራተኛ እትሞች ውይይት ወቅት የተሰጡትን አስተያየቶች ማጥፋት ይቀጥላል ። በአዲሱ ስሪት:

  • በIntel የሚደገፈው 0DAY/LKP bot ላይ በመመስረት ለ Rust ድጋፍ የአካል ክፍሎች ሙከራ ወደ ቀጣይነት ያለው ውህደት ስርዓት ተጨምሯል እና የሙከራ ሪፖርቶችን ማተም ተጀምሯል። የ Rust ድጋፍን ወደ KernelCI አውቶሜትድ የሙከራ ስርዓት ለማዋሃድ በዝግጅት ላይ ነን። በ GitHub CI ላይ የተመሰረተ ሙከራ ወደ ኮንቴይነሮች አጠቃቀም ተላልፏል.
  • የዝገት ከርነል ሞጁሎች “#![no_std]” እና “#![ባህሪ(…)]”ን የመግለጫ ባህሪያቸውን ከመግለጽ አስፈላጊነት ነፃ ሆነዋል።
  • ለነጠላ ስብሰባ ኢላማዎች (.o፣ .s፣ .ll እና .i) ድጋፍ ታክሏል።
  • የኮድ መመሪያዎች አስተያየቶችን ለመለያየት ደንቦችን ይገልፃሉ ("//") እና ኮድ ("///")።
  • የ is_rust_module.sh ስክሪፕት እንደገና ተሠርቷል።
  • በ"CONFIG_CONSTRUCTORS" አተገባበር ላይ ተመስርቶ ለስታቲክ (አለምአቀፍ የተጋራ ተለዋዋጭ) የማመሳሰል ቀዳሚዎች ድጋፍ ታክሏል።
  • የመቆለፊያ አስተዳደር ቀላል ነው፡ Guard እና GuardMut የተጣመሩ እና አንድ ፓራሜትራይዝድ አይነት።
  • መሳሪያዎችን በሚመዘግቡበት ጊዜ ተጨማሪ መለኪያዎችን መግለፅ ይቻላል.
  • በrw_semaphore C መዋቅር ላይ እንደ መጠቅለያ የሚሰራውን የ"RwSemaphore" አብስትራክት ታክሏል።
  • ኤምኤምፓን ለመጠቀም አዲስ ሚሜ ሞጁል እና የቪኤምኤ ማጠቃለያ ተጨምረዋል (በvm_area_struct መዋቅር ላይ ያለ መጠቅለያ)።
  • የ GPIO PL061 ሾፌር ወደ “dev_*!” ማክሮ ተቀይሯል።
  • አጠቃላይ የኮዱ ጽዳት ተካሂዷል።

ምንጭ: opennet.ru

አስተያየት ያክሉ