Rust тилин колдогон Linux ядросу үчүн тактардын онунчу версиясы

Мигель Ожеда, Rust-for-Linux долбоорунун автору, Linux ядросун иштеп чыгуучулардын кароосуна Rust тилиндеги түзмөк драйверлерин иштеп чыгуу үчүн v10 компоненттерин чыгарууну сунуштады. Бул версия номери жок басылып чыккан биринчи версияны эске алуу менен патчтардын он биринчи чыгарылышы. Rust колдоосун кошуу Linux 6.1 ядросуна киргизүү үчүн Linusum Torvalds тарабынан жактырылып, күтүлбөгөн көйгөйлөргө жол бербейт. Иштеп чыгуу Google жана ISRG (Internet Security Research Group) тарабынан каржыланат, ал Let's Encrypt долбоорунун негиздөөчүсү жана HTTPS жана Интернеттин коопсуздугун жакшыртуу үчүн технологияларды өнүктүрүүгө көмөктөшөт.

Мурунку патч версиясы сыяктуу эле, v10 релизинин версиясы Rust тилинде жазылган жөнөкөй ядро ​​модулун куруу үчүн жетиштүү болгон минимумга чейин кыскартылган. Мурунку версиядан айырмачылыктар kallsyms.c ичиндеги sizeof ARRAY_SIZE менен алмаштырылган жана v6.0-rc7 ядросуна ыңгайлаштырылган майда түзөтүүлөрдөн келип чыккан. Өлчөмү коддун 40тан 13 миң сапка чейин кыскартылган минималдуу патч негизги ядрого Rust колдоосун кабыл алууну жөнөкөйлөтөт деп күтүлүүдө. Минималдуу колдоо көрсөткөндөн кийин, Rust-for-Linux бутагынан башка өзгөртүүлөрдү өткөрүп, учурдагы функцияларды акырындык менен жогорулатуу пландаштырылууда.

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

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

Source: opennet.ru

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