У 2006 році Ґрейдона Хоару, розробника Mozilla, дратував ліфт у його багатоповерхівці, який постійно ламався. Пізніше він сказав: «Це абсурд. Ми, айтівці, не можемо зробити ліфт, який не падає».
Хоар підозрював, що проблема в помилках памʼяті в ПЗ контролера, швидше за все, написаному на C або C++. Обидві ці мови популярні для системного програмування, але складні у використанні, зокрема тому, що дуже легко написати майже робочий код із помилками керування памʼяттю.
Тож Хоар, втомлений щоденними сходами на 21 поверх, почав розробляти нову мову програмування. Він хотів створити невелику, швидку мову без типових помилок памʼяті. Назвав її Rust — на честь родини грибів, які, за його словами, спроєктовані для виживання.
Переломний момент
Метою Хоара було створити безпечну та конкурентну мову, йдеться в матеріалі ZDNET.
На відміну від C і C++, Rust гарантує безпеку памʼяті завдяки унікальній системі володіння. Вона запобігає типовим помилкам, як-от звернення до нульового вказівника чи переповнення буфера, забезпечуючи, що кожен фрагмент даних має лише одного власника й автоматично очищується при виході за межі області видимості. Такий підхід дає можливість усунути цілі категорії помилок на етапі компіляції.
Модель конкурентності Rust додатково забезпечує безпеку, фіксуючи гонки даних до запуску коду. Це спрощує написання одночасного й безпечного програмного забезпечення.
Це було непросто. Попри те, що Rust починався як домашній проєкт, Mozilla побачила в ньому потенціал і почала офіційно підтримувати його у 2009 році. Мову публічно анонсували у 2010-му, а після кількох років розроблення Rust 1.0 вийшов 15 травня 2015 року.
І це був лише початок
Перша стабільна версія Rust стала лише початком. За десятиліття мова виросла колосально. Реєстр пакетів Rust crates.io зріс із приблизно 2000 «крейтів» на момент релізу 1.0 до понад 180 000 сьогодні.
Стандартна бібліотека збільшилася утричі, а інструментарій став зрілим: зʼявилися rust-analyzer для IDE, менеджер пакетів Cargo тощо.
Водночас Rust дотримується політики збереження сумісності та регулярного шеститижневого циклу релізів, що забезпечує інновації без втрати стабільності. Від моменту релізу 1.0 у код було злито понад 246 000 змін за участі 6700 контриб’юторів, і майже 600 000 публічних пакетів проходять тестування при кожному випуску.
Хоар нещодавно підсумував це так:
«Rust — це історія великої спільноти зацікавлених сторін, які разом проєктують, розвивають, підтримують і масштабують спільну технічну інфраструктуру. Це історія з багатьма акторами».
Цими акторами є розробники, проєктанти мови, автори, викладачі й установи, які підтримують Rust. Їх обʼєднує спільний інтерес до інфраструктури.
Під інфраструктурою Хоар мав на увазі інструмент для створення мережевих протоколів, вебсерверів, балансувальників навантаження, телеметричних систем, баз даних, кодеків, криптографії, файлових систем, ОС, віртуальних машин, інтерпретаторів тощо.
Системне програмування
На відміну від мов на кшталт Python, JavaScript чи Java, Rust не створений для написання високорівневих програм. Його мета — створення низькорівневої інфраструктури, на якій працює все ПЗ.
Цим займаються не всі розробники, але ті, хто працює з «трубами й зʼєднувачами» софту, високо цінують Rust. Згідно з опитуванням Stack Overflow, восьмий рік поспіль Rust є найулюбленішою мовою: понад 80% розробників, які його використовують, хочуть працювати з ним і надалі.
Серед користувачів Rust — провідні технологічні компанії: Mozilla (Firefox), Google (Android, Chrome OS, Fuchsia), Microsoft (ядро Windows, Azure Confidential Compute).
Rust входить до ядра Linux. Це було не просто. Як сказав Лінус Торвальдс:
«Я очікував швидших оновлень щодо Rust, але проблема в тому, що старші розробники ядра звикли до C і не знають Rust. Їх не надихає потреба вчити нову, в деяких аспектах зовсім іншу мову. Тому є спротив».
Попри це, Торвальдс залишається прихильником інтеграції Rust у Linux.
Утім, вивчення Rust — непросте. Особливо через borrow checker і життєві цикли змінних, що лякають новачків. Якщо хочете вчити Rust, слід почати з книжки The Rust Programming Language (The Book), а потім — Rust for Rustaceans. Також корисні сайти Rust by Example і Google’s Welcome to Comprehensive Rust — і вони безплатні.
Отже, через десять років після релізу 1.0 Rust досяг того, що колись здавалось неможливим: зробив системне програмування безпечним і приємним.
Як сказав Хоар, згадуючи десятиріччя Rust:
«Це історія великої спільноти, яка обʼєдналась, щоб проєктувати, будувати, підтримувати й масштабувати спільну технічну інфраструктуру».
Читайте на ProIT: Що варто знати про Go, Rust і Zig: особливості, призначення і перспективи.
Підписуйтеся на ProIT у Telegram, щоб не пропустити жодної публікації!