Opublikowano piątą wersję poprawek do obsługi sterowników Rusta w systemie Linux

Ostatnio Miguela Ojedy, autor projektu Rust-for-Linux wydał piątą propozycję Twórcy jądra Linuksa wybrani dla komponentów programistycznych Zardzewiałe sterowniki urządzeń do rozważenia.

Dla tych, którzy wciąż nie wiedzą o tej serii propozycji, które były publikowane od kilku miesięcy, powinniście wiedzieć, że pomysł za nią wynika z faktu, że obsługa Rusta jest obecnie uważana za eksperymentalną, ale jest już zawarty w gałęzi linux-next i jest wystarczająco dojrzały, aby rozpocząć pracę nad tworzeniem warstw abstrakcji o podsystemach jądra, a także o pisaniu sterowników i modułów.

Obecnie Komisja rozwoju Miguela Ojedy jest finansowana przez Google i ISRG (Internet Security Research Group), która jest założycielem projektu Let's Encrypt i promuje HTTPS oraz rozwój technologii zwiększających bezpieczeństwo w Internecie.

Należy wspomnieć, że proponowane zmiany umożliwiają użycie Rusta jako drugiego języka do tworzenia sterowników i modułów jądra. Obsługa Rusta jest prezentowana jako opcja, która nie jest domyślnie włączona i nie powoduje włączenia Rusta do wymaganych zależności kompilacji dla jądra.

Używanie Rusta do tworzenia sterowników pozwoli Ci budować lepsze i bezpieczniejsze sterowniki przy minimalnym wysiłku, bez problemów, takich jak dostęp do obszaru pamięci po jego zwolnieniu, wyłuskiwanie pustych wskaźników i przepełnianie bufora.

Bezpieczeństwo pamięci jest zapewniane w Rust w czasie kompilacji poprzez sprawdzanie referencji, śledzenie własności obiektu i czasu życia obiektu (zakres), a także poprzez ocenę poprawności dostępu do pamięci podczas wykonywania kodu. Rust zapewnia również ochronę przed przepełnieniem liczb całkowitych, wymaga zainicjowania zmiennych przed użyciem, lepiej radzi sobie z błędami w standardowej bibliotece, domyślnie wymusza koncepcję niezmiennych zmiennych i referencji oraz oferuje silne statyczne typowanie w celu zminimalizowania błędów logicznych.

Główne nowości w piątej propozycji

W nowej wersji łatek, kontynuowało usuwanie komentarzy dokonane podczas dyskusji nad łatkami pierwszej, drugiej, trzeciej i czwartej edycji.

W części wprowadzonych zmian i ulepszeń możemy stwierdzić, że walidacja komponentów dla kompatybilności z Rustem został dodany do systemu ciągłej integracji na podstawie zgodnego z Intelem bota 0DAY/LKP i zaczęły być publikowane raporty z testów.

Oprócz tego podkreślono, że integracja wsparcia Rust jest przygotowywana w automatyczny system testowy Jądro CI, plus testy oparte na GitHub CI zostały przełączone na używanie kontenerów.

Podkreśla się również, że dodano możliwość definiowania dodatkowych parametrów podczas rejestracji urządzeń, a także skrypt is_rust_module.sh został przeprojektowany dodano obsługę statycznych prymitywów synchronizacji (globalne zmienne współdzielone) w oparciu o implementację „CONFIG_CONSTRUCTORS”.

z inne zmiany, które się wyróżniają w tej nowej propozycji kontrolerów:

  • Moduły Rust Core nie muszą definiować atrybutów: "#![no_std]" i "#![feature(...)]".
  • Dodano obsługę pojedynczych celów kompilacji (.o, .s, .ll i .i).
  • Wytyczne dotyczące kodu definiują teraz zasady rozdzielania komentarzy („//”) i dokumentowania kodu („///”).
  • Uproszczone zarządzanie blokadą: Guard i GuardMut są połączone w jeden sparametryzowany typ.
  • Dodano abstrakcję „RwSemaphore”, która działa jako opakowanie nad strukturą C rw_semaphore.
  • Aby korzystać z mmap, dodano nowy moduł mm i abstrakcję VMA (powiązanie w strukturze vm_area_struct).
  • Kontroler PL061 GPIO został zmieniony tak, aby używał makra "dev_*!".
  • Ogólne czyszczenie kodu.

W końcu jeśli chcesz dowiedzieć się więcej na ten temat o tej nowej propozycji możesz zapoznać się ze szczegółami W poniższym linku.


Zostaw swój komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

*

*

  1. Odpowiedzialny za dane: AB Internet Networks 2008 SL
  2. Cel danych: kontrola spamu, zarządzanie komentarzami.
  3. Legitymacja: Twoja zgoda
  4. Przekazywanie danych: Dane nie będą przekazywane stronom trzecim, z wyjątkiem obowiązku prawnego.
  5. Przechowywanie danych: baza danych hostowana przez Occentus Networks (UE)
  6. Prawa: w dowolnym momencie możesz ograniczyć, odzyskać i usunąć swoje dane.