Нашри чоруми часпакҳо барои ядрои Linux бо дастгирии забони Rust

Мигел Охеда, муаллифи лоиҳаи Rust-for-Linux, версияи чоруми ҷузъҳоро барои таҳияи драйверҳои дастгоҳ бо забони Rust барои баррасии таҳиягарони ядрои Linux пешниҳод кард. Дастгирии Rust таҷрибавӣ ҳисобида мешавад, аммо барои дохил шудан ба филиали linux-навбат аллакай мувофиқа карда шудааст ва барои оғоз кардани кор оид ба эҷоди қабатҳои абстраксия дар зерсистемаҳои ядро, инчунин навиштани драйверҳо ва модулҳо ба қадри кофӣ пухта аст. Таҳия аз ҷониби Google ва ISRG (Гурӯҳи Таҳқиқоти Амнияти Интернет) маблағгузорӣ мешавад, ки муассиси лоиҳаи Let's Encrypt мебошад ва HTTPS ва рушди технологияҳоро барои беҳтар кардани амнияти интернет мусоидат мекунад.

Ёдовар мешавем, ки тағйироти пешниҳодшуда имкон медиҳад, ки Rust ҳамчун забони дуюм барои таҳияи драйверҳо ва модулҳои ядроӣ истифода шавад. Дастгирии Rust ҳамчун варианте пешниҳод карда мешавад, ки бо нобаёнӣ фаъол нест ва боиси он намегардад, ки Rust ҳамчун вобастагии зарурии сохтмон барои ядро ​​дохил карда шавад. Истифодаи Rust барои таҳияи драйвер ба шумо имкон медиҳад, ки драйверҳои бехатартар ва беҳтарро бо саъю кӯшиши кам эҷод кунед, ки аз мушкилоте ба монанди дастрасии хотира пас аз озодшавӣ, истинодҳои нул нишоннамо ва изофаи буфер озод карда шаванд.

Муомилоти аз хотираи бехатар дар Rust дар вақти тартибдиҳӣ тавассути санҷиши истинод, нигоҳ доштани моликияти объект ва мӯҳлати умри объект (миқёс), инчунин тавассути арзёбии дурустии дастрасии хотира ҳангоми иҷрои код таъмин карда мешавад. Rust инчунин муҳофизатро аз фаромадани ададҳо таъмин мекунад, пеш аз истифода оғозкунии ҳатмии арзишҳои тағирёбандаро талаб мекунад, хатогиҳоро дар китобхонаи стандартӣ беҳтар идора мекунад, консепсияи истинодҳо ва тағирёбандаҳоро ба таври нобаёнӣ татбиқ мекунад, чопкунии қавии статикиро барои кам кардани хатогиҳои мантиқӣ пешниҳод мекунад.

Варианти нави часпакҳо барои аз байн бурдани шарҳҳое, ки ҳангоми муҳокимаи нашри якум, дуюм ва сеюми часпакҳо дода шудаанд, идома медиҳад. Дар версияи нав:

  • Гузариш ба истифодаи версияи устувори Rust 1.58.0 ҳамчун компилятори истинод анҷом дода шуд. Дар байни тағиротҳои зарурӣ барои лоиҳа, ки то ҳол дар маҷмӯаи асосии Rust дохил карда нашудаанд, парчами “-Zsymbol-mangling-version=v0” (дар Rust 1.59.0 интизорӣ меравад) ва ҳолати “maybe_uninit_extra” (дар Rust 1.60.0 интизорӣ меравад) .XNUMX) кайд карда мешавад.
  • Санҷиши автоматии мавҷудияти асбобҳои мувофиқи Rust илова карда шуд ва қобилияти санҷиши дастгирии Rust дар система васеъ карда шуд.
  • Барои дастрасӣ ба ҷадвалҳои идентификаторҳои дастгоҳ («IdArray» ва «IdTable») аз рамзи Rust абстраксияҳои нав пешниҳод карда шуданд.
  • Қабатҳои иловашуда барои дастрасӣ ба функсияҳои марбут ба таймер (чаҳорчӯбаи соат).
  • Ҳоло ронандагони платформа тавассути татбиқи хусусиятҳо муайян карда мешаванд.
  • Барои содда кардани сабти драйверҳои платформа макроси нав илова карда шуд ва қолаби нави умумии драйвер пешниҳод карда шуд.
  • Макросҳо барои сохторҳои "dev_*" илова карда шуданд.
  • Усулҳои "{read,write}*_relaxed" барои навъи IoMem илова карда шуданд .
  • Хосияти FileOpener барои содда кардани амалиёти файл хориҷ карда шуд.
  • Параметри "ThisModule" ба далелҳое, ки ҳангоми бақайдгирии ронанда дода шудаанд, илова карда шудааст.
  • Шаблони стандартӣ барои сохтани модулҳои ядро ​​​​бо забони Rust пешниҳод карда мешавад.

Манбаъ: opennet.ru

Илова Эзоҳ