Команда Rust рада объявить о новой версии Rust, 1.99.0. Rust — это язык программирования, который позволяет каждому создавать надечное и эффективное программное обеспечение.
Если у вас установлена предыдущая версия Rust черезrustup, вы можете получить 1.99.0, используя:
$rustup update stable
Если у вас его еще нет, вы можете получитьrustupс соответствующей страницы на нашем сайте, а также ознакомиться сподробными заметками о выпуске 1.99.0.
Если вы хотите помочь нам, протестировав будущие выпуски, вы можете рассмотреть возможность обновления локально для использования бета-канала (rustup default beta) или канал nightly (rustup default nightly). Пожалуйста,сообщителюбые ошибки, с которыми вы можете столкнуться!
Что нового в версии 1.99.0 stable
extern "C" variadics
Rust 1.99.0 стабилизирует определение C-ABI функций с переменным количеством аргументов, используя "C" и "C-unwind" ABI. Функции с переменным количеством аргументов, определенные таким образом, используют список аргументов переменной длины (...) и принимать произвольное количество аргументов. Rust уже мог вызывать внешне определенные функции с переменным числом аргументов (например,libc::printfС использованием Rust
///SAFETY: должны вызываться с (по крайней мере) 2 аргументами типа i32.
unsafeextern«C«fnsum(мутаргументы: ...)->i32 {
//БЕЗОПАСНОСТЬ: гарантируется вызывающей стороной.
leta =небезопасный {аргументы.следующий аргумент::<i32>() };
letb =небезопасный {аргументы.следующий аргумент::<i32>() };
a +b
}
fnfoo()->i32 {
Небезопасный {Сум(0i32, 2i32) }
}
Тип...являетсяVaList,va_listтип данных для чтения из разных целей. Какие типы можно читать изVaListзащищаетVaArgSafeTrait.
Для получения дополнительной информации о функциях с переменным числом аргументов, см. разделСправочник.
Информация о расположении данных из указателей
Это объявление решает требования безопасности для получения размера и выравнивания для указателей на сырые данные для обоихSized(просто безопасные, уже возможные наSizedтипы.
Это достигается путем стабилизации трех функций:
Рекомендуется не использовать функцию "непрозрачности" для односторонних транзакций.Утечка памяти
Несмотря на отсутствие изменений в семантике языка Rust 1.99, мы обновили документацию наBox::leakдля того, чтобы рекомендовать избегать шаблонов, которыеBox::into_non_nullследует отдавать предпочтение.
Это руководство также распространяется на другиеУтечкафункции в стандартной библиотеке.
Стабилизированные API
В циклеforBox<[T; N]>В циклеfor<[T; N]>В циклеfor<[T; N]>VecDeque::retain_backcore::ffi::VaListBox::into_non_nullBox::from_non_nullVec::into_partsVec::from_partscore::mem::size_of_val_rawcore::mem::align_of_val_rawcore::alloc::Layout::for_value_rawString::from_utf8_lossy_ownedstring::FromUtf8Error::into_utf8_lossyОбъединенный итератор для StepBy<I>std::fs::set_timesstd::fs::set_times_nofollow
Другие изменения
Узнайте обо всем, что изменилось вRust, Должность, иКлиппи.
Вкладчики в 1.99.0
Многие люди объединились, чтобы создать Rust 1.99.0. Без вас мы бы не смогли этого сделать.Спасибо!