Мигел Охеда, аутор пројекта Rust-for-Linux, предложено за разматрање програмерима језгра Linux Четврта верзија компоненти за развој драјвера уређаја у Русту. Подршка за Руст се сматра експерименталном, али је већ одобрена за укључивање у грану linux-next и довољно је зрела да се започне рад на креирању слојева апстракције преко подсистема језгра, као и на писању драјвера и модула. Развој финансирају Google и ISRG (Internet Security Research Group), оснивач пројекта Let's Encrypt, који промовише HTTPS и развој технологија за побољшање безбедности на интернету.
Подсетимо се да предложене измене омогућавају коришћење Руста као другог језика за развој драјвера и модула кернела. Подршка за Руст је представљена као опција која није подразумевано омогућена и не доводи до тога да Руст буде укључен као обавезна зависност изградње за кернел. Коришћење Руст-а за развој драјвера ће вам омогућити да креирате сигурније и боље драјвере уз минималан напор, без проблема као што су приступ меморији након ослобађања, нулте референце показивача и прекорачење бафера.
Руковање безбедно за меморију обезбеђено је у Русту у време компајлирања кроз проверу референци, праћење власништва над објектом и животног века објекта (обим), као и кроз процену исправности приступа меморији током извршавања кода. Руст такође пружа заштиту од прекорачења целог броја, захтева обавезну иницијализацију вредности променљивих пре употребе, боље обрађује грешке у стандардној библиотеци, подразумевано примењује концепт непроменљивих референци и променљивих, нуди снажно статичко куцање како би се минимизирале логичке грешке.
Нова верзија закрпа наставља да елиминише коментаре дате током дискусије о првом, другом и трећем издању закрпа. У новој верзији:
- Прелазак на коришћење стабилног издања Руста 1.58.0 као референтног компајлера је направљен. Међу променама неопходним за пројекат, које још увек нису укључене у главни пакет алата за Руст, „-Зсимбол-манглинг-версион=в0“ заставица (очекује се у Руст 1.59.0) и режим „маибе_унинит_ектра“ (очекује се у Руст 1.60.0 .XNUMX) су забележени.
- Додате су аутоматске провере доступности одговарајућих Руст алата и проширена могућност тестирања подршке за Руст у систему.
- Предложене су нове апстракције за приступ табелама идентификатора уређаја („ИдАрраи“ и „ИдТабле“) из Руст кода.
- Додати слојеви за приступ функцијама везаним за тајмер (оквир сата).
- Драјвери платформе су сада дефинисани кроз имплементације особина.
- Додан је нови макро како би се поједноставила регистрација драјвера платформе, а предложен је и нови генерички шаблон драјвера.
- Додати макрои за "дев_*" структуре.
- Додате методе „{реад,врите}*_релакед“ за тип ИоМем .
- Уклоњено је својство ФилеОпенер да би се поједноставиле операције са датотекама.
- Параметар „ТхисМодуле“ је додат аргументима прослеђеним приликом регистрације драјвера.
- Предложен је стандардни шаблон за креирање модула кернела на језику Руст.
Извор: опеннет.ру
