Вышел Rust 1.100 — разработчики наконец завершили работу, длившуюся 10 лет

Наконец-то!

Вышел Rust 1.100 — разработчики наконец завершили работу, длившуюся 10 лет

Команда Rust выпустила версию 1.100.0. 

Главным нововведением стала окончательная стабилизация типа !, над которым разработчики работали около 10 лет. 

Кроме того, язык получил новые инструменты управления памятью, а Cargo научился предупреждать о ненужных зависимостях.

Читают прямо сейчас:

В Rust нашли опасную дыру в защите памяти — багу уже 11 лет — разбираем ошибки времени жизни ссылок и механизм Drop.

Пишем гороскоп на Rust — устанавливаем Rust, знакомимся с Cargo и подключаем зависимости.

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

Тип, который ждали десять лет

Главное изменение Rust 1.100 — полноценная поддержка never type, обозначаемого символом !.

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

Раньше ! уже применялся в некоторых ситуациях, но теперь его можно использовать в любом месте, где допускается указание типа.

Разработчикам потребовалось 10 лет и пять неудачных попыток стабилизации, чтобы довести эту возможность до стабильного релиза.

При этом изменение может затронуть некоторые старые проекты из-за обновления правил вывода типов. Команда Rust заранее подготовила предупреждения о совместимости.

Новые возможности работы с памятью

В Rust 1.100 стабилизировали основные части Allocator API. Теперь разработчики библиотек могут создавать собственные распределители памяти и использовать их с Vec и Box.

Появился и новый инструмент DropGuard, который автоматически выполняет заданное действие при выходе из области видимости.

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

Также добавили функцию conjure_zst для создания значений типов нулевого размера. Она требует использования unsafe, поскольку неправильное применение может нарушить гарантии безопасности программы.

Cargo стал удобнее и безопаснее

Менеджер пакетов Cargo теперь предупреждает о неиспользуемых зависимостях. Это поможет избавляться от лишних библиотек и сокращать время сборки проектов.

Еще одно важное нововведение — min-publish-age. Разработчики могут установить минимальный возраст версии пакета, например три дня.

В таком случае Cargo не будет автоматически выбирать только что опубликованные версии зависимостей. Это дает сообществу и системам проверки дополнительное время на обнаружение вредоносных обновлений.

Кроме того, разработчики переработали структуру каталога сборки, чтобы уменьшить конфликты кеша и избежать лишней перекомпиляции.

Rust 1.100 уже доступен для установки. Пользователи предыдущих версий могут обновиться командой:

rustup update stable
Через год — лучше работа, выше зарплата
В «Яндекс Практикуме» становятся разработчиками с нуля. Выберите язык — веб, Python, Java, C++ — и учитесь. Джуны зарабатывают от 80 000 ₽, мидлы — от 150 000 ₽. Дальше — программы трудоустройства и компенсация, если пойдёте в Яндекс.
Через год — лучше работа, выше зарплата Через год — лучше работа, выше зарплата Через год — лучше работа, выше зарплата Через год — лучше работа, выше зарплата
Вам может быть интересно
easy