Rust тилин колдогон Linux ядросу үчүн патчтардын экинчи чыгарылышы

Мигель Ожеда, Rust-for-Linux долбоорунун автору, Linux ядросун иштеп чыгуучулардын кароосуна Rust тилиндеги түзмөк драйверлерин иштеп чыгуу үчүн компоненттердин жаңыланган версиясын сунуштады. Rust колдоосу эксперименталдык деп эсептелет, бирок буга чейин Linux-кийинки бутагына кошуу үчүн макулдашылган. Жаңы версия патчтардын биринчи версиясын талкуулоо учурунда айтылган сын-пикирлерди жок кылат. Линус Торвалдс буга чейин талкууга кошулуп, кээ бир бит операцияларын иштетүү логикасын өзгөртүүнү сунуштаган.

Эске салсак, сунушталган өзгөртүүлөр Rust тилин драйверлерди жана ядро ​​модулдарын иштеп чыгуу үчүн экинчи тил катары колдонууга мүмкүндүк берет. Rust колдоосу демейки боюнча иштетилбеген опция катары сунушталат жана Rust ядро ​​үчүн керектүү куруу көз карандылыгы катары киргизилбейт. Драйверди өнүктүрүү үчүн Rust колдонуу сизге минималдуу күч менен коопсуз жана жакшыраак драйверлерди түзүүгө мүмкүндүк берет, алар бошоткондон кийин эстутумга кирүү, нөл көрсөткүчтүн ажыратылышы жана буфердин ашып кетиши сыяктуу көйгөйлөрдөн кутулат.

Эстутумдун коопсуз иштөөсү Rust программасында компиляция убагында маалымдама текшерүү, объектке ээлик кылуу жана объекттин иштөө мөөнөтүн (ааламында) эсепке алуу, ошондой эле кодду аткаруу учурунда эстутумга кирүүнүн тууралыгын баалоо аркылуу камсыз кылынат. Rust ошондой эле бүтүн сандардын ашып кетишинен коргоону камсыздайт, өзгөрмөлөрдү колдонуудан мурун инициализациялоону талап кылат, стандарттык китепканада каталарды жакшыраак иштетет, демейки боюнча өзгөрүлгүс шилтемелер жана өзгөрмөлөр концепциясын колдонот жана логикалык каталарды азайтуу үчүн күчтүү статикалык терүүнү сунуштайт.

Жамааттардын жаңы версиясындагы эң көрүнүктүү өзгөрүүлөр:

  • Эстутум бөлүштүрүү коду эстутум жетишсиздиги сыяктуу каталар пайда болгондо потенциалдуу "паника" абалын пайда кылуудан бошотулат. Rust alloc китепканасынын варианты камтылган, ал каталарды чечүү үчүн кодду кайра иштетет, бирок түпкү максат ядро ​​үчүн зарыл болгон бардык функцияларды allocтун негизги редакциясына өткөрүп берүү (өзгөрүүлөр мурунтан эле даярдалып, стандартка которулган) Rust китепканасы).
  • Түнкү түзүлүштөрдүн ордуна, эми Rust колдоосу менен ядрону компиляциялоо үчүн rustc компиляторунун бета-релиздерин жана туруктуу релиздерин колдонсоңуз болот. Учурда, rustc 1.54-beta1 шилтеме компилятору катары колдонулат, бирок айдын аягында 1.54 релиз чыккандан кийин, ал маалымдама компилятору катары колдоого алынат.
  • Rust үчүн стандарттык “#[test]” атрибутун жана тесттерди документтештирүү үчүн доктесттерди колдонуу мүмкүнчүлүгүн колдонуу менен тест жазуу үчүн колдоо кошулду.
  • Мурда колдоого алынган x32_86 жана ARM64ге кошумча ARM64 жана RISCV архитектураларына колдоо кошулду.
  • GCC Rust (Rust үчүн GCC frontend) жана rustc_codegen_gcc (GCC үчүн rustc backend) жакшыртылган ишке ашыруу, азыр бардык негизги сыноолордон өтөт.
  • Абстракциянын жаңы деңгээли C тилинде жазылган ядро ​​механизмдеринин Rust программаларында колдонуу үчүн сунушталган, мисалы, кызыл-кара дарактар, шилтеме менен эсептелген объекттер, файл дескрипторун түзүү, тапшырмалар, файлдар жана киргизүү/чыгаруу векторлору.
  • Драйверди өнүктүрүү компоненттери file_operations модулу, модуль! макро, макро каттоо жана жөнөкөй драйверлер үчүн жакшыртылган колдоону камтыйт (проб жана жок кылуу).
  • Биндер азыр өтүүчү файл дескрипторлорун жана LSM илгичтерин колдойт.
  • Rust драйверинин функционалдык үлгүсү сунушталган - bcm2835-rng Raspberry Pi такталарынын аппараттык кокустук сандар генератору үчүн.

Мындан тышкары, ядродо Rust колдонууга байланыштуу кээ бир компаниялардын долбоорлору айтылган:

  • Microsoft корпорациясы Rust колдоосун Linux ядросуна интеграциялоо боюнча ишке катышууга кызыкдар экенин билдирди жана жакынкы айларда Hyper-V боюнча Rust үчүн драйверди ишке ашырууну камсыз кылууга даяр.
  • ARM ARM негизделген системалар үчүн Rust колдоосун жакшыртуу үчүн иштеп жатат. Rust долбоору буга чейин 64 биттик ARM системаларын Tier 1 платформасына айландырган өзгөртүүлөрдү сунуштаган.
  • Google Rust for Linux долбооруна түздөн-түз колдоо көрсөтөт, Rust'та Binder процесстер аралык байланыш механизминин жаңы ишке ашырылышын иштеп чыгууда жана Rust'та ар кандай драйверлерди кайра иштетүү мүмкүнчүлүгүн карап жатат. ISRG (Internet Security Research Group) аркылуу Google Rust колдоосун Linux ядросуна интеграциялоо иштерин каржылоону камсыздаган.
  • IBM PowerPC системалары үчүн Rust үчүн ядро ​​колдоосун ишке ашырды.
  • LSE (системалык изилдөө лабораториясы) лабораториясы Rust шаарында SPI драйверин иштеп чыкты.

Source: opennet.ru

Комментарий кошуу