Выпуск Rust 1.82. Новый браузер на Rust. Использование Rust в Volvo

Опубликован релиз языка программирования общего назначения Rust 1.82, основанного проектом Mozilla, но ныне развиваемого под покровительством независимой некоммерческой организации Rust Foundation. Язык сфокусирован на безопасной работе с памятью и предоставляет средства для достижения высокого параллелизма выполнения заданий, при этом обходясь без использования сборщика мусора и runtime (runtime сводится к базовой инициализации и сопровождению стандартной библиотеки).

Методы работы с памятью в Rust избавляют разработчика от ошибок при манипулировании указателями и защищают от проблем, возникающих из-за низкоуровневой работы с памятью, таких как обращение к области памяти после её освобождения, разыменование нулевых указателей, выход за границы буфера и т.п. Для распространения библиотек, обеспечения сборки и управления зависимостями проектом развивается пакетный менеджер Cargo. Для размещения библиотек поддерживается репозиторий crates.io.

Безопасная работа с памятью обеспечивается в Rust во время компиляции через проверку ссылок, отслеживание владения объектами, учёт времени жизни объектов (области видимости) и оценку корректности доступа к памяти во время выполнения кода. Rust также предоставляет средства для защиты от целочисленных переполнений, требует обязательной инициализации значений переменных перед использованием, лучше обрабатывает ошибки в стандартной библиотеке, применяет концепцию неизменяемости (immutable) ссылок и переменных по умолчанию, предлагает сильную статическую типизацию для минимизации логических ошибок.

Основные новшества:

Дополнительно можно отметить несколько недавних событий и проектов, связанных с языком Rust:

  • Представлен новый браузер Gosub, написанный на языке Rust и использующий собственный web-движок, нацеленный на поддержку HTML5 и CSS3, и не пересекающийся с проектом Servo. Для обработки JavaScript предлагается подключать внешние движки. Браузер примечателен модульной архитектурой, позволяющей на свой вкус заменять web-движки и обработчики отрисовки контента. Разработка пока находится на начальном этапе, сосредоточенном на создании компонентов для разбора HTML/CSS, организации отрисовки контента и интеграции JavaScript-движков.

    Утверждается, что текущее состояние движка позволяет проходить большую часть тестов html5lib и обрабатывать почти любые документы HTML5. Парсер CSS3 и компонент отрисовки пока находятся в состоянии прототипов и способны обрабатывать только простейшие страницы. Из JavaScript-движков поддерживается v8. Код проекта доступен под лицензией MIT. Проект развивает Джошуа Тейссен (Joshua Thijssen), в прошлом активный участник сообщества разработчиков на языке PHP и автор книг про библиотеки SPL и Symfony.

  • Компания Volvo задействовала в электромобилях EX90 и
    Polestar 3 электронный блок управления (ECU) на базе CPU Arm Cortex-M, отвечающий за активацию цепей питания, в котором использована прошивка, написанная на языке Rust. Проект признан удачным и руководство рассмотрит возможность расширения использования компонентов на Rust в других подсистемах. Отмечается, что по сравнению с проектами на C и C++ в коде на Rust удалось добиться более высокого качества и меньшего уровня ошибок за счёт более жестоких требований на этапе компиляции.

  • Проект lm.rs подготовил написанный на Rust движок для выполнения больших языковых моделей машинного обучения, совместимый с моделями Gemma 2, Llama 3.2 и PHI 3.5, и похожий по своему назначению на llama2.c и llm.c.
    Lm.rs выполняет модель с использованием ресурсов CPU и не требует для работы внешних зависимостей и библиотек. Производительность lm.rs позволяет на ПК c 16-ядерным CPU AMD Epyc обрабатывать примерно 50 токенов в секунду для модели Llama 3.2 1B. Код открыт под лицензией MIT.

  • Опубликован выпуск платформы Tauri 2.0, предоставляющей написанный на Rust инструментарий для создания многоплатформенных пользовательских приложений с графическим интерфейсом, конкурирующий с платформой Electron. Как и в Electron логика работы приложения определяется на JavaScript, HTML и CSS, а программы оформляются в виде самодостаточных исполняемых файлов, компилируемых для различных операционных систем. Для отрисовки окон на платформе Linux используется библиотека GTK (GTK 3 Rust), а в macOS и Windows библиотека Tao. Интерфейс формируется при помощи библиотеки WRY с обвязкой над браузерным движком WebKit для macOS, WebView2 для Windows и WebKitGTK для Linux. Среди ключевых улучшений в новой версии: поддержка мобильных платформ iOS и Android, переработка слоя IPC (Inter Process Communication) и добавление большого числа новых модулей.
  • Разработчики свободного пакета для автоматизации проектирования печатных плат LibrePCB, оптимизированного для быстрой разработки плат и предоставления как можно более простого интерфейса, представили план по разработке выпуска LibrePCB 2.0. В плане упоминается интеграция поддержки использования Rust в кодовой базе и постепенное смещение при разработке от использования языка С++ в пользу Rust. Также упоминается намерение полностью переработать интерфейс пользователя, используя написанный на Rust фреймворк Slint вместо библиотеки Qt.
  • Разработчики проекта Rust-for-Linux работают над предоставлением возможности использования в ядре умных указателей, соответствующих модели памяти ядра Linux.

Источник: http://www.opennet.ru/opennews/art.shtml?num=62071