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

የ Rust-for-Linux ፕሮጀክት ደራሲ ሚጌል ኦጄዳ የሊኑክስ ከርነል ገንቢዎች እንዲያስቡበት በሩስት ቋንቋ የመሣሪያ ነጂዎችን ለማዘጋጀት ሶስተኛ አካል አማራጭን አቅርቧል። የዝገት ድጋፍ እንደ ሙከራ ይቆጠራል ነገር ግን በሚቀጥለው ሊኑክስ ቅርንጫፍ ውስጥ እንዲካተት ተስማምቷል። ልማቱ በGoogle እና ISRG (የኢንተርኔት ደኅንነት ጥናትና ምርምር ቡድን) የገንዘብ ድጋፍ የሚደረግለት ሲሆን እሱም የኑ ኢንክሪፕት ፕሮጄክት መስራች እና HTTPSን እና የኢንተርኔት ደህንነትን ለማሻሻል ቴክኖሎጂዎችን ማስፋፋት ነው።

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

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

አዲሱ የ patches ስሪት በመጀመሪያ እና ሁለተኛ ስሪቶች ውይይት ወቅት የተሰጡትን አስተያየቶች ማጥፋት ይቀጥላል። በጣም የሚታዩ ለውጦች:

  • የተረጋጋውን የዝገት 1.57 ልቀትን እንደ ዋቢ አቀናባሪ ለመጠቀም ሽግግር ተደርጓል እና ወደ የተረጋጋው የዝገት 2021 ቋንቋ እትም አገናኝ ቀርቧል። ከዚህ ቀደም ፕላቶች ከዝገት የቅድመ-ይሁንታ ቅርንጫፍ ጋር የተሳሰሩ እና አንዳንድ የቋንቋ ባህሪያትን ተጠቅመዋል ያልተረጋጋ ተብለው ተፈርጀዋል። ወደ Rust 2021 ስፔሲፊኬሽን የተደረገው ሽግግር እንደ const_fn_transmute፣ const_panic፣ const_የማይደረስ_ያልተረጋገጠ እና ኮር_ድንጋጤ እና በ patches ውስጥ try_reserve ያሉ ያልተረጋጉ ባህሪያትን ለማስወገድ ስራ እንድንጀምር አስችሎናል።
  • ስህተቶች በሚከሰቱበት ጊዜ እንደ ማህደረ ትውስታ ውጭ ያሉ ስህተቶች በሚፈጠሩበት ጊዜ “የድንጋጤ” ሁኔታን የማስታወስ ምደባ ተግባራትን ለማስወገድ የተቀየረው በፕላቹ ውስጥ የተካተተው የዝገት ቤተ-መጽሐፍት የአሎክ ስሪት እድገቱ ቀጥሏል። አዲሱ ስሪት በከርነል ዝገት ኮድ ውስጥ ጥቅም ላይ ያልዋለ ተግባርን ለማሰናከል የ"no_rc" እና "no_sync" አማራጮችን ተግባራዊ ያደርጋል፣ ይህም ቤተ መፃህፍቱ የበለጠ ሞዱል ያደርገዋል። ለከርነል የሚያስፈልጉትን ለውጦች ወደ ዋናው ቤተ-መጽሐፍት ለማስተላለፍ ያለመ ከዋና አሎክ ገንቢዎች ጋር ሥራ ይቀጥላል። ቤተ መፃህፍቱ በከርነል ደረጃ እንዲሰራ የሚያስፈልገው የ"no_fp_fmt_parse" አማራጭ ወደ Rust base ላይብረሪ (ኮር) ተወስዷል።
  • በCONFIG_WERROR ሁነታ ላይ ከርነሉን በሚገነቡበት ጊዜ ሊሆኑ የሚችሉ የአቀናባሪ ማስጠንቀቂያዎችን ለማስወገድ ኮዱ ጸድቷል። በሩስት ውስጥ ኮድ በሚገነቡበት ጊዜ ተጨማሪ የማጠናከሪያ የምርመራ ሁነታዎች እና የክሊፕ ሊንተር ማስጠንቀቂያዎች ይነቃሉ።
  • ማጠቃለያዎች በሩስት ኮድ ውስጥ ለሴኪሎኮች (የተከታታይ መቆለፊያዎች)፣ የመልሶ ጥሪ ጥሪዎች ለኃይል አስተዳደር፣ I/O Memory (readX/writeX)፣ ማቋረጥ እና ክር ተቆጣጣሪዎች፣ GPIO፣ የመሣሪያዎች መዳረሻ፣ ሾፌሮች እና ምስክርነቶች።
  • የአሽከርካሪዎች ልማት መሳሪያዎች ወደ ሌላ ቦታ ሊቀየሩ የሚችሉ ሙቴክሶች፣ ቢት ኢተርተሮች፣ ቀለል ያሉ ጠቋሚ ማሰሪያዎች፣ የተሻሻሉ የስህተት ምርመራዎች እና ከዳታ አውቶብስ ነጻ የሆኑ መሠረተ ልማቶችን ለማካተት ተዘርግተዋል።
  • ማጣቀሻዎችን ለመቁጠር ተመሳሳይ ስም ያለው የከርነል ኤፒአይን በሚጠቀመው በ refcount_t backend ላይ በመመስረት ቀለል ያለ Ref አይነት በመጠቀም ከአገናኞች ጋር የተሻሻለ ስራ። በመደበኛው የአሎክ ቤተ-መጽሐፍት ውስጥ ለቀረቡት የአርክ እና አርሲ ዓይነቶች ድጋፍ ተወግዷል እና በከርነል ደረጃ በተተገበረ ኮድ ውስጥ አይገኝም (እነዚህን ዓይነቶች የሚያሰናክሉ አማራጮች ለቤተ-መጽሐፍት እራሱ ተዘጋጅተዋል)።
  • ጥገናዎቹ የPL061 GPIO ሾፌር ስሪት ያካትታሉ፣ በሩስት ውስጥ እንደገና የተፃፈ። የነጂው ልዩ ባህሪ በመስመር ላይ ትግበራው ያለውን የ GPIO ሾፌር በC ቋንቋ መድገሙ ነው። በሩስት ውስጥ ሾፌሮችን ከመፍጠር ጋር ለመተዋወቅ ለሚፈልጉ ገንቢዎች በሩስት ውስጥ የ C ኮድ ወደ የትኞቹ ግንባታዎች እንደሚቀየር እንዲረዱ የመስመር-በ-መስመር ንፅፅር ተዘጋጅቷል።
  • ዋናው Rust codebase rustc_codegen_gccን ተቀብሏል፣ rustc ለጂሲሲ ከጊዜ በፊት (AOT) የlibgccjit ቤተ-መጽሐፍትን በመጠቀም የሚሰራ። ከጀርባው ትክክለኛ እድገት ፣ GCCን በመጠቀም በከርነል ውስጥ የተካተተውን የዝገት ኮድ ለመሰብሰብ ያስችልዎታል።
  • ከኤአርኤም፣ ጎግል እና ማይክሮሶፍት በተጨማሪ ሬድ ኮፍያ የዝገት ቋንቋን በሊኑክስ ከርነል ለመጠቀም ፍላጎት አሳይቷል። ጉግል በቀጥታ ለ Rust for Linux ፕሮጄክት ድጋፍ እንደሚሰጥ እናስታውስ ፣ አዲስ የቢንደር interprocess የግንኙነት ዘዴ በሩስት ውስጥ ትግበራ እያዘጋጀ እና በሩስት ውስጥ የተለያዩ ሾፌሮችን እንደገና የመስራት እድልን እያጤነ መሆኑን እናስታውስ። ማይክሮሶፍት በሩስት ውስጥ ለ Hyper-V ሾፌሮችን መተግበር ጀምሯል። ARM ለ ARM-ተኮር ስርዓቶች የ Rust ድጋፍን ለማሻሻል እየሰራ ነው። IBM ለ Rust for PowerPC ስርዓቶች የከርነል ድጋፍን ተግባራዊ አድርጓል።

ምንጭ: opennet.ru

አስተያየት ያክሉ