Rust 1.90 меняет правила игры для больших проектов.
Опубликован выпуск языка программирования Rust 1.90. Он продолжает развиваться под управлением некоммерческой Rust Foundation, хотя изначально создавался в Mozilla. Rust позиционируется как средство безопасной работы с памятью и предоставляет инструменты для параллельного выполнения задач без использования сборщика мусора.
Контроль за владением объектами, областью их видимости и корректностью доступа к памяти встроен в сам компилятор. Такой подход исключает целый класс ошибок: от выхода за границы буфера и разыменования нулевых указателей до обращения к освобождённым областям памяти. Дополнительно язык защищает от целочисленных переполнений, требует инициализации переменных перед использованием, реализует неизменяемость значений по умолчанию и строгую статическую типизацию, что снижает риск логических сбоев.
Ключевым инструментом экосистемы остаётся пакетный менеджер Cargo, через который управляются сборки и зависимости. Для публикации библиотек применяется репозиторий crates.io. В новой версии улучшен механизм публикации: команда cargo publish получила флаг --workspace, позволяющий за одно действие выгрузить все пакеты из общего рабочего пространства с учётом их последовательности и зависимостей.
Среди технических новшеств стоит отметить переход в Linux на x86_64 к использованию компоновщика LLD от проекта LLVM при динамическом связывании crate-пакетов. Это решение ускоряет сборку крупных проектов, особенно при работе с большим количеством отладочной информации, а также заметно повышает скорость инкрементальной пересборки. Совместимость с прежним компоновщиком BFD сохранена, а в случае необходимости возврата можно использовать настройку переменной окружения RUSTFLAGS с параметром «-C linker-features=-lld» или внести изменения в файл .cargo/config.toml.
В разряд стабильных API переведён целый блок функций и типажей. Теперь поддерживаются методы u{n}::checked_sub_signed, u{n}::overflowing_sub_signed, u{n}::saturating_sub_signed и u{n}::wrapping_sub_signed. Стабилизированы реализации Copy и Hash для IntErrorKind, а также множественные варианты сравнения типов CStr, CString и Cow. Кроме того, признак const был добавлен в ряд функций работы с числами с плавающей точкой, включая floor, ceil, trunc, fract и round как для f32, так и для f64.
Изменения затронули и поддерживаемые платформы. Для ряда целевых систем на базе библиотеки Musl, включая mips64-unknown-linux-muslabi64, powerpc64-unknown-linux-musl и riscv32gc-unknown-linux-musl, по умолчанию включено динамическое связывание. В то же время платформа x86_64-apple-darwin переведена со статуса первого уровня поддержки на второй. Это связано с планами Apple по отказу от архитектуры x86_64. Теперь гарантируется возможность сборки под macOS, но проведение полного тестового набора обеспечиваться не будет.
Отдельное направление развития связано с Windows. Microsoft продвигает проект по созданию набора библиотек для разработки драйверов на Rust. На GitHub уже доступны crate-пакеты для работы с WDM, KMDF и UMDF, а также для создания сервисов Win32, совместимых с Windows 11. Сейчас инструментарию ещё требуются небезопасные вызовы для работы с внутренними компонентами системы, однако в будущем планируется добавить абстракции, исключающие прямое использование небезопасного кода. Проект распространяется под лицензиями MIT и Apache 2.0.
Rust 1.90 укрепляет позицию языка как инструмента, ориентированного на безопасную разработку и масштабные проекты. Комбинация новых возможностей компоновки, расширенной стандартной библиотеки и движения в сторону системного программирования под Windows демонстрирует, что язык продолжает активно эволюционировать в разных экосистемах.