30 октября 2025 года состоялся релиз языка программирования Rust 1.91. Вклад в разработку этого обновления внесли 235 программистов со всего мира. Предыдущая стабильная версия решения состоялась в середине сентября. Версия проекта Rust 1.80 вышла в июле 2024 года. Релиз Rust 1.85.0 (Rust 2024) состоялся 20 февраля. Выпуск Rust 1.87.0 и празднование десяти лет после выхода Rust 1.0 произошло в мае 2025 года.
Язык Rust сфокусирован на безопасной работе с памятью и предоставляет средства для достижения высокого параллелизма выполнения заданий, при этом обходясь без использования сборщика мусора и runtime (runtime сводится к базовой инициализации и сопровождению стандартной библиотеки).
Основные изменения и дополнения в Rust 1.90 (Rust, Cargo и Clippy):
повышение статуса платформы aarch64-pc-windows-msvc до уровня Tier-1. Это выводит поддержку Windows на архитектуре ARM в языке программирования Rust на самый высокий уровень, наравне с другими распространенными операционными системами и архитектурами. Статус Tier-1 для Windows на 64-битной архитектуре ARM/AArch64 в Rust 1.91 также означает доступность предварительно собранных бинарных файлов для новых версий;
порты aarch64-pc-windows-gnullvm и x86_64-pc-windows-gnullvm получили статус Tier-2 с поддержкой инструментов разработки;
теперь проверяется код на наличие висячих указателей на локальные переменные (now lints against dangling raw pointers from local variables);
добавлено lint-предупреждение «integer_to_ptr_transmutes», информирующее о преобразовании целых чисел в указатели с помощью функции std::mem::transmute;
в пакетном менеджере Cargo стабилизирована поддержка параметра «build.build-dir», определяющего каталог для хранения временных сборочных артефактов, создаваемых cargo и rustc на этапе сборки;
для ABI sysv64, win64, efiapi и aapcs стабилизирована поддержка объявления функций с переменным числом аргументов в стиле C;
стабилизирована поддержка inline-ассемблера для архитектуры LoongArch32.
компилятор обновлён до ветки LLVM 21;
в разряд стабильных переведена новая порция API:
Path::file_prefix
AtomicPtr::fetch_ptr_add
AtomicPtr::fetch_ptr_sub
AtomicPtr::fetch_byte_add
AtomicPtr::fetch_byte_sub
AtomicPtr::fetch_or
AtomicPtr::fetch_and
AtomicPtr::fetch_xor
{integer}::strict_add
{integer}::strict_sub
{integer}::strict_mul
{integer}::strict_div
{integer}::strict_div_euclid
{integer}::strict_rem
{integer}::strict_rem_euclid
{integer}::strict_neg
{integer}::strict_shl
{integer}::strict_shr
{integer}::strict_pow
i{N}::strict_add_unsigned
i{N}::strict_sub_unsigned
i{N}::strict_abs
u{N}::strict_add_signed
u{N}::strict_sub_signed
PanicHookInfo::payload_as_str
core::iter::chain
u{N}::checked_signed_diff
core::array::repeat
PathBuf::add_extension
PathBuf::with_added_extension
Duration::from_mins
Duration::from_hours
impl PartialEq for PathBuf
impl PartialEq for PathBuf
impl PartialEq for Path
impl PartialEq for Path
impl PartialEq for String
impl PartialEq for String
impl PartialEq for str
impl PartialEq for str
Ipv4Addr::from_octets
Ipv6Addr::from_octets
Ipv6Addr::from_segments
impl Default for Pin<Box> where Box: Default, T: ?Sized
impl Default for Pin<Rc> where Rc: Default, T: ?Sized
impl Default for Pin<Arc> where Arc: Default, T: ?Sized
Cell::as_array_of_cells
u{N}::carrying_add
u{N}::borrowing_sub
u{N}::carrying_mul
u{N}::carrying_mul_add
BTreeMap::extract_if
BTreeSet::extract_if
impl Debug for windows::ffi::EncodeWide
str::ceil_char_boundary
str::floor_char_boundary
impl Sum for Saturating
impl Sum for Saturating
impl Product for Saturating
impl Product for Saturating
признак «const» применён в функциях:
::each_ref
::each_mut
OsString::new
PathBuf::new
TypeId::of
ptr::with_exposed_provenance
ptr::with_exposed_provenance_mut
Источник: habr.com