27.10.2021

Для Mesa развивается фронтэнд OpenCL, написанный на языке Rust

Кэрол Хербст (Karol Herbst) из компании Red Hat, принимающий участие в разработке Mesa, драйвера Nouveau и открытого стека OpenCL, опубликовал rusticl — экспериментальную программную реализацию OpenCL (фронтэнд OpenCL) для Mesa, написанную на языке Rust. Rusticl выступает в роли аналога уже присутствующего в Mesa OpenCL-фронтэнда Clover и также разработан с использованием предоставляемого в Mesa интерфейса Gallium.

Разработка была представлена 17 сентября на конференции XDC 2021 (X.Org Developers Conference). Целью разработки было изучение Rust, выработка оптимальных путей интеграции Rust в Mesa, опробование создания реализаций API на другом языке и проверка сочетаемости компонентов на Rust с остальным кодом на языке Си. Разработка ещё полностью не завершена — уже успешно выполняются тесты CL CTS, связанные с копированием, чтением и записью буферов, но пока ещё не обеспечена интеграция компилятора и нет поддержки внешних crate-пакетов в системе сборки. Для генерации биндингов для Mesa и OpenCL, позволяющих вызывать Rust-функции из кода на Си и наоборот, задействован rust-bindgen.

[embedded content]

Напомним, что год назад разработчики Mesa уже обсуждали целесообразность использования языка Rust. Из плюсов поддержки Rust упоминалось повышение безопасности и качества драйверов за счёт избавления от типовых проблем при работе с памятью, а также возможность включения в состав Mesa сторонних наработок, таких как Kazan (реализация Vulkan на Rust). Из недостатков отмечается усложнение системы сборки, нежелание привязываться к пакетной системе cargo, расширение требований к сборочному окружению и необходимость включения компилятора Rust в сборочные зависимости, обязательные для построения ключевых компонентов рабочего стола в Linux.

Источник.