Розробник пропонує повторну реалізацію GNU Coreutils у Rust 

gnu-coreutils-іржа

Використання Rust для цього проекту допоможе пришвидшити цей процес, оскільки багато потенційних помилок повністю усунено.

Сильвестр Ледру почав працювати над перевтіленням 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.


Залиште свій коментар

Ваша електронна адреса не буде опублікований. Обов'язкові для заповнення поля позначені *

*

*

  1. Відповідальний за дані: AB Internet Networks 2008 SL
  2. Призначення даних: Контроль спаму, управління коментарями.
  3. Легітимація: Ваша згода
  4. Передача даних: Дані не передаватимуться третім особам, за винятком юридичних зобов’язань.
  5. Зберігання даних: База даних, розміщена в мережі Occentus Networks (ЄС)
  6. Права: Ви можете будь-коли обмежити, відновити та видалити свою інформацію.