teď je tam toho víc:
menuconfig SAMPLES_RUST You can build sample Rust kernel code here. config SAMPLE_RUST_MINIMAL This option builds the Rust minimal module sample. config SAMPLE_RUST_PRINT This option builds the Rust printing macros sample. config SAMPLE_RUST_MODULE_PARAMETERS This option builds the Rust module parameters sample. config SAMPLE_RUST_SYNC This option builds the Rust synchronisation primitives sample. config SAMPLE_RUST_CHRDEV This option builds the Rust character device sample. config SAMPLE_RUST_MISCDEV This option builds the Rust miscellaneous device sample. config SAMPLE_RUST_STACK_PROBING This option builds the Rust stack probing sample. config SAMPLE_RUST_SEMAPHORE This option builds the Rust semaphore sample. config SAMPLE_RUST_SEMAPHORE_C This option builds the Rust semaphore sample (in C, for comparison).
V jádru se teď toho ohledně Rustu děje hodně, za pozornost stojí "Rust support RFC": https://lkml.org/lkml/2021/4/14/1023
Linus se k němu vyjádřil: https://lkml.org/lkml/2021/4/14/1099
on the whole I don't hate it. HOWEVER. I do think that the "run-time failure panic" is a fundamental issue.
Od Linuse to jde brát jako poměrně vřelé přijetí :-). Má výhrady k run-time failure panicu, což je validní argument. Hlavní problém je v tom, že standardní alokátor Rustu při nedostatku paměti ukončí proces. Alokátor jde snadno vyměnit, aby místo ukončení procesu vrátil např. NULL, ale problém to neřeší, protože standardní knihovna s tím nepočítá, např. std::vec::Vec není moc nachystaný na to, aby řešil nedostatek paměti při realokaci (co s tím taky kromě panic udělat, že...). Možná to povede na úpravu nebo napsání nových datových typů ze standardní knihovny pro kernel, které budou definovaně řešit nedostatek paměti. Nějaká podpora u std::vec::Vec už je v nighty (try_reserve), na řešení se pracuje: https://lkml.org/lkml/2021/4/14/1130