Рабочая группа rustup рада сообщить о выпуске новой версии, 1.20.0. Rustup — рекомендуемая утилита для установки Rust, языка программирования, позволяющего каждому создавать надёжное и эффективное программное обеспечение.


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


rustup self update

Также rustup автоматически обновляется после обычного обновления набора инструментов:


rustup update

Если у вас ещё не установлен rustup, вы можете установить его с соответствующей страницы нашего веб-сайта.


Что нового в rustup 1.20.0


Изюминками данного выпуска являются поддержка профилей, возможность получить последний доступный nightly выпуск, имеющий все необходимые вам компоненты, и улучшения в команде rustup doc. Вы также можете посмотреть список изменений, чтобы узнать обо всех изменениях, включённых в этот выпуск.


Профили


Предыдущие версии rustup устанавливали по умолчанию несколько компонентов вместе с каждым набором инструментов — это были компилятор (rustc), менеджер пакетов (cargo), стандартная библиотека (rust-std) и локальная документация (rust-docs). Не смотря на то, что данный подход удобен для разработки на локальном ПК, некоторые компоненты (как rust-docs) замедляли установку. Например, документация обычно не нужна на сервере сборок, или замедляет инсталляцию на Windows из-за большого количества файлов.


Для решения данной проблемы, в rustup 1.20.0 ввели концепцию профилей ("profiles"). Они группируют компоненты, которые можно выбрать для загрузки во время установки нового набора инструментов. Доступными профилями в данный момент являются minimal, default и complete:


  • minimal — минимальный профиль, включающий несколько компонентов, чтобы получить минимальную рабочую среду (rustc, rust-std и cargo). Рекомендуется использовать для Windows, если локальная документация не используется, а также на CI серверах сборки.
  • default — профиль по умолчанию, включает все компоненты, ранее устанавливаемые по умолчанию — (rustc, rust-std, cargo и локальную документацию rust-docs), плюс rustfmt и clippy. Данный профиль будет использован rustup по умолчанию, и является рекомендованным для общего использования.
  • complete — полный профиль, включает все компоненты доступные через rustup, включая miri и инструменты интеграции с IDE (rls и rust-analysis).

Для изменения профиля rustup можно использовать команду rustup set profile. Например, выбрать минимальный профиль для использования можно так:


rustup set profile minimal

Можно также выбрать профиль при первой установке rustup, либо интерактивно при выборе опции "Customize installation", либо программно передав флаг --profile=<name>. Профили повлияют только на новые устанавливаемые наборы инструментов, позже можно установить отдельные компоненты с помощью команд: rustup component add.


Установка последней совместимой nightly версии


В то время как большинство компонентов гарантируют работу в стабильных выпусках на tier 1 платформах, эти же гарантии не применяются к ночным выпускам. Зачастую, утилиты, вроде rustfmt, clippy или rls пропадают в последней nightly сборке. Если вы зависите от этих утилит, то такое поведение может сделать трудным обновление nightly, так как rustup предотвращает обновление, если ранее установленные компоненты не доступны.


Начиная с rustup 1.20.0, если компонент, который вы ранее установили, не доступен в последней nightly сборке, rustup update пробежится назад во времени чтобы найти последний выпуск, имеющий все необходимые компоненты. Если же такого выпуска нет, то надо либо ждать, либо удалить некоторые из компонентов.


Вместе с этими изменениями, в rustup 1.20.0 для команды rustup toolchain install появились флаги --component/-c и --target/-t, позволяющие вам добавить компоненты и целевые платформы во время установки набора инструментов. Эти флаги также ищут ближайшую подходящую nightly сборку, если текущая не содержит запрашиваемых компонентов.


Улучшения в rustup doc


Команда rustup doc открывает локально установленную документацию в вашем браузере, не требуя подключения к интернету. rustup 1.20.0 расширяет способности этой команды и позволяет вам открыть документацию API по конкретному элементу. Например, для того, чтобы посмотреть документацию по Iterator вы можете использовать следующую команду:


rustup doc std::iter::Iterator

Это работает для типажей, структур и перечислений, макросов и модулей и может работать для пакетов std, alloc и core. Однако обратите внимание, что данная функциональность работает только при наличии в вашем наборе инструментов компонента rust-docs. Со временем мы улучшим UX команды и если у вас есть идеи, то дайте нам знать!


Благодарности


Спасибо всем участникам, работавшим над rustup!


  • Andy McCaffrey
  • Artem Borisovskiy
  • Benjamin Chen
  • Daniel Silverstone
  • Jon Gjengset
  • Lzu Tao
  • Matt Kantor
  • Mitchell Hynes
  • Nick Cameron
  • PicoJr
  • Pietro Albini

От переводчиков


С любыми вопросами по языку Rust вам смогут помочь в русскоязычном Телеграм-чате или же в аналогичном чате для новичковых вопросов.


Данную статью совместными усилиями перевели andreevlex, funkill и blandger.

Комментарии (12)


  1. ip1981
    15.10.2019 18:09

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

    И начинается это надёжное и эффективное с загрузки блоба не-пойми-откуда?


    1. Kabdim
      15.10.2019 19:42

      Тот кому нужны сырцы в состоянии ведь найти сырцы для открытого по?


      1. ip1981
        15.10.2019 20:37
        -1

        Да, но многих этот xxxup перекочует в Dockerfile, и далее во все тяжкие.


        1. ip1981
          16.10.2019 07:20

          Вот, пожалуйста, путь наименьшего сопротивления.


        1. mkpankov
          16.10.2019 11:31

          Типичная логика "если это может быть использовано во зло, делать это не надо".
          В докер Раст легко ставится из tar.gz, и ссылка на него закопана даже не так далеко, как кажется.
          https://forge.rust-lang.org/infra/other-installation-methods.html#standalone


      1. Cerberuser
        16.10.2019 04:27

        Ну, строго говоря, bootstrap — это действительно проблема, потому что собрать компилятор из исходников без "скачивания блоба" пока что де-факто невозможно (де-юре есть mrustc, но он давно не обновлялся и не может скомпилировать уже, наверное, с десяток последних стабильных версий rustc). Есть движение за то, чтобы сделать gcc-совместимую версию компилятора, но пока что, насколько я понял, не до конца понятно даже, с какой стороны за это браться.


        1. ip1981
          16.10.2019 07:25

          Я не против блоба для бутстрапа, я говорю о том, что огромное количество разработчиков не буду заморачиваться и будут пихать этот rustup во все места не думая.


    1. ozkriff
      16.10.2019 11:47

      А почему "не-пойми-откуда"?


  1. GroGo
    15.10.2019 18:59

    Это великолепно. А если у меня был default профиль, я его переключил на minimal, все лишнее удалится?


    1. funkill
      15.10.2019 21:42

      Нет, лишнее вручную надо будет удалить. Профиль будет работать только для тулчейнов, которые будете добавлять после установки профиля.


  1. NikitOS9
    16.10.2019 06:24

    была же версия 1.38.0 или старую нужно удалить теперь


    1. mayorovp
      16.10.2019 08:43

      1.38.0 — это версия rust, а тут про утилиту rustup пишут