Как стать автором
Обновить

Rust 1.76.0: обновление совместимости ABI, получение имени типа из ссылки

Уровень сложностиПростой
Время на прочтение2 мин
Количество просмотров1.7K
Автор оригинала: The Rust Release Team

Команда Rust рада сообщить о новой версии языка — 1.76.0. Rust — это язык программирования, позволяющий каждому создавать надёжное и эффективное программное обеспечение.


Если у вас есть предыдущая версия Rust, установленная через rustup, то для обновления до версии 1.76.0 вам достаточно выполнить команду:


rustup update stable

Если у вас ещё не установлен rustup, вы можете установить его с соответствующей страницы нашего веб-сайта, а также посмотреть подробные примечания к выпуску на GitHub.


Если вы хотите помочь нам протестировать будущие выпуски, вы можете использовать канал beta (rustup default beta) или nightly (rustup default nightly). Пожалуйста, сообщайте обо всех встреченных вами ошибках.


Что стабилизировано в 1.76.0


Этот релиз относительно небольшой, но, как всегда, даже небольшие улучшения выливаются в нечто большее. Некоторые из изменений будут освещены в этом анонсе, другие же более нишевые — их можно найти в подробных примечаниях к выпуску.


Обновление совместимости ABI


Новая секция «Совместимость ABI» в документации по указателям на функции определяет ABI-совместимость сигнатур функций. В ней описана совместимость типов аргументов и возвращаемого типа, а также приведён список типов, которые сейчас считаются совместимыми в Rust. По большей части эта документация не добавляет каких-либо новых гарантий, а только описывает текущее состояние совместимости.


Единственным новым дополнением является то, что char и u32 теперь гарантированно имеют совместимый ABI. У них всегда одинаковый размер и выравнивание, но теперь, в соответствии с документацией выше, они рассматриваются как эквивалентные даже в ABI вызова функций.


Получение имени типа из ссылки


В целях отладки в Rust 1.38 был добавлен any::type_name::<T>() для возврата строки, описывающей тип T, однако это требовало явного указания параметра типа. Было не всегда просто указать конкретный тип, особенно для безымянных типов, таких как замыкания или непрозрачные возвращаемые типы. Теперь type_name_of_val(&T) предоставляет возможность получить описательное название из любой ссылки на тип.


fn get_iter() -> impl Iterator<Item = i32> {
    [1, 2, 3].into_iter()
}

fn main() {
    let iter = get_iter();
    let iter_name = std::any::type_name_of_val(&iter);
    let sum: i32 = iter.sum();
    println!("The sum of the `{iter_name}` is {sum}.");
}

Теперь выведет:


The sum of the `core::array::iter::IntoIter<i32, 3>` is 6.

Стабилизированные API



Прочие изменения


Проверьте всё, что изменилось в Rust, Cargo и Clippy.


Кто работал над 1.76.0


Многие люди собрались вместе, чтобы создать Rust 1.76.0. Без вас мы бы не справились. Спасибо!


От переводчиков


С любыми вопросами по языку Rust вам смогут помочь в русскоязычном Телеграм-чате или же в аналогичном чате для новичковых вопросов. Если у вас есть вопросы по переводам или хотите помогать с ними, то обращайтесь в чат переводчиков.


Данную статью совместными усилиями перевели Browning, TelegaOvoshey и funkill.

Теги:
Хабы:
Всего голосов 12: ↑12 и ↓0+12
Комментарии2

Публикации

Истории

Работа

Rust разработчик
10 вакансий

Ближайшие события

19 августа – 20 октября
RuCode.Финал. Чемпионат по алгоритмическому программированию и ИИ
МоскваНижний НовгородЕкатеринбургСтавропольНовосибрискКалининградПермьВладивостокЧитаКраснорскТомскИжевскПетрозаводскКазаньКурскТюменьВолгоградУфаМурманскБишкекСочиУльяновскСаратовИркутскДолгопрудныйОнлайн
24 – 25 октября
One Day Offer для AQA Engineer и Developers
Онлайн
25 октября
Конференция по росту продуктов EGC’24
МоскваОнлайн
26 октября
ProIT Network Fest
Санкт-Петербург
7 – 8 ноября
Конференция byteoilgas_conf 2024
МоскваОнлайн
7 – 8 ноября
Конференция «Матемаркетинг»
МоскваОнлайн
15 – 16 ноября
IT-конференция Merge Skolkovo
Москва
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань