Команда Rust рада сообщить о новой версии языка — 1.99.0. Rust — это язык программирования, позволяющий каждому создавать надёжное и эффективное программное обеспечение.Если у вас есть предыдущая версия Rust, установленная через rustup, то для обновления до версии 1.99.0 вам достаточно выполнить команду:$ rustup update stable Если у вас ещё не установлен rustup, вы можете установить его с соответствующей страницы нашего веб-сайта, а также посмотреть подробные примечания к выпуску 1.99.0.Если вы хотите помочь нам протестировать будущие выпуски, вы можете использовать канал beta (rustup default beta) или nightly (rustup default nightly). Пожалуйста, сообщайте обо всех встреченных вами ошибках! Читать далее
Уровень сложностиПростой
Время на прочтение3 мин
Охват и читатели4.2K
Дайджест
Перевод
Команда Rust рада сообщить о новой версии языка — 1.99.0. Rust — это язык программирования, позволяющий каждому создавать надёжное и эффективное программное обеспечение.
Если у вас есть предыдущая версия Rust, установленная через rustup, то для обновления до версии 1.99.0 вам достаточно выполнить команду:
$ rustup update stable
Если у вас ещё не установлен rustup, вы можете установить его с соответствующей страницы нашего веб-сайта, а также посмотреть подробные примечания к выпуску 1.99.0.
Если вы хотите помочь нам протестировать будущие выпуски, вы можете использовать канал beta (rustup default beta) или nightly (rustup default nightly). Пожалуйста, сообщайте обо всех встреченных вами ошибках!
В Rust 1.99.0 стабилизировано определение функций с переменным числом аргументов (variadic functions) с C-ABI для “C” и “C-unwind” ABI. Определённые таким образом вариативные функции используют список аргументов переменной длины (...) и принимают произвольное количество аргументов. Ранее Rust уже мог вызывать вариативные функции, определённые во внешнем коде (например, libc::printf). Начиная с Rust 1.99, такие функции можно писать непосредственно на самом Rust:
/// SAFETY: функция должна вызываться как минимум с 2 аргументами типа i32.
unsafe extern "C" fn sum(mut args: ...) -> i32 {
// SAFETY: гарантируется вызывающей стороной.
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-вариативных функциях см. в Reference. Также в этом выпуске стабилизирована поддержка определения naked-функций с переменным числом аргументов с отличными от C-ABI, которые должны быть написаны с помощью встроенных ассемблерных вставок.
Информация о схеме размещения типа из “сырых” указателейВ этом выпуске определены требования безопасности для получения размера и выравнивания по “сырым” указателям как для типов Sized (тривиальная безопасность, уже была доступна в stable), так и для типов !Sized.
Для этого были стабилизированы три функции:
Рекомендации по освобождению памяти после Box::leakХотя семантика языка в Rust 1.99 не изменилась, мы обновили документацию к Box::leak, добавив рекомендацию отказаться от шаблонов, в которых эта память в дальнейшем освобождается. Это связано с тем, что подобный код проблемно взаимодействует с текущими и будущими потенциальными оптимизациями компилятора, а также особенно проблематичен на фоне предстоящей стабилизации пользовательских аллокаторов памяти. Вместо этого рекомендуется отдавать предпочтение Box::into_non_null или Box::into_raw.
Эта рекомендация распространяется и на другие leak-функции в стандартной библиотеке.
Проверьте всё, что изменилось в Rust, Cargo и Clippy.
Кто работал над 1.99.0Многие люди собрались вместе, чтобы создать Rust 1.99.0. Без вас мы бы не справились. Спасибо!
| # | Наименование новости | Тональность | Информативность | Дата публикации |
|---|---|---|---|---|
| 1 | Выпуск Rust 1.99.0. Microsoft перевёл Rust в число первичных языков | 0 | 11.06 | 03-10-2026 |
| 2 | Чудеса nightly, часть 1: на чём тайком держится stable Rust | 0 | 8.55 | 29-09-2026 |
| 3 | Rust на вырост. Почему мы изучаем язык, который не входит в наш основной стек | -1 | 7.24 | 10-09-2026 |
| 4 | [Перевод] Rewrite It in Rust: когда переписывание действительно оправдано | 0 | 7.99 | 19-09-2026 |
| 5 | lang/rust188 - 1.88.0_1 | 0 | 8.1 | 02-10-2026 |
| 6 | Rust для микроконтроллеров: что он даёт по сравнению с С | 1 | 6.6 | 29-09-2026 |
| 7 | 900 гипотез об уязвимостях и 12 миллиардов токенов | 0 | 8.99 | 01-10-2026 |
| 8 | Задача взяла lock() и остановила весь рантайм: пять ошибок с блокировками в async Rust | 0 | 6.57 | 07-09-2026 |
| 9 | Декларативные макросы в Rust: полное руководство | 0 | 6.83 | 14-09-2026 |
| 10 | Typing в Python 3.11–3.14: что изменилось и как это использовать уже сейчас | 0 | 9.32 | 02-10-2026 |