Запис архітектурного рішення: мова програмування Rust
Номер рішення: AR-001
Назва рішення: впровадження мови програмування Rust
Дата: 1 грудня 2021 року
Статус: прийнято
Постановка проблеми
У міру того, як ми продовжуємо розробляти програмні застосунки, ми помітили, що дедалі складніше пом’якшувати потенційні вразливості безпеки та запобігати помилкам виконання. З наявними мовами програмування, як-от C і C++, ми й надалі стикаємося з такими проблемами, як переповнення буфера, витоки пам’яті та невизначена поведінка, що призводить до збоїв застосунків. Нам потрібна мова програмування, яка забезпечує гарантії безпеки пам’яті та достатньо ефективна, щоб підтримувати застосунки, критичні до продуктивності.
Міркування
Кілька мов програмування створено для розв’язання наявних проблем. Серед них мова програмування Rust привернула значну увагу спільноти розробників завдяки своїм унікальним особливостям проєктування. Міркування охоплюють;
Безпеку пам’яті та захищеність
Продуктивність і ефективність
Підтримку спільноти та поширеність
Криву навчання
Інструменти й екосистему
Сумісність з наявними програмними системами.
Обмеження
Впровадження нової мови програмування потребує перенавчання розробників, що вимагає часу й ресурсів. Інтеграція мови в наявний робочий процес розробки може бути складною. Ми повинні забезпечити сумісність з наявними системами та уникати критичних змін, щоб зберегти безперервність.
Реалізація
Наша команда розробників пройде навчання, щоб вивчити мову програмування Rust і ознайомитися з нею.
Ми створимо новий проєкт на Rust на пробній основі, щоб оцінити її сумісність і придатність для наших цілей розробки.
Ми поступово мігруватимемо наявні системи, написані на C і C++, на Rust.
Ми співпрацюватимемо зі спільнотою Rust, щоб вивчити наявні інструменти й бібліотеки, які можуть покращити наш робочий процес розробки.
Ми регулярно відстежуватимемо продуктивність Rust і порівнюватимемо її з продуктивністю наявних мов програмування.
Ми застосуємо довгостроковий підхід, що врівноважує витрати на навчання, інтеграцію та потенційні переваги використання Rust.
Обґрунтування
Ми впровадили Rust через його унікальні можливості, створені для забезпечення гарантій безпеки пам’яті та захищеності зі збереженням продуктивності й ефективності. Надійна система типів Rust, перевірка позичань (borrow checker) і концепції безпеки пам’яті роблять його вкрай придатним для розробки застосунків, критичних до продуктивності та безпеки. Крім того, Rust має значну спільноту розробників, що дає нам доступ до широкого спектру інструментів, бібліотек та екосистеми, які підтримують наш робочий процес розробки. Хоча Rust має криву навчання, ми вважаємо, що переваги впровадження Rust переважують витрати і надають чудову можливість для подальшого зростання та інновацій.
Наслідки
Впровадження Rust вимагатиме значних інвестицій часу й ресурсів на навчання розробників та інтеграцію мови в наявний робочий процес розробки.
Впровадження Rust може спричинити певний рівень проблем сумісності з наявними системами, що вимагатиме рефакторингу та модифікацій.
Впровадження Rust може збільшити кількість розробників, які можуть робити внесок у наш проєкт, залучивши розробників на Rust, які хочуть працювати над цікавими проєктами.
Впровадження може призвести до кращої продуктивності, ефективності та безпеки порівняно з наявними мовами.
Нарешті, впровадження Rust несе потенційну перевагу — зменшення вразливостей безпеки в наших застосунках.