Мигел Охеда, муаллифи лоиҳаи "Rust-for-"Linux, барои баррасӣ аз ҷониби таҳиягарони ядро пешниҳод шудааст Linux Версияи сеюми ҷузъҳо барои таҳияи драйверҳои дастгоҳҳо дар Rust. Дастгирии Rust таҷрибавӣ ҳисобида мешавад, аммо аллакай барои дохил кардан ба шохаи linux-next тасдиқ шудааст. Ин таҳия аз ҷониби Google ва ISRG (Гурӯҳи тадқиқоти амнияти интернетӣ), асосгузори лоиҳаи Let's Encrypt, ки HTTPS ва таҳияи технологияҳоро барои беҳтар кардани амнияти интернет таблиғ мекунад, маблағгузорӣ мешавад.
Ёдовар мешавем, ки тағйироти пешниҳодшуда имкон медиҳад, ки Rust ҳамчун забони дуюм барои таҳияи драйверҳо ва модулҳои ядроӣ истифода шавад. Дастгирии Rust ҳамчун варианте пешниҳод карда мешавад, ки бо нобаёнӣ фаъол нест ва боиси он намегардад, ки Rust ҳамчун вобастагии зарурии сохтмон барои ядро дохил карда шавад. Истифодаи Rust барои таҳияи драйвер ба шумо имкон медиҳад, ки драйверҳои бехатартар ва беҳтарро бо саъю кӯшиши кам эҷод кунед, ки аз мушкилоте ба монанди дастрасии хотира пас аз озодшавӣ, истинодҳои нул нишоннамо ва изофаи буфер озод карда шаванд.
Муомилоти аз хотираи бехатар дар Rust дар вақти тартибдиҳӣ тавассути санҷиши истинод, нигоҳ доштани моликияти объект ва мӯҳлати умри объект (миқёс), инчунин тавассути арзёбии дурустии дастрасии хотира ҳангоми иҷрои код таъмин карда мешавад. Rust инчунин муҳофизатро аз фаромадани ададҳо таъмин мекунад, пеш аз истифода оғозкунии ҳатмии арзишҳои тағирёбандаро талаб мекунад, хатогиҳоро дар китобхонаи стандартӣ беҳтар идора мекунад, консепсияи истинодҳо ва тағирёбандаҳоро ба таври нобаёнӣ татбиқ мекунад, чопкунии қавии статикиро барои кам кардани хатогиҳои мантиқӣ пешниҳод мекунад.
Нашри нави патч нигарониҳоеро, ки ҳангоми муҳокимаи версияҳои якум ва дуюми патч ба миён омада буданд, баррасӣ мекунад. Тағйироти назаррастарин инҳоянд:
- Гузариш ба истифодаи версияи устувори Rust 1.57 ҳамчун компилятори истинодӣ анҷом ёфт ва пайвастшавӣ ба версияи устувори забонии Rust 2021 таъмин карда шуд. Қаблан, патчҳо ба шохаи бетаи Rust пайваст карда шуда буданд ва баъзе хусусиятҳои забонро истифода мебурданд, ки ҳамчун ноустувор тасниф мешуданд. Гузариш ба мушаххасоти Rust 2021 ба мо имкон дод, ки корро барои нест кардани хусусиятҳои ноустувор, ба монанди const_fn_transmute, const_panic, const_unreachable_unchecked, core_panic ва try_reserve аз патчҳо оғоз кунем.
- Таҳияи версияи китобхонаи alloc Rust, ки дар патчҳо мавҷуд аст, идома дорад. Ин версия барои пешгирӣ кардани эҳтимолияти ба вуҷуд омадани ҳолатҳои воҳима аз ҷониби функсияҳои тақсимоти хотира ҳангоми рух додани хатогиҳо ба монанди ҳолатҳои аз хотира берун будан, тағйир дода шудааст. Нусхаи нав имконоти "no_rc" ва "no_sync"-ро барои ғайрифаъол кардани функсияҳое, ки дар рамзи аслии Rust истифода намешаванд, татбиқ мекунад ва китобхонаро модулӣтар мегардонад. Кор бо таҳиягарони аслии alloc барои интиқоли тағйироти зарурӣ барои китобхонаи аслӣ идома дорад. Варианти "no_fp_fmt_parse", ки барои фаъолияти китобхона дар сатҳи ядро зарур аст, ба китобхонаи аслии Rust интиқол дода шудааст.
- Код барои бартараф кардани огоҳиҳои эҳтимолии компилятор ҳангоми сохтани ядро дар ҳолати CONFIG_WERROR тоза карда шуд. Ҳангоми сохтани рамзи Rust режимҳои иловагии ташхиси компилятор ва огоҳиҳои Clippy linter фаъол карда мешаванд.
- Абстраксияҳо барои истифода дар рамзи Rust барои seqlocks (қулфҳои пайдарпай), зангҳои бозгашт барои идоракунии нерӯ, хотираи вуруд/хуруҷ (readX/writeX), коркардкунандагони қатъкунӣ ва ришта, GPIO, дастрасӣ ба дастгоҳҳо, драйверҳо ва эътимодномаҳо пешниҳод карда мешаванд.
- Воситаҳои таҳияи драйвер васеъ карда шуданд, то мутексҳои сайёр, итераторҳои битӣ, печонидани нишондиҳандаҳои соддашуда, ташхиси беҳтаршудаи садама ва инфрасохтори мустақил аз шинаи додаҳоро дар бар гиранд.
- Коркарди истинодҳо бо истифода аз навъи соддакардашудаи Ref, ки бар асоси пуштибонии refcount_t асос ёфтааст, ки API-и ядрои ҳамон номро барои ҳисоб кардани истинод истифода мебарад, беҳтар карда шуд. Дастгирии намудҳои Arc ва Rc, ки аз ҷониби китобхонаи стандартии alloc пешниҳод шудаанд, хориҷ карда шудааст ва дар рамзи сатҳи ядро дастрас нест (имконоти ғайрифаъол кардани ин намудҳо барои худи китобхона пешниҳод шудаанд).
- Патчҳо версияи драйвери PL061 GPIO-ро дар бар мегиранд, ки бо забони Rust аз нав навишта шудааст. Хусусияти беназири ин драйвер дар он аст, ки татбиқи он қариб сатр ба сатр бо драйвери мавҷудаи GPIO дар забони C якхела аст. Барои таҳиягароне, ки ба омӯхтани тарзи эҷоди драйверҳо дар забони Rust манфиатдоранд, муқоисаи сатр ба сатр дастрас аст, то ба онҳо дар фаҳмидани сохторҳои Rust, ки рамзи C ба он табдил дода шудааст, кӯмак расонад.
- Пойгоҳи асосии рамзи Rust rustc_codegen_gcc-ро қабул кардааст, ки як пуштибони rustc барои GCC аст, ки компилятсияи пеш аз вақт (AOT)-ро бо истифода аз китобхонаи libgccjit амалӣ мекунад. Бо таҳияи мувофиқ, пуштибон имкон медиҳад, ки рамзи Rust, ки дар ядро истифода мешавад, бо истифода аз GCC компилятсия карда шавад.
- Илова бар ARM, Google ва Microsoft, ба истифодаи забони Rust дар ядро таваҷҷӯҳ вуҷуд дорад. Linux Red Hat гуфт. Хотиррасон мекунем, ки Google мустақиман лоиҳаи Rust-ро дастгирӣ мекунад Linux, дар Rust татбиқи нави механизми муоширати байнипротсессорҳои Binder-ро таҳия мекунад ва дар Rust аз нав навиштани драйверҳои гуногунро баррасӣ мекунад. Microsoft татбиқи драйверҳоро барои Hyper-V дар Rust оғоз кардааст. ARM барои беҳтар кардани дастгирии Rust барои системаҳое, ки ба протсессорҳои ARM асос ёфтаанд, кор мекунад. IBM дастгирии Rust-ро дар ядро барои системаҳои PowerPC татбиқ кардааст.
Манбаъ: opennet.ru
