Бесплатно Экспресс-аудит сайта:

04.05.2024

Rust 1.78.0: новый язык Borgo, улучшенный контроль и стабильность кода

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

Как обновиться до новой версии

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

$ rustup update stable

Для тех, кто ещё не установил rustup, его можно загрузить с официального сайта. На сайте также доступны подробные заметки о нововведениях версии 1.78.0.

Нововведения в версии 1.78.0:

  1. Диагностические атрибуты: Версия 1.78.0 вводит новое пространство имён атрибутов #[diagnostic], которое позволяет влиять на сообщения об ошибках компилятора. Например, атрибут #[diagnostic::on_unimplemented] можно использовать для кастомизации сообщений, когда требуемый трейт не реализован для типа. Это предоставляет авторам трейтов возможность более точно указывать на проблемы в коде, что улучшает понимание и исправление ошибок при разработке.
  2. Утверждения небезопасных предусловий: Стандартная библиотека Rust теперь улучшена с добавлением утверждений для предусловий небезопасных функций, которые активируются в зависимости от настроек пользователя. Это изменение увеличивает шансы на обнаружение и предотвращение неопределённого поведения кода, даже если ранее оно могло казаться работоспособным.
  3. Детерминированное выравнивание: Усовершенствованы функции, которые изменяют выравнивание указателей и срезов. Теперь эти функции обещают более последовательное поведение во время выполнения, что делает их использование более надёжным и предсказуемым.

Стабилизация API и изменения в системных требованиях

В Rust 1.78 также стабилизирован ряд API, включая Barrier::new() и несколько реализаций, связанных с std::error::Error. Среди важных изменений — повышение минимальных системных требований до Windows 10 для ряда целей и обновление встроенного LLVM до версии 18, что улучшает совместимость и исправляет известные проблемы с ABI.

Дополнительно, описан новый язык программирования Borgo, разработанный с целью сочетать простоту Go и безопасность Rust, предлагая баланс между выразительностью и сложностью. Borgo использует статическую типизацию и совместим с пакетами Go, при этом код компилятора Borgo написан на Rust и распространяется под лицензией ISC.