Сильвестр Ледру почав працювати над перевтіленням GNU Coreutils у Rust під час пандемії COVID-19 і представив його минулого тижня під час випуску FOSDEM у 2023 році. Зусилля, яке називається uutils, зараз упаковане багатьма дистрибутивами Linux, а також використовується відомою соціальною мережею через проект Yocto.
Порівняння мов Rust і C++ мають спільне: підкреслення переваги Rust над C++ з точки зору безпеки пам’яті. Редактор RisingWave пояснює, чому він переписав свою рідну хмарну СУБД з нуля в Rust після того, як залишив проект C++.
«Rust забезпечує безпеку пам’яті та потоків під час компіляції, запроваджуючи правила власності. Це виходить за рамки RAII, механізму керування пам’яттю, який зазвичай використовується в C++. Він має дві переваги. Перший очевидний: як тільки компілятор Rust перевірить нашу програму, ми не матимемо жодних помилок у сегменті чи умов змагання під час виконання, що потребуватиме десятків годин налагодження, особливо у висококонкурентній кодовій базі та переважно асинхронній. Другий більш тонкий: компілятор Rust просто обмежує типи збоїв, що зменшує щільно вкладені фрагменти коду, які можуть спричинити таку неправильну поведінку. Реплікація помилок значно покращується завдяки використанню детермінованого виконання. »
GNU Coreutils — це пакет з проекту GNU який містить багато основних інструментів, необхідних для Unix-подібних операційних систем: cp (копіювати файл або каталог), mkdir (створити каталог) тощо. Розробник пропонує перевикористання на мові Rust.
Одна з цілей: зробити пакет придатним для використання в інших операційних системах: Windows, macOS, Android, FreeBSD тощо. Цей крок покликаний пожвавити дискусію щодо того, чи продовжувати починати нові проекти на C і C++ чи просто вибрати мову Rust.
«Мова Rust пропонує гарантії безпеки за замовчуванням, коли йдеться про керування пам’яттю. Це не стосується C і C++, використання яких у Mozilla є причиною проблем із безпекою пам’яті», – підкреслює Сильвестр Ледру.
Однак Б’ярн Страуструп не погоджується з тим, що порівняння між Rust і C++ обмежує поняття безпеки програмного забезпечення до захисту пам’яті:
«Немає єдиного визначення поняття «безпека», і ми можемо досягти різноманітних типів безпеки за допомогою поєднання стилів програмування, бібліотек підтримки та використання статичного аналізу. Таким чином, Б’ярн Страуструп припускає, що те, що можна отримати від C++ з точки зору безпеки програмного забезпечення, залежить, серед іншого, від розробника і, зокрема, від знання інструментів, які пропонує мова, його майстерності компілятора тощо.
Інженери Google, усвідомлюючи, які можливості пропонує їм C++, взялися за створення верифікатора запозичень цією мовою. Це функція компілятора Rust, яка забезпечує безпеку пам’яті через керування розподілом покажчиків пам’яті.
Команда Google, публікація якого вийшла в третьому кварталі минулого року, прийшли до висновку що C++-подібна система не піддається таким вправам. І щоб що безпеки пам'яті в C++ можна досягти з елементами управління під час виконання програми. Іншими словами, саме за допомогою повільного коду C++ можна досягти рівня безпеки, еквівалентного рівню Rust.
Випуск редактора RisingWave відбувається, коли Rust виділяється серед інших мов, які роками представлялися як альтернативи C і C++. Насправді ядро Linux стає все більш відкритим для мови системного програмування Mozilla.