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

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

Source: opennet.ru

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