• naurM
    link
    fedilink
    arrow-up
    1
    ·
    2 years ago

    Zaznaczam, że nie widziałem kodu tego sterownika, ale czytając wątek na Nitterze nie sposób nie zauważyć fascynacji automatycznym zarządzaniem zasobami w Rust.
    Zastanawiam się, czy migracja niskopoziomowych programistów C do Rusta nie rozpocznie mody na pisanie niezbyt wydajnego kodu.

    To jest coś, z czym od lat próbuje walczyć Muratori, bo łatwość stososowania wzorca RAII w C++ spowodowała dokładnie ten sam problem. Alokacje pamięci są teraz wszędzie, prawie nikt nie zastanawia się nad tworzeniem np. stringów w pętlach.

    To jest trochę paradoksalne, ale C poprzez swoją toporność w zarządzaniu zasobami skłaniało ludzi do stosowania wydajnych rozwiązań - prealokacji zasobów na samym starcie i zwalniania ich tak późno, jak tylko się dało.

    Oczywiście da się to zrobić lepiej zarówno w C++, jak i w Rust. Ostatnio czytałem nawet artykuł, gdzie gość implementował raytracer minimalizując ilość alokacji - https://matklad.github.io/2022/10/06/hard-mode-rust.html
    Problem polega na tym, że takie rozwiązanie w Rust wymaga ręcznego zarządzania czasem życia obiektów (referencje muszą mieć podany lifetime), a to potrafi być niesamowicie uciążliwe (znacznie bardziej niż w przypadku C++).
    Nie chciałbym, żeby za parę lat Linus narzekał, że włączenie Rusta do kernela było błędem, bo spowolniło kod.