[О блоге]
[наверх]
[пред]
[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
[оставить комментарий]