Релиз Rust 1.99.0

—

от автора

1 октября 2026 года состоялся релиз языка программирования Rust 1.99. Вклад в разработку этого обновления внесли 506 программистов со всего мира. Предыдущая стабильная версия решения состоялась в августе 2026 года. Версия проекта Rust 1.80 вышла в июле 2024 года. Релиз Rust 1.85.0 (Rust 2024) состоялся 20 февраля. Выпуск Rust 1.87.0 и празднование десяти лет после выхода Rust 1.0 произошло в мае 2025 года.

Текущий релиз включает в себя ряд стабилизированных API, доработанную стандартную библиотеку, в проекте добавлены средства контроля предупреждений Cargo и отображаются сообщения компоновщика.

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

Основные изменения и дополнения в Rust 1.99 (Rust, Cargo и Clippy):

  • функции с переменным числом аргументов в стиле extern C. В версии Rust 1.99.0 стабилизирована возможность определения функций с переменным числом аргументов (variadic functions), использующих ABI C и C‑unwind. Такие функции используют список аргументов переменной длины (…) и принимают произвольное количество аргументов. Ранее Rust уже позволял вызывать внешние функции с переменным числом аргументов (например, libc::printf), а начиная с версии 1.99 их можно писать непосредственно на самом Rust:

/// SAFETY: must be called with (at least) 2 i32 arguments.unsafe extern "C" fn sum(mut args: ...) -> i32 {    // SAFETY: guaranteed by the caller.    let a = unsafe { args.next_arg::<i32>() };    let b = unsafe { args.next_arg::<i32>() };    a + b}fn foo() -> i32 {    unsafe { sum(0i32, 2i32) }}

Тип … — это VaList, который является ABI-совместимым с типом va_list языка C на всех целевых платформах. Допустимые типы для чтения из VaList определяются трейтом VaArgSafe. Подробную информацию о функциях с переменным числом аргументов в стиле C (c-variadic functions) можно найти в справочном руководстве (Reference). В этом выпуске также стабилизирована поддержка определения функций с переменным числом аргументов типа naked и ABI, отличным от C; такие функции должны реализовываться с использованием встроенного ассемблера.

ссылка на оригинал статьи https://habr.com/ru/articles/1089424/