[О блоге] [наверх] [пред] [2026-01-14 14:35:14+03:00] [e6e92d2c9be2788072caa9bf30ae79bdb7664882]
Темы: [c][rust][systemd]

Rust в Linux: разница идеологий

https://felipec.wordpress.com/2025/02/13/rust-not-for-linux/
https://rust-unofficial.github.io/too-many-lists/
Автор статьи рассуждает о Rust в Linux: что это, в первую очередь,
спор идеологий. Автор трогал Rust и заявляется что в нём нельзя сделать
связанные списки. А в Linux их 10k+. Если Rust нацеливается заменить Си,
то он должен мочь выполнять те же самые задачи. Rust люди постоянно
любят говорить другим что им надо делать, как что-либо надо делать. И
они говорят о том, что просто не надо использовать связанные списки. Вот
так вот просто.

Ещё приводит пример простой структуры на Си и Rust:

    C:
        struct person {
            char name[50];
            int age;
            struct person *boss;
        };

        struct person john = { .name = "John Doe", .age = 25 };

    Rust:
        struct Person<'a> {
            name: &'a str,
            age: u32,
            boss: Option<&'a Person<'a>>,
        }

        let john = Person { name: "John Doe", age: 25, boss: None };

причём в Си это же самое определение структуры может использоваться и
для переменных как в стэке, так и куче. В Rust же нужно другую структуру
написать для использования в куче.

Си-шники обычно предлагают какое-то рабочее решение, которое после
оценок, если годится и хорошее, начинает внедряться в Linux. Типа снизу
вверх внедрение идёт. Rust хотят услышать слово подтверждения от Линуса,
и только после этого начинать вносить правки в ядро. Типа сверху вниз
внедрение. Последователи Rust ведут себя точно также как и всякие борцы
за "they" вместо "she", "main" вместо "master" (думаю, что можно и не
сомневаться в том, что эти множества борцов сильно пересекаются между
собой) -- агрессивно и активно продавливают (включая угрозы, шантаж) эти
изменения в конечный софт/инструменты, вместо того, чтобы люди плавно
самостоятельно понимали, принимали и использовали что-то более корректно.

Касательно связанных списков в Rust: прочитал статью на которую автор
ссылается. Начало мне уже "понравилось": чтобы реализовать список, вам
понадобится изучить следующее:

    * The following pointer types: &, &mut, Box, Rc, Arc, *const, *mut, NonNull(?)
    * Ownership, borrowing, inherited mutability, interior mutability, Copy
    * All The Keywords: struct, enum, fn, pub, impl, use, ...
    * Pattern matching, generics, destructors
    * Testing, installing new toolchains, using miri
    * Unsafe Rust: raw pointers, aliasing, stacked borrows, UnsafeCell, variance

    [оставить комментарий]