Четврто издание на закрпи за кернелот Линукс со поддршка за јазикот Rust

Мигел Оједа, автор на проектот Rust-for-Linux, предложи четврта верзија на компоненти за развој на двигатели на уреди во јазикот Rust за разгледување од развивачите на кернелот на Linux. Поддршката за 'рѓа се смета за експериментална, но веќе е договорена за вклучување во гранката на Linux-следната и е доволно зрела за да започне да работи на создавање слоеви за апстракција преку потсистеми на јадрото, како и пишување двигатели и модули. Развојот е финансиран од Google и ISRG (Internet Security Research Group), која е основач на проектот 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 во системот.
  • Предложени се нови апстракции за пристап до табелите со идентификатори на уреди („IdArray“ и „IdTable“) од Rust кодот.
  • Додадени слоеви за пристап до функции поврзани со тајмерот (рамка на часовникот).
  • Сега двигателите на платформата се дефинираат преку имплементации на особини.
  • Додадено е ново макро за да се поедностави регистрацијата на двигателите на платформата и предложен е нов генерички образец за драјвери.
  • Додадени макроа за структурите „dev_*“.
  • Додадени се методите „{read,write}*_relaxed“ за типот IoMem .
  • Отстранет е својството FileOpener за да се поедностават операциите со датотеките.
  • Параметарот „ThisModule“ е додаден на аргументите донесени при регистрација на драјвер.
  • Се предлага стандарден шаблон за креирање модули на јадрото на јазикот Rust.

Извор: opennet.ru

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