Выпуск Rust 1.24

оригинал: The Rust Core Team • перевод: LooMaclin • новости • поддержите на Patreon

Команда Rust рада сообщить о новой версии Rust: 1.24.0. Rust — это системный язык программирования, нацеленный на безопасность, скорость и параллельное выполнение кода.

Если у вас установлена предыдущая версия Rust, для обновления достаточно выполнить:

1
$ rustup update stable

Если же у вас ещё не установлен rustup, вы можете установить его с соответствующей страницы нашего веб-сайта. С подробными примечаниями к выпуску Rust 1.24.0 можно ознакомиться на GitHub.

Что вошло в стабильную версию 1.24.0

Этот выпуск содержит два очень интересных нововведения: rustfmt и инкрементальную компиляцию!

В Rust векторы — это значения

оригинал: Niko Matsakis • перевод: bmusin • размышления • поддержите на Patreon

В последнее время я долго думал над персистентными коллекциями и в особенности над тем, как они относятся к Rust. Хочу поделиться с вами своими наблюдениями.

О том, как устроены персистентные векторы, быстрее ли они традиционных коллекций — смотрите под катом.

Неявность

оригинал: withoutboats • перевод: bmusin & ozkriff • размышления • поддержите на Patreon

Часто, когда я обсуждаю дизайн Rust на RFCs или на internals-форуме с другими пользователями, я замечаю характерные высказывания насчёт явности. Обычно что-то в духе:

Мне не нравится <дизайн возможности X>, потому что он менее явный. Всякая магия уместна в <другом языке Y>, а Rust — это явный язык, так что следует использовать <дизайн возможности Z>.

Подобные комментарии жутко меня раздражают, потому что дают очень мало полезной обратной связи. Они лишь утверждают, что «явное лучше неявного» (при этом предполагается, что это бесспорное утверждение), и что какой-то дизайн менее явный, чем альтернатива (хотя часто даже не приводится объяснений, почему именно критикуемый дизайн менее явный), из чего следует, что их подход предпочтительнее.

В своей опубликованной ранее в этом году заметке Аарон пытался докопаться до сути вопроса явности, обсуждая размер контекста (reasoning footprint). Он попытался разбить понятия «явность» и «неявность» на составные части, чтобы подготовить почву для суждения о явности дизайна той или иной возможности. Я же хочу изложить немного другой взгляд на проблему и попытаюсь очертить в общих словах, что мы подразумеваем под словом «явный».

Английский — довольно нечёткий язык, в котором прилагательные имеют множества контекстно-зависимых значений, например, как используется слово «нечёткий» (fuzzy) в предыдущем предложении. Слово «явный» тоже многозначно, так что я не могу утверждать наверняка, что кто-то неправильно использует это слово. Однако я предлагаю выражать свои мысли при обсуждении «явности» более чётко, чтобы все лучше понимали, о чем именно идёт речь.

Что такое Tokio и Async IO и зачем это нужно?

оригинал: Manish Goregaokar • перевод: bmusin • обучение • поддержите на Patreon

Сообщество Rust в последнее время сконцентрировало много своих усилий на асинхронном вводе/выводе, реализованном в виде библиотеки Tokio. И это замечательно.

Многим из участников сообщества, тем, которые не работали с веб-серверами и связанными с этим вещами, не ясно, чего же мы хотим добиться. Когда эти вещи обсуждались во времена версии 1.0, я тоже имел смутное представление об этом, никогда прежде не работав с этим раньше.

  • Что это такое — Async I/O?
  • Что такое корутины (coroutines)?
  • Что такое легковесные потоки (lightweight threads)?
  • Что такое футуры? (futures)?

  • Как они сочетаются между собой?

Rust: скачиваем ленту и парсим JSON

оригинал: Florian Gilcher • перевод: bmusin • обучение • поддержите на Patreon

Я покажу вам, как написать небольшую программу, которая скачивает ленту (feed) в формате JSON, парсит и выводит список заметок на консоль в форматированном виде.

У нас все вылилось в очень лаконичный код. Как? Смотрите под катом.