Мигель Ожеда, "Дат үчүн" долбоорунун авторуLinux, ядро иштеп чыгуучуларынын кароосуна сунушталган Linux Rust'та түзмөк драйверлерин иштеп чыгуу үчүн компоненттердин үчүнчү версиясы. Rust колдоосу эксперименталдык деп эсептелет, бирок linux-next тармагына киргизүү үчүн бекитилген. Иштеп чыгууну Google жана HTTPS жана интернет коопсуздугун жакшыртуу үчүн технологияларды иштеп чыгууну жайылткан Let's Encrypt долбоорунун негиздөөчүсү ISRG (Интернет коопсуздугун изилдөө тобу) каржылайт.
Эске салсак, сунушталган өзгөртүүлөр Rust тилин драйверлерди жана ядро модулдарын иштеп чыгуу үчүн экинчи тил катары колдонууга мүмкүндүк берет. Rust колдоосу демейки боюнча иштетилбеген опция катары сунушталат жана Rust ядро үчүн керектүү куруу көз карандылыгы катары киргизилбейт. Драйверди өнүктүрүү үчүн Rust колдонуу сизге минималдуу күч менен коопсуз жана жакшыраак драйверлерди түзүүгө мүмкүндүк берет, алар бошоткондон кийин эстутумга кирүү, нөл көрсөткүчтүн ажыратылышы жана буфердин ашып кетиши сыяктуу көйгөйлөрдөн кутулат.
Эстутумдун коопсуз иштөөсү Rust программасында компиляция убагында маалымдама текшерүү, объектке ээлик кылуу жана объекттин иштөө мөөнөтүн (ааламында) эсепке алуу, ошондой эле кодду аткаруу учурунда эстутумга кирүүнүн тууралыгын баалоо аркылуу камсыз кылынат. Rust ошондой эле бүтүн сандардын ашып кетишинен коргоону камсыздайт, өзгөрмөлөрдү колдонуудан мурун инициализациялоону талап кылат, стандарттык китепканада каталарды жакшыраак иштетет, демейки боюнча өзгөрүлгүс шилтемелер жана өзгөрмөлөр концепциясын колдонот жана логикалык каталарды азайтуу үчүн күчтүү статикалык терүүнү сунуштайт.
Жамааттардын жаңы версиясы патчтардын биринчи жана экинчи версияларын талкуулоо учурунда айтылган сын-пикирлерди жок кылууну улантууда. Эң көрүнүктүү өзгөрүүлөр:
- Расмий компилятор катары Rust 1.57нин туруктуу чыгарылышын колдонууга өтүү жүргүзүлдү жана Rust 2021 тилинин турукташтырылган чыгарылышына шилтеме буга чейин Rust бета бутагына байланган жана кээ бир тил функциялары колдонулган туруксуз деп классификацияланган. Rust 2021 спецификациясына өтүү бизге const_fn_transmute, const_panic, const_unavailable_unchecked жана core_panic жана try_reserve сыяктуу патчтарда туруксуз функцияларды колдонбоо үчүн ишти баштоого мүмкүндүк берди.
- Жамааттарга киргизилген Rust alloc китепканасынын версиясын иштеп чыгуу улантылды, каталар пайда болгондо, мисалы, эс тутумдан чыгып калганда "паника" абалынын мүмкүн болуучу муундун эстутум бөлүштүрүү функцияларын жок кылуу үчүн өзгөртүлдү. Жаңы версия өзөктүн Rust кодунда колдонулбаган функцияларды өчүрүү үчүн “no_rc” жана “no_sync” опцияларын ишке ашырып, китепкананы модулдук кылат. Ядро үчүн зарыл болгон өзгөртүүлөрдү негизги китепканага өткөрүүгө багытталган негизги бөлүштүрүүчү иштеп чыгуучулар менен иш уланууда. Китепкана ядро деңгээлинде иштеши үчүн талап кылынган "no_fp_fmt_parse" опциясы Rust базалык китепканасына (негизги) жылдырылды.
- CONFIG_WERROR режиминде ядрону курууда мүмкүн болгон компилятордун эскертүүлөрүнөн кутулуу үчүн код тазаланган. Rust ичинде кодду курууда, кошумча компилятордун диагностикалык режимдери жана Clippy линтер эскертүүлөрү иштетилет.
- Абстракциялар Rust кодунда seqlocks (ырааттуу кулпулар), кубаттуулукту башкаруу үчүн кайра чалуулар, киргизүү/чыгаруу эс тутуму (readX/writeX), үзгүлтүккө учуроо жана жип иштетүүчүлөр, GPIO, түзмөктөргө, драйверлерге жана эсептик маалыматтарга кирүү үчүн сунушталат.
- Драйверди өнүктүрүү куралдары көчүрүлгөн мутекстерди, бит итераторлорду, көрсөткүчтөрдү жөнөкөйлөштүрүүнү, жакшыртылган ката диагностикасын жана маалымат шинасына көз карандысыз инфраструктураны камтыйт.
- Шилтемелерди эсептөө үчүн ошол эле аталыштагы ядро API колдоно турган refcount_t серверине негизделген жөнөкөйлөштүрүлгөн Ref түрүн колдонуу менен шилтемелер менен жакшыртылган иш. Стандарттык бөлүштүрүү китепканасында берилген Arc жана Rc түрлөрүн колдоо алынып салынды жана ядро деңгээлинде аткарылган коддо жеткиликтүү эмес (бул типтерди өчүрүүчү варианттар китепкананын өзү үчүн даярдалган).
- Жамааттар Rustта кайра жазылган PL061 GPIO драйверинин версиясын камтыйт. Драйвердин өзгөчөлүгү, анын аткарылышы дээрлик С тилиндеги GPIO драйверин кайталайт. Rustто драйверлерди түзүү менен таанышкысы келген иштеп чыгуучулар үчүн Rustто C коду кайсы конструкцияларга айландырылганын түшүнүүгө мүмкүндүк берген сапка салыштыруу даярдалды.
- Негизги Rust код базасы rustc_codegen_gcc кабыл алган, GCC үчүн rustc backend, ал libgccjit китепканасын колдонуу менен мөөнөтүнөн мурда компиляцияны (AOT) ишке ашырат. Backend туура иштеп чыгуу менен, ал GCC аркылуу ядродо тартылган Rust кодун чогултууга мүмкүндүк берет.
- ARM, Google жана Microsoft компанияларынан тышкары, ядродо Rust тилин колдонууга кызыгуу бар. Linux Red Hat билдирди. Эске сала кетсек, Google Rust долбоорун түздөн-түз колдойт Linux, Rust программасында Binder өз ара байланыш механизминин жаңы ишке ашыруусун иштеп чыгууда жана Rust программасында ар кандай драйверлерди кайра жазууну карап жатат. Microsoft Rust программасында Hyper-V үчүн драйверлерди ишке ашыра баштады. ARM ARM процессорлоруна негизделген системалар үчүн Rust колдоосун жакшыртуунун үстүндө иштеп жатат. IBM PowerPC системалары үчүн ядродо Rust колдоосун ишке ашырды.
Source: opennet.ru
