Джош Тріплет (Josh Triplett), що працює в компанії Intel і входить до комітету, що займається розвитком Crates.io, у своєму виступі на конференції Open Source Technology Summit
У робочій групі, яка перебуває у процесі створення, розробники Rust спільно з інженерами з компанії Intel підготують специфікації з визначенням функціональності, яку необхідно реалізувати Rust для системного програмування. Системне програмування часто потребує низькорівневих маніпуляцій, таких як виконання привілейованих процесорних інструкцій та отримання детальних відомостей про стан процесора. З подібних можливостей, що вже розвиваються для Rust, відзначається підтримка неіменованих структур, об'єднань (union), асемблерних вставок (макрос «asm!») і формату чисел з плаваючою комою BFLOAT16.
Джош вважає, що майбутнє системного програмування за Rust, а мова Сі у сучасних реаліях претендує на місце, яке у минулі роки посідав Асемблер. Rust
не тільки позбавляє розробників від властивих мові проблем, що виникають через низькорівневу роботу з пам'яттю, але й надає можливість застосування при розробці сучасних парадигм програмування.
В ході
Джоша була висловлена ідея додавання в ядро Linux можливості розробки драйверів на мові Rust, що дозволить з мінімальними зусиллями створювати безпечні та якісніші драйвери, позбавлені таких проблем, як звернення до області пам'яті після її звільнення, розіменування нульових покажчиків та вихід за межі буфера.
Грег Кроа-Хартман (Greg Kroah-Hartman), що відповідає за підтримку стабільної гілки ядра Linux, висловив готовність додати в ядро фреймворк для розробки драйверів на мові Rust, якщо він матиме реальні переваги в порівнянні з Сі, наприклад, надаватиме безпечні обв'язки над API ядра. Крім того, Грег розглядає даний фреймворк тільки як опцію, не активну за умовчанням, щоб не включати Rust до складальних залежностей до ядра.
Виявилося, що кілька команд уже працюють у цьому напрямку. Наприклад, розробники з компанії «Fish in a Barrel»
паралельно
Не вся задумана функціональність поки що реалізована, але фреймворк вже цілком придатний для роботи та використаний для написання робочого драйвера для Ethernet-контролера LAN9512 USB, що поставляється в платі Raspberry Pi 3. Як еталонну реалізацію при написанні Rust-драйвера був використаний існуючий драйвер smsc95x мовою Сі. Зазначається, що розмір модуля та накладні витрати від runtime-компонентів при розробці драйвера на Rust незначні, що дозволяє застосовувати фреймворк для пристроїв з обмеженими ресурсами.
Джерело: opennet.ru