Мигел Оједа, аутор пројекта Руст-фор-Линук објавио осмо издање развоја закрпа за Линук кернел са подршком за Руст језик за програмере Линук кернела које треба да размотре.
Ово се рангира као девето издање закрпа (узимајући у обзир прву објављену верзију без броја верзије). Подршка за рђу се сматра експерименталном, али је већ укључен у грану линук-нект, захтева интеграцију у јесењем издању 5.20/6.0, и довољно је напредан да почне да ради на креирању слојева апстракције на врху подсистема кернела, као и на писању контролера и модула.
Развој финансирају Гоогле и ИСРГ (Интернет Сецурити Ресеарцх Гроуп), која је оснивач пројекта Лет'с Енцрипт и промовише ХТТПС и развој технологија за повећање безбедности на Интернету.
Предложене измене омогућавају коришћење Руста као другог језика за развој драјвера и модула кернела. Подршка за Руст је представљена као опција која није подразумевано омогућена и не доводи до тога да Руст буде укључен међу потребне зависности изградње за кернел. Коришћење Руста за развој драјвера ће вам омогућити да креирате боље и безбедније драјвере уз минималан напор, без проблема као што је приступ меморијској области након што је ослободите, дереференцирање нултих показивача и преливања бафера.
Безбедност меморије је обезбеђена у Русту у време компајлирања провером референци, праћењем власништва над објектом и животног века објекта (обим), као и проценом исправности приступа меморији током извршавања кода.
Шта је ново у овом осмом издању?
У овом новом предлогу који је објављен помиње се да варијанта библиотеке аллоц, чиме је елиминисано могуће генерисање "паничног" стања на грешкама, ажуриран на Руст верзију 1.62. У поређењу са претходном верзијом, Руст комплет алата је стабилизовао подршку за цонст_фн_траит_боунд функционалност која се користи у закрпама кернела.
Поред тога код повезивања је раздвојен у сноп кутија за „везивање“. одвојено, што олакшава реконструкцију ако се промени само главни пакет кернела.
Тхе имплементација макроа "цонцат_идентс!", Преписан као процедурални макро, није везан за функционалност цонцат_идентс и дозвољава употребу референци локалних променљивих.
Поред тога, помиње се да макро "статиц_ассерт!" је поново написано да омогући "цоре::ассерт!()" се користи у било ком контексту уместо константи, док макро "цонструцтион_еррор!" је прилагођено да ради при подешавању режима „РУСТ_БУИЛД_АССЕРТ_{ВАРН,АЛЛОВ}“ за модуле.
додат фс модул који обезбеђује везе за рад са системима датотека. Предлаже се пример једноставног система датотека написаног у Руст-у, као и модул редова послова који је додат за рад са системским редовима.
Од осталих промена који се издвајају из овог новог предлога:
- Додата је засебна конфигурациона датотека "кернел/цонфигс/руст.цонфиг".
- Датотеке „*.и“ обрађене у заменама макроа су преименоване у „*.рси“.
- Уклоњена подршка за прављење Руст компоненти са нивоима оптимизације другачијим од оних који се користе за Ц код.
- Развој касинц модула настављен је имплементацијом метода асинхроног програмирања (асинц).
- Додан је пример ТЦП сервера на нивоу језгра написаног у Русту и додата је могућност руковања прекидима у Русту.
- Додан је макро за процедуре да би се олакшао рад са табелама показивача функција, као што је структура филе_оператионс.
- Додата имплементација двосмерне повезане листе "унсафе_лист::Лист".
- Додата је почетна подршка за РЦУ и тип Гуард да се провери да ли је закључавање читања везано за тренутну нит.
- Додата функција Таск::спавн() за аутоматско покретање и покретање нити кернела.
- Такође је додат метод Таск::ваке_уп().
- Додан модул одлагања
Коначно ако сте заинтересовани да сазнате више о томе, можете проверити детаље У следећем линку.