Rust тілін қолдауы бар Linux ядросына арналған патчтардың төртінші шығарылымы

Мигель Охеда, Rust-for-Linux жобасының авторы Linux ядросын жасаушылардың қарауы үшін Rust тілінде құрылғы драйверлерін әзірлеуге арналған компоненттердің төртінші нұсқасын ұсынды. 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 қолдауын тексеру мүмкіндігі кеңейтілді.
  • Rust кодынан құрылғы идентификаторының кестелеріне («IdArray» және «IdTable») қол жеткізу үшін жаңа абстракциялар ұсынылды.
  • Таймерге қатысты функцияларға қол жеткізу үшін қабаттар қосылды (сағат шеңбері).
  • Платформа драйверлері енді белгілерді іске асыру арқылы анықталады.
  • Платформа драйверлерін тіркеуді жеңілдету үшін жаңа макрос қосылды және жаңа жалпы драйвер үлгісі ұсынылды.
  • "dev_*" құрылымдары үшін макростар қосылды.
  • IoMem түріне арналған "{оқу, жазу}*_relaxed" әдістері қосылды .
  • Файл операцияларын жеңілдету үшін FileOpener сипаты жойылды.
  • Драйверді тіркеу кезінде берілген аргументтерге «ThisModule» параметрі қосылды.
  • Rust тілінде ядро ​​модульдерін құрудың стандартты үлгісі ұсынылған.

Ақпарат көзі: opennet.ru

пікір қалдыру