Rust for Linux zawiera kilka ulepszeń do obsługi

W ciągu ostatnich miesięcy Programiści Linuksa kłócili się możliwość zezwolić na używanie języka Rust aby napisać nowe sterowniki urządzeń dla jądra.

W zeszłym roku twórcy jądra Linuksa wydaje się, że osiągnęli porozumienie w tej sprawie, Zwolennicy Rusta cytowali prace pokazujące, że około dwie trzecie luk w jądrze przypisanych CVE w Androidzie i Ubuntu jest związanych z problemami z bezpieczeństwem pamięci.

Po tym oświadczeniu Linus Torvalds, inżynier oprogramowania, główny twórca i twórca jądra Linuksa, powiedział w wywiadzie, że dyskusje na ten temat byłyby znacznie ważniejsze niż długi post Google na ten język.

Zapytany o sugestię użycia Rusta, wskazał, że „Rozwiązanie tutaj jest proste: po prostu użyj C++ zamiast Rusta”.

Po tym w marcu uruchomiono pierwsze wsparciee co pozwoliło na umieszczenie sterowników Rusta w drzewie Linux-Next do dalszych testów przed ich ewentualnym włączeniem do głównego jądra.

Tuż za nim pojawiło się ponownie „prośba o komentarz” na liście dyskusyjnej jądra na temat perspektywy kodu Rusta dla jądra Linuksa.

Miguela OjedyDeweloper jądra Linuksa przedstawił propozycję Request for Comments (RFC) na liście dyskusyjnej jądra Linuksa.

Post na liście dyskusyjnej przedstawiał przekonania programistów zaangażowanych w dodawanie kodu Rust do jądra, korzyści, takie jak zwiększone bezpieczeństwo pamięci i wiele innych.

„Niektórzy z was zauważyli w ostatnich tygodniach i miesiącach, że podjęto poważną próbę wprowadzenia drugiego języka do jądra. W końcu jesteśmy na miejscu, z RFC, który dodaje obsługę Rust do jądra Linuksa ”- powiedział Miguel Ojeja. „Wiemy, że wprowadzenie nowego języka do jądra wiąże się z ogromnymi kosztami i ryzykiem” – dodał.

Zespół projektowy Rust for Linux przeniesiony z kompilatora beta Rust do wersji stabilnych, migrując za każdym razem, gdy wydawana jest nowa wersja.

„Chcielibyśmy podziękować Rustowi za współpracę z nami nad tymi opcjami, aby jądro mogło z nich korzystać”, powiedział Miguel.

Podczas aktualizacji kompilatora zespół udało się usunąć niektóre niestabilne funkcje z listy: const_fn_transmute, const_panic, const_unreachable_unchecked, core_panic i try_reserve.

Oprócz tego podkreślono, że dodano kilka opcji modularyzacji więcej do przydziału, aby wyłączyć niektóre niepotrzebne funkcje: no_rc i no_sync.

Upstream, aby dobrze obsługiwany przypadek użycia jądra, a dokładniej „mieszanka” opcji, których potrzebuje jądro, dodał również no_fp_fmt_parse.

Z drugiej strony, Rust umożliwił szereg dodatkowej diagnostyki dla kompilatora Rust i Clippy. Jedną z różnic w stosunku do C jest to, że diagnostykę Rust można nieco łatwiej wyłączyć w kodzie, co jest bardziej rygorystyczne w ogólnym przypadku.

również zaimplementowano abstrakcje i aktualizacje sterowników. Zespół dodał abstrakcje dla blokad strumieni, wywołań zwrotnych zarządzania energią, pamięci io (readX / writeX), układów irq i menedżerów strumieni wysokiego poziomu, układów gpio (w tym układów irq), urządzeń peryferyjnych, urządzeń peryferyjnych amba i sterowników.

Wsparcie kontroler jest wzbogacony o infrastrukturę niezależną od magistrali, Odwoływalne obiekty, odwoływalne muteksy, wydajne iteratory bitów, lepsza diagnostyka paniki i uproszczone wrappery wskaźników. Dodatkowo ulepszył i uprościł obiekty Ref (kompatybilne z refcount_t) oraz zastąpił wszystkie instancje Rusta.

Nowy sterownik dla urządzeń gpio PL061 został zaimplementowany i dostarczony jako łatka RFC.

Na koniec należy zauważyć, że Wsparcie dla rdzy jest nadal uważane za eksperymentalne. Jednak wsparcie jest na tyle dobre, że programiści jądra zabierają się do pracy w abstrakcji Rusta dla podsystemów zapisu i kontrolerów oraz innych modułów. Obecna seria właśnie pojawiła się na Linux-next, więc pierwsze uruchomienie odbędzie się w tym tygodniu.

źródło: https://lkml.org/lkml


Zostaw swój komentarz

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

*

*

  1. Odpowiedzialny za dane: Miguel Ángel Gatón
  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.