Rust 1.78 уже вышел и вот его новости

логотип ржавчины

Rust — мультипарадигмальный компилируемый язык программирования общего назначения.

Новая версия Rust 1.78 уже вышла и реализованы новые функции, а также стабилизация некоторых API, улучшения Cargo и многое другое.

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

Основные новые возможности Rust 1.78

В этой новой версии, представленной В Rust 1.78 увеличены минимальные требования для Windows 10., Кроме того компилятор был изменен для использования LLVM 18. При использовании LLVM 18 для архитектур x86-32 и x86-64 был изменен ABI, связанный с типами u128 и i128.

Что касается изменений, одной из особенностей является то, что Rust теперь поддерживает пространство имен атрибутов  «#[диагноз]", какие предоставляет средства влияния на выдаваемые сообщения об ошибках компилятором. Они рассматриваются как подсказки, которые компилятору не требуется использовать, и не является ошибкой предоставление диагностики, которую компилятор не распознает. Этот позволяет исходному коду предоставлять диагностику, даже если она не поддерживается всеми компиляторами, будь то разные версии или совершенно разные реализации.

Кроме того, в Cargo стабилизирован глобальный кеш который хранит информацию о последнем использовании данных. Этот тайник находится в $CARGO_HOME/.global-cache и использует SQLite для своей реализации. Он автоматически обновляется, отражая последние изменения в индексе, контейнере, каталоге кода, клоне git и проверке git, повышая эффективность и скорость операций управления зависимостями в проектах разработки.

Еще одной новой особенностью Rust 1.78 является то, что стандартная библиотека Rust имеет различные утверждения для предварительных условий «небезопасных» функций который теперь можно отложить до генерации кода. Это позволяет проводить такие проверки исторически они были включены только в сборках «#[cfg(debug_assertions)]» чтобы не повлиять на производительность релизной версии. Благодаря этому изменению пользователи теперь могут обнаруживать неопределенное поведение в своем коде, хотя сведения о том, сколько проверяется, обычно не стабильны. Чтобы включить проверки, теперь достаточно включить утверждения отладки для тестовых или отладочных сборок кода.

Кроме того, сейчас поведение функций стандартной библиотеки которые влияют на выравнивание указателей и секторов теперь это предсказуемо во время выполнения и зависит от входных данных. Функция указатель::align_offset, который вычисляет смещение для выравнивания указателя, теперь возвращает использовать::MAX только в том случае, если операция не удалась. Функции срез::align_to и срез::align_to_mut, которые преобразуют срезы в представление с выровненным средним срезом и исходными начальным и конечным срезами, теперь всегда возвращают самую большую среднюю часть.

С другой стороны, упоминается, что Следующие API были перенесены в категорию «стабильные».: impl Чтение &Stdin, impl From для io::Error и реализация внедрить что позволяет использовать ?Размер.

Из Другие изменения, которые выделяются этой новой версии:

  • Реализован второй уровень поддержки целевой платформы Add wasm32-wasip1. Второй уровень поддержки предполагает гарантию сборки.
  • Платформа wasm32-wasi-preview1-threads была переименована в wasm32-wasip1-threads.
  • В менеджере пакетов Cargo стабилизирована версия 4 файлов блокировки (lockfile v4). Теперь Cargo использует эту версию в качестве стандарта, чтобы обеспечить согласованность и эффективное управление зависимостями между проектами.

Если вы интересно узнать о нем больше, вы можете проверить детали в по следующей ссылке.

Наконец, для тех, кто Заинтересованы в обновлении с предыдущей версии Rust установленный через rustup, вы можете получить новую версию Rust 1.78 с помощью:

rustup update stable

Если в вашей системе еще не установлен Rust, вы можете сделать это, выполнив в терминале следующую команду:

curl --proto '=https' --tlsv1.3 https://sh.rustup.rs -sSf | sh