Вышел Rust 1.29
Новости Отредактировано
Основными нововведениями стали функции fix и clippy для пакетного менеджера Cargo, которые служат для поиска и исправления ошибок в коде программы.
816 открытий824 показов
Команда разработчиков языка программирования Rust представила версию 1.29, которая уже доступна для загрузки с помощью инструмента rustup
. Основное нововведение обновления — добавление новых возможностей для пакетного менеджера Cargo.
С версией 1.29 Cargo получит несколько новых функций, среди которых есть cargo fix
и cargo clippy
.
Инструмент cargo fix
Роль функции заключается в автоматическом исправлении некоторых синтаксических ошибок. К примеру, редактор вводит код:
Переменная i
не использовалась в программе до этого, о чём предупреждает компилятор:
Команда cargo fix
исправляет ошибку автоматически:
Таким образом, редактор получает исправленный src\main.rs
:
При использовании переменной _i
предупреждение появляться не будет.
Функция cargo fix
использует специальный API компилятора. Она взаимодействует только с теми предупреждениями, в уместности которых разработчик уверен. Пока их немного, но со временем список будет пополняться.
Инструмент cargo clippy
Компонент cargo clippy
служит статическим анализатором, выполняя большое количество дополнительных проверок кода. Например:
Код не содержит синтаксических ошибок, но drop
используется для ссылки на lock_guarg
, а не для самого lock_guard
непосредственно. Это может стать причиной взаимной блокировки процессов, так как операция drop
для ссылки нерентабельна. Исправление, предложенное компонентом cargo clippy
в данной ситуации:
Над модулем cargo clippy
всё ещё ведется работа. Разработчики намерены выпустить его полную версию только после окончательной отладки и стабилизации. Также эту функцию пока нельзя использовать вместе с cargo fix
.
Помимо вышеперечисленного, Cargo затронули следующие нововведения:
- возможность починить файлы блокировки, испорченные
git merge
, отключение свойства реализуется через флаг--locked
; - новый флаг
--document-private-items
дляcargo doc
, включающий генерацию всей документации при работе с внутренней документацией пакета пользователя.
Стабилизация работы библиотек
В выпуске 1.29 были стабилизированы следующие API:
Arc::downcast
;Rc::downcast
;Iterator::flatten
.
Кроме того, появилась возможность сопоставлять &str
и OsString
.
Разработчики отметили, что в версии Rust 1.29 довольно мало нового. Они объяснили это тем, что это обновление послужило своеобразной подготовкой к версиям 1.30 и 1.31, которые принесут больше нововведений.
С подробным списком изменений можно ознакомиться в GitHub-репозитории проекта.
Предыдущая версия языка, Rust 1.28, вышла в августе 2018 года. В ней была стабилизирована поддержка кастомных аллокаторов в качестве глобального аллокатора, улучшены сообщения об ошибках при форматировании строк, а также в версию 1.28 были добавлены новые типы, описывающие положительные беззнаковые целые числа различной длины.
816 открытий824 показов