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

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

በአዲሱ ስሪት:

  • የመሳሪያ ኪቱ እና የአሎክ ቤተ መፃህፍት ተለዋጭ፣ ስህተቶች በሚከሰቱበት ጊዜ "አስደንጋጭ" ሁኔታ መፍጠር ሳይቻል ለዝገት 1.62 ተዘምኗል። ከዚህ ቀደም ጥቅም ላይ ከዋለው ስሪት ጋር ሲነጻጸር፣ የ Rust Toolkit በከርነል ጥገናዎች ውስጥ ጥቅም ላይ የሚውለው የconst_fn_trait_bound ተግባር ድጋፍን አረጋጋ።
  • የማስያዣ ኮድ ወደ የተለየ የክሬት ጥቅል "ማሰሪያዎች" ተከፍሏል, ይህም ለውጦች በዋናው ጥቅል "ከርነል" ላይ ብቻ ከተደረጉ መልሶ መገንባትን ቀላል ያደርገዋል.
  • የማክሮ “ኮንካት_አይነቶችን!” መተግበር ከ concat_idents ተግባር ጋር ያልተቆራኘ እና በአካባቢያዊ ተለዋዋጮች ማጣቀሻዎችን ለመጠቀም በሚያስችል የሥርዓት ማክሮ መልክ እንደገና የተጻፈ።
  • የ"static_assert!"ማክሮ እንደገና ተጽፏል፣ይህም "ኮር::ማስረጃ!()" ከቋሚዎች ይልቅ በማንኛውም አውድ ውስጥ መጠቀም ያስችላል።
  • ማክሮ "የግንባታ_ስህተት!" የ"RUST_BUILD_ASSERT_{WARN,ALLOW}" ሁነታ ለሞጁሎች ሲዋቀር እንዲሰራ ተስተካክሏል።
  • ከቅንብሮች "kernel/configs/rust.config" ጋር የተለየ ፋይል ታክሏል።
  • በማክሮ ተተኪዎች ውስጥ የሚሰሩ የ"*.i" ፋይሎች ወደ "*.rsi" ተቀይረዋል።
  • ለ C ኮድ ጥቅም ላይ ከሚውሉት የተለየ የማሻሻያ ደረጃ ያላቸው የዝገት ክፍሎችን ለመገንባት የሚደረገው ድጋፍ ተቋርጧል።
  • ከፋይል ስርዓቶች ጋር አብሮ ለመስራት ማሰሪያዎችን የሚሰጥ የ fs ሞጁል ታክሏል። በ Rust ውስጥ የተጻፈ ቀላል የፋይል ስርዓት ምሳሌ ቀርቧል.
  • ከስርአት ወረፋዎች ጋር አብሮ ለመስራት የታከለ የስራ ወረፋ ሞጁል (በስራው_መዋቅር እና በከርነል አወቃቀሮች ላይ ማሰርን ያቀርባል)።
  • ያልተመሳሰሉ የፕሮግራም አወጣጥ ዘዴዎችን (async) በመተግበር የካሲንክ ሞጁል እድገት ቀጥሏል. በሩስት የተፃፈ የኮር ደረጃ TCP አገልጋይ ምሳሌ ታክሏል።
  • በ[Threaded]Handler አይነቶች እና [በክር] የምዝገባ` አይነቶችን በመጠቀም ማቋረጥን በ Rust ቋንቋ የማስተናገድ ችሎታ ታክሏል።
  • እንደ የፋይል_ኦፕሬሽኖች መዋቅር ካሉ የተግባር ጠቋሚዎች ሰንጠረዦች ጋር ለመስራት ቀላል ለማድረግ የሂደት ማክሮ "#[vtable]" ታክሏል።
  • በሁለት አቅጣጫ የተገናኙ ዝርዝሮች "የማይጠበቅ_ዝርዝር ::ዝርዝር" ታክሏል።
  • የተነበበ መቆለፊያ ከአሁኑ ክር ጋር የተቆራኘ መሆኑን ለማረጋገጥ ለ RCU (Read-copy-update) እና የጥበቃ ዓይነት የመጀመሪያ ድጋፍ ታክሏል።
  • የተጨመረ ተግባር::spawn() ተግባር የከርነል ክሮች ለመፍጠር እና በራስ ሰር ለመጀመር። እንዲሁም የተግባር :: wake_up() ዘዴን ታክሏል።
  • መዘግየቶችን ለመጠቀም የሚያስችል የዘገየ ሞጁል ታክሏል (በ msleep () ላይ መጠቅለያ)።

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

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

ምንጭ: opennet.ru

አስተያየት ያክሉ