[#] Rust 1.88.0
robot(spnet, 1) — All
2025-06-29 21:44:04


Опубликован следующий стабильный релиз компилятора и стандарта языка Rust.

В этой версии добавлены следующие возможности:

• Синтаксис для описания функций без пролога и эпилога. Тело таких функций обязано состоять из naked_asm! блока :

#[unsafe(naked)]
pub unsafe extern "sysv64" fn wrapping_add(a: u64, b: u64) -> u64 {
// Equivalent to `a.wrapping_add(b)`.
core::arch::naked_asm!(
"lea rax, [rdi + rsi]",
"ret"
);
}

• Возможность объявлять две и более переменных в условных выражениях if / while:

if let Channel::Stable(v) = release_info()
&& let Semver { major, minor, .. } = v
&& major == 1
&& minor == 88
{
println!("`let_chains` was stabilized in this version");
}



В DSL для условной компиляции cfg добавлены константы true и false, которые так же стали доступны в макросе cfg!.



Добавлено предупреждение о попытке обращения к нулевому указателю для функций, чьи инварианты корректной работы требуют не нулевых адресов. К примеру попытка сконструировать объект std::slice по нулевому адресу:

// Undefined behavior
unsafe { std::slice::from_raw_parts(ptr::null(), 1); }

приведёт к выдаче сообщения. По умолчанию это предупреждение имеет уровень deny-by-default, то есть будет рассмотрено компилятором как ошибка.

Все нововведения перечислены в [ списке изменений ]( https://doc.rust-lang.org/stable/releases.html#version-1880-2025-06-26 ) .

https://www.linux.org.ru/news/development/18014116