Команда Rust рада сообщить о новой версии языка — 1.90.0. Rust — это язык программирования, позволяющий каждому создавать надёжное и эффективное программное обеспечение.
Если у вас есть предыдущая версия Rust, установленная через rustup
, то для обновления до версии 1.90.0 вам достаточно выполнить команду:
$ rustup update stable
Если у вас ещё не установлен rustup
, вы можете установить его с соответствующей страницы нашего веб-сайта, а также посмотреть подробные примечания к выпуску на GitHub.
Если вы хотите помочь нам протестировать будущие выпуски, вы можете использовать канал beta (rustup default beta
) или nightly (rustup default nightly
). Пожалуйста, сообщайте обо всех встреченных вами ошибках.
Что стабилизировано в 1.90.0
Теперь LLD — линковщик по умолчанию на x86_64-unknown-linux-gnu
Целевая платформа x86_64-unknown-linux-gnu
теперь будет по умолчанию использовать линковщик LLD для сборки крейтов Rust. Это должно улучшить производительность линковки по сравнению со стандартным линковщиком Linux (BFD), особенно при работе с большими исполняемыми файлами, файлами с большим объёмом отладочной информации, а также при инкрементальной пересборке.
Для абсолютного большинства случаев LLD должен быть обратно совместим с BFD, и вы не заметите никаких различий, кроме сокращённого времени компиляции. Однако если вы всё же столкнётесь с новыми проблемами при компоновке, вы всегда можете отключить LLD, используя флаг компилятора -C linker-features=-lld
. Его можно добавить либо в привычную переменную окружения RUSTFLAGS
, либо в файл конфигурации проекта .cargo/config.toml
, например так:
[target.x86_64-unknown-linux-gnu]
rustflags = ["-Clinker-features=-lld"]
Если вы столкнётесь с какими-либо проблемами, связанными с линковщиком LLD, — пожалуйста, сообщите нам. Более подробную информацию о переходе на LLD и механизме отключения, а также некоторые результаты тестов производительности вы можете прочитать здесь.
Cargo получает нативную поддержку публикации рабочих пространств
Теперь поддерживается команда cargo publish --workspace
, которая автоматически публикует все крейты в рабочем пространстве в правильной последовательности (с учётом зависимостей между ними).
Данная возможность долгое время была доступна с помощью внешних инструментов или ручной публикации отдельных крейтов, но теперь эта функциональность встроена в сам Cargo.
Нативная интеграция позволяет проверке публикации в Cargo запускать сборку всех крейтов, предназначенных для публикации, так, как если бы они уже были опубликованы, в том числе во время «тестовых прогонов». Обратите внимание, что публикации по-прежнему не являются атомарными — сетевые ошибки или сбои на стороне сервера могут привести к частичной публикации рабочего пространства.
Понижение x86_64-apple-darwin до Tier 2 с инструментами хоста
GitHub скоро прекратит предоставлять бесплатные раннеры macOS x86_64 для публичных репозиториев. Apple также анонсировала свои планы по прекращению поддержки архитектуры x86_64.
В соответствии с этими изменениями, мы понижаем таргет x86_64-apple-darwin
с Tier 1 с инструментами хоста до Tier 2 с инструментами хоста. Это означает, что для этого таргета, включая такие инструменты, как rustc
и cargo
, будет гарантирована сборка, но не гарантируется прохождение нашего автоматизированного набора тестов.
Для пользователей это изменение не окажет немедленного влияния. Сборки как стандартной библиотеки, так и компилятора по-прежнему будут распространяться проектом Rust для использования через rustup
или альтернативные методы установки, пока таргет остаётся в Tier 2. Со временем, вероятно, уменьшение тестового покрытия для этого таргета приведёт к поломкам или потере совместимости без дополнительных объявлений.
Стабилизированные API
Следующие API теперь можно использовать в контексте const
:
Поддержка платформ
x86_64-apple-darwin
теперь на 2 уровне поддержки
Дополнительную информацию о уровнях поддержки платформ в Rust можно найти на странице поддержки.
Прочие изменения
Проверьте всё, что изменилось в Rust, Cargo и Clippy.
Кто работал над 1.90.0
Многие люди собрались вместе, чтобы создать Rust 1.90.0. Без вас мы бы не справились. Спасибо!
От переводчиков
С любыми вопросами по языку Rust вам смогут помочь в русскоязычном Телеграм-чате или же в аналогичном чате для новичковых вопросов. Если у вас есть вопросы по переводам или хотите помогать с ними, то обращайтесь в чат переводчиков.
Dhwtj
В результате, лучше и проще совместимость с Си на уровне FFI, проще безопасно работать с индексами и смещениями
Я так понял