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

Мигел Оједа, автор на проектот Rust-for-Linux, предложи петта верзија на компоненти за развој на двигатели на уреди во јазикот Rust за разгледување од развивачите на кернелот на Linux. Поддршката за 'рѓа се смета за експериментална, но веќе е вклучена во следната гранка на Linux и е доволно развиена за да започне со работа на создавање слоеви за апстракција преку потсистеми на јадрото, како и пишување двигатели и модули. Развојот е финансиран од Google и ISRG (Internet Security Research Group), која е основач на проектот Let’s Encrypt и промовира HTTPS и развој на технологии за подобрување на безбедноста на Интернет.

Потсетете се дека предложените промени овозможуваат користење на Rust како втор јазик за развој на двигатели и модули на јадрото. Поддршката на Rust е претставена како опција што не е стандардно овозможена и не резултира со вклучување на Rust како потребна зависност од изградбата на кернелот. Користењето на Rust за развој на драјвери ќе ви овозможи да креирате побезбедни и подобри драјвери со минимален напор, без проблеми како што се пристап до меморијата по ослободувањето, дереференции на нула покажувач и пречекорувања на баферот.

Безбедното ракување со меморијата е обезбедено во Rust во времето на компајлирање преку проверка на референци, следење на сопственоста на објектот и животниот век на објектот (обем), како и преку проценка на исправноста на пристапот до меморијата за време на извршувањето на кодот. Rust исто така обезбедува заштита од прелевање на цели броеви, бара задолжителна иницијализација на вредностите на променливите пред употреба, подобро се справува со грешките во стандардната библиотека, стандардно го применува концептот на непроменливи референци и променливи, нуди силно статичко пишување за да се минимизираат логичките грешки.

Новата верзија на лепенките продолжува да ги елиминира коментарите дадени за време на дискусијата за првото, второто, третото и четвртото издание на закрпите. Во новата верзија:

  • Тестирањето на компоненти за поддршка на Rust е додадено во системот за континуирана интеграција базиран на ботот 0DAY/LKP поддржан од Intel и започна објавувањето на извештаите за тестирање. Се подготвуваме да ја интегрираме поддршката на Rust во системот за автоматско тестирање KernelCI. Тестирањето базирано на GitHub CI е префрлено на употреба на контејнери.
  • Модулите на Rust кернелот се ослободени од потребата да се дефинираат атрибутите на гајба „#![no_std]“ и „#![feature(…)]“.
  • Додадена е поддршка за цели за единечни склопувања (.o, .s, .ll и .i).
  • Упатствата за кодот ги дефинираат правилата за одвојување на коментарите („//“) и документирање на кодот („///“).
  • Скриптата is_rust_module.sh е преработена.
  • Додадена е поддршка за статички (глобална споделена променлива) примитиви за синхронизација врз основа на имплементацијата „CONFIG_CONSTRUCTORS“.
  • Управувањето со заклучување е поедноставено: Guard и GuardMut се комбинирани и еден параметризиран тип.
  • Можно е да се дефинираат дополнителни параметри при регистрирање уреди.
  • Додадена е апстракцијата „RwSemaphore“, која делува како обвивка над структурата rw_semaphore C.
  • За да се користи mmap, додаден е нов mm модул и VMA апстракција (обвивка над структурата vm_area_struct).
  • Возачот на GPIO PL061 е префрлен на користење на макрото „dev_*!“.
  • Беше извршено општо чистење на кодот.

Извор: opennet.ru

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