Pojawia się ósma wersja poprawek do obsługi sterowników Rust w systemie Linux

Miguela Ojedzie, autor projektu Rust-for-Linux wydał ósme wydanie rozwoju łat jądra Linuksa z obsługą języka Rust dla programistów jądra Linuksa do rozważenia.

Jest to dziewiąte wydanie łatek (biorąc pod uwagę pierwszą wydaną wersję bez numeru wersji). Wsparcie dla rdzy jest uważane za eksperymentalne, ale jest już zawarty w gałęzi linux-next, żąda integracji w jesiennym wydaniu 5.20/6.0 i jest wystarczająco zaawansowany, aby rozpocząć pracę nad tworzeniem warstw abstrakcji na podsystemach jądra, a także pisaniem kontrolerów i modułów.

Rozwój jest finansowany 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.

Proponowane zmiany umożliwiają wykorzystanie 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 tworzyć 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.

Co nowego w tym ósmym wydaniu?

W tej nowej propozycji, która została wydana, wspomniano, że wariant biblioteki alloc, co wyeliminowało możliwe generowanie stanu „paniki” na błędach, zaktualizowano do wersji Rust 1.62. W porównaniu z poprzednią wersją, zestaw narzędzi Rust ma ustabilizowaną obsługę funkcji const_fn_trait_bound używanej w łatach jądra.

poza tym kod wiązań jest podzielony na wiązkę pudełek „wiązań” oddzielnie, co ułatwia odbudowę, jeśli tylko główny pakiet jądra zostanie zmieniony.

Plik implementacja makra „concat_idents!”, Przepisane na nowo jako makro proceduralne, niezwiązane z funkcjonalnością concat_idents i umożliwiające korzystanie z odwołań do zmiennych lokalnych.

Ponadto wspomina się, że makro "potwierdzenie_statyczne!" został przepisany, aby umożliwić "core::assert!()" jest używane w dowolnym kontekście zamiast stałych, podczas gdy makro "construction_error!" został przystosowany do pracy przy ustawianiu trybu „RUST_BUILD_ASSERT_{WARN,ALLOW}” dla modułów.

dodano moduł fs który zawiera łącza do pracy z systemami plików. Zaproponowano przykład prostego systemu plików napisanego w Ruście, a także dodany moduł kolejki zadań do pracy z kolejkami systemowymi.

Z innych zmian które wyróżniają się na tle tej nowej propozycji:

  • Dodano osobny plik konfiguracyjny "kernel/configs/rust.config".
  • Pliki "*.i" przetwarzane w podstawieniach makr zostały przemianowane na "*.rsi".
  • Usunięto obsługę budowania komponentów Rust z poziomami optymalizacji innymi niż te używane w kodzie C.
  • Rozwój modułu kasync kontynuowany był poprzez implementację metod programowania asynchronicznego (async).
  • Dodano przykład serwera TCP na poziomie jądra napisanego w Ruście i dodano możliwość obsługi przerwań w Ruście.
  • Dodano makro procedury, aby ułatwić pracę z tabelami wskaźników funkcji, takimi jak struktura file_operations.
  • Dodano implementację dwukierunkowej połączonej listy "unsafe_list::List".
  • Dodano początkową obsługę RCU i typu Guard, aby sprawdzić, czy blokada odczytu jest powiązana z bieżącym wątkiem.
  • Dodano funkcję Task::spawn() do automatycznego tworzenia i uruchamiania wątków jądra.
  • Dodano również metodę Task::wake_up().
  • Dodano moduł opóźnienia

W końcu jeśli chcesz dowiedzieć się więcej na ten tematmożesz sprawdzić szczegóły 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.