Треће издање закрпа за Линук кернел са подршком за Руст језик

Мигел Оједа, аутор пројекта Руст-фор-Линук, предложио је опцију треће компоненте за развој драјвера уређаја на Руст језику за програмере Линук кернела које треба да размотре. Подршка за Руст се сматра експерименталном, али је већ договорена за укључивање у линук-нект грану. Развој финансирају Гугл и ИСРГ (Интернет Сецурити Ресеарцх Гроуп), који је оснивач пројекта Лет'с Енцрипт и промовише ХТТПС и развој технологија за побољшање безбедности на Интернету.

Подсетимо се да предложене измене омогућавају коришћење Руста као другог језика за развој драјвера и модула кернела. Подршка за Руст је представљена као опција која није подразумевано омогућена и не доводи до тога да Руст буде укључен као обавезна зависност изградње за кернел. Коришћење Руст-а за развој драјвера ће вам омогућити да креирате сигурније и боље драјвере уз минималан напор, без проблема као што су приступ меморији након ослобађања, нулте референце показивача и прекорачење бафера.

Руковање безбедно за меморију обезбеђено је у Русту у време компајлирања кроз проверу референци, праћење власништва над објектом и животног века објекта (обим), као и кроз процену исправности приступа меморији током извршавања кода. Руст такође пружа заштиту од прекорачења целог броја, захтева обавезну иницијализацију вредности променљивих пре употребе, боље обрађује грешке у стандардној библиотеци, подразумевано примењује концепт непроменљивих референци и променљивих, нуди снажно статичко куцање како би се минимизирале логичке грешке.

Нова верзија закрпа наставља да елиминише коментаре дате током расправе о првој и другој верзији закрпа. Најуочљивије промене:

  • Направљен је прелазак на коришћење стабилног издања Руст 1.57 као референтног компајлера и обезбеђена је веза са стабилизованим издањем језика Руст 2021. Раније су закрпе биле везане за бета грану Руста и користиле су неке језичке карактеристике које су су класификовани као нестабилни. Прелазак на Руст 2021 спецификацију нам је омогућио да започнемо рад на избегавању коришћења таквих нестабилних функција у закрпама као што су цонст_фн_трансмуте, цонст_паниц, цонст_унаваилабле_унцхецкед и цоре_паниц и три_ресерве.
  • Настављен је развој аллоц верзије Руст библиотеке укључене у закрпе, модификоване да би се функције алокације меморије ослободиле могућег генерисања „паничног“ стања када се појаве грешке, као што је недостатак меморије. Нова верзија имплементира опције „но_рц“ и „но_синц“ за онемогућавање функционалности која се не користи у Руст коду кернела, чинећи библиотеку модуларнијом. Наставља се рад са главним програмерима аллоц-а, са циљем да се промене потребне за кернел пренесу у главну библиотеку. Опција „но_фп_фмт_парсе“, потребна да би библиотека радила на нивоу кернела, премештена је у Руст основну библиотеку (језгро).
  • Код је очишћен да би се ослободио могућих упозорења компајлера приликом прављења кернела у режиму ЦОНФИГ_ВЕРРОР. Приликом прављења кода у Русту, омогућени су додатни дијагностички режими компајлера и Цлиппи линтер упозорења.
  • Апстракције су предложене за употребу у Руст коду за секлоцкс (закључавања секвенце), позиве повратног позива за управљање напајањем, И/О меморију (реадКс/вритеКс), руковаоце прекида и нити, ГПИО, приступ уређајима, драјверима и акредитивима.
  • Алати за развој драјвера су проширени тако да укључују мутексе који се могу премештати, итераторе битова, поједностављено повезивање показивача, побољшану дијагностику грешака и инфраструктуру независну од магистрале података.
  • Побољшан рад са везама коришћењем поједностављеног типа Реф, заснованог на позадини рефцоунт_т, који користи истоимени АПИ језгра за бројање референци. Подршка за типове Арц и Рц обезбеђена у стандардној алок библиотеци је уклоњена и није доступна у коду који се извршава на нивоу кернела (припремљене су опције за саму библиотеку које онемогућавају ове типове).
  • Закрпе укључују верзију ПЛ061 ГПИО драјвера, преписану у Руст-у. Посебна карактеристика драјвера је да његова имплементација скоро ред по ред понавља постојећи ГПИО драјвер у језику Ц. За програмере који желе да се упознају са креирањем драјвера у Русту, припремљено је поређење ред по ред које им омогућава да разумеју у које конструкције у Русту је конвертован Ц код.
  • Главна Руст кодна база је усвојила рустц_цодеген_гцц, рустц позадину за ГЦЦ која имплементира компилацију унапред (АОТ) користећи либгццјит библиотеку. Уз правилан развој позадине, то ће вам омогућити да прикупите Руст код који је укључен у кернел користећи ГЦЦ.
  • Поред АРМ-а, Гоогле-а и Мицрософт-а, Ред Хат је изразио интересовање за коришћење језика Руст у језгру Линук-а. Подсетимо се да Гугл директно пружа подршку пројекту Руст фор Линук, развија нову имплементацију међупроцесног комуникационог механизма Биндер у Русту и разматра могућност прераде различитих драјвера у Русту. Мицрософт је почео да имплементира драјвере за Хипер-В у Руст-у. АРМ ради на побољшању подршке за Руст за системе засноване на АРМ-у. ИБМ је имплементирао Руст подршку у језгро за ПоверПЦ системе.

Извор: опеннет.ру

Додај коментар