Rust nie był wolny od krytyki Linusa Torvaldsa

Kilka tygodni temu wiadomości z około niektóre implementacje, które zostały wykonane w gałąź linux-next, która zawiera początkowy zestaw komponentów aby opracować sterowniki urządzeń w języku Rust.

Ta dokumentacja została opublikowana oddzielnie na temat użycia Rusta w jądrze Linuksa oraz przykład modułu jądra ze sterownikiem urządzenia znakowego w języku Rust. Kod został dodany przez Stephena Rothwella, opiekuna gałęzi.

Następnie Linus Torvalds przeszedł do przeglądu wdrożenia łatka możliwości ustawienia sterowników języka Rust w jądrze Linuksa i wyraził krytykę.

Największe skargi spowodował potencjał ucieczki „Panicencja na awarie w czasie pracy” w niewłaściwych sytuacjach, na przykład w sytuacji braku pamięci, gdy dynamiczne operacje alokacji pamięci, w tym operacje jądra, mogą się nie powieść.

Torvalds stwierdził, że takie skupianie się na jądrze jest zasadniczo niedopuszczalne, A jeśli nie rozumiesz tego punktu, możesz całkowicie odrzucić każdy kod, który próbuje zastosować takie podejście. Z drugiej strony twórca łatki zgodził się z problemem i uznał go za możliwy do rozwiązania.

Innym problemem były próby użycia typów zmiennoprzecinkowych lub 128-bitowych, które nie są poprawne dla środowisk takich jak jądro Linuksa.

Możesz nie rozumieć konsekwencji tego, kiedy może się to zdarzyć, więc może
jest mniejszym problemem niż myślę, ale zasadniczo
Myślę, że jeśli jakiekolwiek mapowanie Rdzy może wywołać panikę, to po prostu
_ zasadniczo_ nie do przyjęcia.

Błędy mapowania w kontrolerze lub kodzie innym niż podstawowy, czyli w przypadku
Definicja, cały nowy kod Rusta, NIGDY nie może spowodować
panika słusznie. To samo dotyczy „och, w niektórych przypadkach nie próbowałem go użyć
128-bitowe liczby całkowite lub zmiennoprzecinkowe ”.

Więc jeśli kompilator Rust powoduje ukryte przypisania, których nie może być
wykryć i powrócić jako błędy, to naprawdę wierzę, że to wszystko
podejście powinno być całkowicie NAK'owe, a infrastruktura Rusta,
czy to na poziomie kompilatora, czy w opakowaniach jądra, potrzebujesz więcej
praca.

Okazało się, że jest to poważniejszy problem., ponieważ w tej chwili Centralna biblioteka Rusta jest niepodzielna i stanowi dużą plamę; nie ma możliwości zażądania tylko niektórych funkcji, unikając w ten sposób korzystania z jednej lub drugiej problematycznej funkcjonalności.

Rozwiązanie problemu może wymagać zmian w kompilatorze i bibliotece rdzy, chociaż zespół nie ma jeszcze strategii wdrażania modułowości dla bibliotek językowych.

Ponadto, Torvalds zwrócił uwagę, że podany przykładowy kontroler jest bezużyteczny i radził dołączyć jako przykład sterownik, który rozwiązuje jeden z rzeczywistych problemów.

Przed tym Firma Google ogłosiła swój udział w inicjatywie promującej obsługę Rusta w jądrze Linuksa y podane aspekty techniczne możliwości zaimplementowania Rusta do zwalczania problemów wynikających z błędów w pracy z pamięcią.

Google uważa, że ​​Rust jest gotowy do dołączenia do C jako języka programowania Składniki jądra systemu Linux. Artykuł zawiera również przykłady wykorzystania języka Rust do tworzenia sterowników jądra w kontekście jego wykorzystania na platformie Android (Rust jest uznawany za oficjalnie obsługiwany język do programowania na Androida).

Należy zauważyć, że Google przygotował wstępny prototyp kontrolera napisany w języku Rust za mechanizm komunikacji między procesami Binder, który pozwoli na szczegółowe porównanie wydajności i bezpieczeństwa implementacji Binder w językach C i Rust.

W obecnej formie praca nie została jeszcze zakończona, ale dla prawie wszystkich podstawowych abstrakcji funkcji jądra wymaganych do działania programu Binder warstwy zostały przygotowane do korzystania z tych abstrakcji w kodzie Rusta.

Wreszcie, jeśli chcesz dowiedzieć się więcej na ten temat, moż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.

  1.   Miguel Rodriguez powiedział

    Cała ich krytyka jest słuszna, biorąc pod uwagę, że Rust jest nowym językiem, który działa z innym paradygmatem niż ten z C, zrozumiałe jest obawy dotyczące wszelkich szczegółów w bibliotekach lub w samym kompilatorze, gdzie chociaż kod jest prawidłowy, powoduje jądro również do zepsucia, w jaki sposób jest zaimplementowane i zbudowane. Dlatego sugestie, takie jak możliwość modularyzacji biblioteki, aby wywoływać i utrzymywać aktywne tylko te funkcje, które są niezbędne dla programu (lub w tym przypadku dla dowolnego kontrolera), działają poprawnie. Nie jest też to, o co prosisz, nie jest nierozsądne, ponieważ przynoszą ci prawdziwy prototypowy kontroler, który dobrze radzi sobie z bieżącym problemem (lub przynajmniej wykonuje tę samą pracę, co istniejący w jądrze i działa bez paniki).

  2.   Sete powiedział

    Od czasu do czasu ponownie czytam artykuły autorstwa Linux Adictos Ale bardzo mało czasu zajmuje mi wpadnięcie w rozpacz, gdy widzę, że pomimo bardzo dobrej treści, końcowy wynik zostaje zniszczony przez okropną ortografię.
    Czy pisownia i gramatyka będą takie trudne?
    Wstyd!
    Rozchmurz się!