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 for Linux направлен на внедрение нового языка системного программирования в ядро Linux. По мнению экспертов, Rust обладает ключевым свойством, которое делает его очень интересным для рассмотрения в качестве второго языка для ядра Linux: он гарантирует отсутствие неопределенного поведения (при условии, что небезопасный код является корректным).
Это включает в себя отсутствие ошибок, таких как использование после бесплатного использования, двойное освобождение, гонки данных и т. д. Связанные с этим дебаты вращаются вокруг возможности отказа от C в пользу языка Rust. Но Линус Торвальдс, создатель Linux, сказал, что это не заявленная цель проекта Rust для Linux.
Наконец, стоит отметить, что, хотя интерфейс gccrs был включен в предстоящий релиз GCC 13, он еще не находится в таком состоянии, чтобы большинство разработчиков на Rust могли использовать его в качестве альтернативы официальному компилятору LLVM для Rust.
Этого не должно быть до следующего года, по крайней мере, с GCC 14.
Источник: https://fosdem.org/