gccrs — це повна альтернативна реалізація мови Rust поверх GCC
Нещодавно було оголошено, що проект "gccrs" , метою якого є забезпечення інтерфейсу мови Rust для GCC (GNU Compiler Collection), готується до інтеграції в GCC 13. На конференції розробників FOSDEM на початку цього місяця інженер Артур Коен виступив з презентацією про gccrs, в якій окреслив поточний стан роботи.
Для тих, хто не знайомий з проектом gccrs, це повна альтернативна реалізація мови Rust поверх GCC з метою повної інтеграції в інструментарій GNU.
Походження цього проекту є зусиллями спільноти кілька років тому, коли Rust був ще у версії 0.9; мова, створена Mozilla, зазнала стільки змін, що спільноті стало важко наздогнати її.
Тепер, коли мова стабільна, настав час створити альтернативні компілятори:
«Розпочато в 2014 році (і перезапущено в 2019 році), зусилля тривають з 2020 року, і ми доклали багато зусиль і значно прогресували. Ми завантажили першу версію gccrs у GCC. Отже, наступного разу, коли ви встановите GCC 13, у ньому буде gccrs.
Ви можете використовувати його, ви можете почати його зламувати, ви можете повідомити про проблеми, коли він неминуче виходить з ладу та жахливо вмирає. Одна велика річ, яку ми робимо, — це робота над тим, щоб набір тестів rustc працював», — сказав Артур Коен під час своєї презентації на конференції FOSDEM на початку цього місяця.
Здатність успішно запускати набір тестів компілятора rustc також залишається метою. За словами Коена, інтерфейс GCC Rust також орієнтований на старішу версію libcore Rust 1.49.
У поширених запитаннях проекту gccrs зазначається, що всім технологіям збірки LLVM, які використовує Rust, «не вистачає деяких сумісних з GCC бекендів, тому реалізація gccrs може заповнити прогалини для використання в інтегрованій розробці ».
Зауважте, однак, що компілятор Rust-GCC (gccrs) все ще знаходиться на дуже ранній стадії і поки не може використовуватися для компіляції реальних програм Rust.
Команда GCC проголосувала минулого липня за схвалення інтеграції gccrs як пакету збірки. Важливість цього проекту полягає в його значенні для ядра Linux. Фактично, ядро Linux зазвичай збирається за допомогою GCC, але плани дозволити використання мови Rust разом з C для коду ядра з міркувань безпеки пам'яті постійно просуваються.
Проект «Rust для Linux» офіційно об’єднався в основне дерево Linux 6.1 Git у жовтні минулого року, зробивши Rust другою мовою розробки Linux після 31 року розробки виключно на основі C.
«Ми хочемо, щоб gccrs був справжнім компілятором Rust, а не іграшковим проектом чи чимось, що компілює мову, яка виглядає як Rust, але не є Rust; ми дійсно намагаємося, щоб цей набір тестів працював», – додав він. Під час презентації Коен також сказав, що, незважаючи на те, що інтерфейс Rust GCC 13 має хороший старт, попереду ще багато роботи. Позичений код підтвердження наразі помітно відсутній, підтримка вбудованих і внутрішніх модулів все ще триває, а важлива віха компіляції коду Rust для Linux ще не досягнута.
Нагадаємо, що проект Rust для Linux має на меті впровадити нову мову системного програмування в ядро Linux. За словами експертів, Rust має ключову властивість, яка робить його дуже цікавим для розгляду як другої мови для ядра Linux: він гарантує, що не виникне невизначена поведінка (за умови, що небезпечний код є розумним).
Це включає відсутність таких помилок, як використання після звільнення, подвійне звільнення, перегони даних тощо. Відповідні дебати точаться навколо можливості відмови від C на користь мови Rust. Але Лінус Торвальдс, творець Linux, сказав, що це не є заявленою метою проекту Rust для Linux.
Зрештою, варто зазначити, що хоча інтерфейс gccrs був об'єднаний для майбутнього випуску GCC 13, він ще не досяг стану, коли більшість розробників Rust можуть фактично використовувати його як альтернативу офіційному компілятору Rust LLVM.
Це має бути не раніше наступного року, принаймні з GCC 14.
Джерело: https://fosdem.org/