[Перевод] Rust в 2016 году

1edae5952c9e9a92d9e87d8bc427c953.png2015 год был значительным годом для Rust: мы выпустили версию 1.0, стабилизировали большинство элементов языка и кучу библиотек, значительно выросли как сообщество, а также реорганизовали управление проектом. Может показаться что 2016 год не будет таким же интересным (будет трудно превзойти выпуск 1.0), но это будет супер-важный год для Rust, в котором произойдет много захватывающих вещей. В этой статье я расскажу о том, что, как я думаю, должно произойти. Это не официальная позиция и не обещание разработчиков Rust.

2015


Прежде чем мы поговорим о будущем, вот несколько цифр за прошлый год:

В 2015 году силами сообщества Rust:


2016


Как и во второй половине 2015 года, я ожидаю увидеть много постепенных усовершенствований в 2016 году: полировку библиотек, исправление ошибок компилятора, улучшение инструментов и увеличение количества счастливых пользователей. Также на горизонте есть довольно много крупных изменений — последние месяцы мы провели много времени занимаясь планированием, рефакторигом и консолидацией проекта, и я ожидаю что это принесет свои плоды.

Язык


Cпециализация реализаций (impl specialization) — это возможность иметь несколько реализаций типажа для одного типа, когда существует возможность определить наиболее частную из них. Это открывает возможности для оптимизации и решает некоторые раздражающие вопросы. Существующий RFC почти принят и работа идет полным ходом. Хороший выбор для начала 2016 года.

Последнее время мы также обсуждаем эфективную реализацию наследования (а-ля виртуальные структуры). Существует некая красивая взаимосвязь между специализацией и наследованием, так что большая часть плана уже составлена. Пока все еще остаются кое-какие важные пробелы, но я надеюсь, что они будут заполнены.

Еще одна новая возможность системы типов, обсуждаемая последнее время, — это абстрактные типы возврата (abstract return types, иногда также называемые «impl trait»). Она позволяет использовать типаж (вместо типа) в качестве возвращаемого значения функции. Идея проста, но есть несколько больных вопросов, которые нужно будет решить. Но поскольку у сообщества существует потребность в этой возможности, я думаю, что она будет реализована в 2016 году.

Новая система выделения памяти и синтаксис размещения (placement box syntax) позволит Rust удовлетворить кучу потребностей системного програмирования (например, позволив выбрать аллокатор для некоторой коллекции). Также это дверь к возвращению сборки мусора в Rust. Felix Klock упорно трудится над дизайном и реализацией, чтобы эти возможности появились в этом году.

Моей наибольшей задачей по языку будет реконструкция системы макросов, в часности, появление процедурных макросов, которые в итоге должны стать полноценной частью стабильного Rust. Я писал об этом подробно в своем блоге.

Одной из не самых сильных сторон Rust является обработка ошибок. Мы обсуждали различные варианты сделать ее более удобной, и похоже что в скором времени любимый вариант будет принят в качестве RFC. Это предложение добавляет оператор ?, который работает аналогично макросу try! (например, можно будет писать foo()? там, где сегодня вы пишете try!(foo())), а также вводит новое выражение try ... catch, которое позволяет перехватывать и обрабатывать исключения. Я ожидаю, что это предложение (или во всяком случае очень похожее) будет принято и реализовано очень скоро.

Мы могли бы, наконец, сказать до свидания drop-флагам. Так или иначе, мы мечтаем об этом.

Библиотеки


Я ожидаю, что 2016 год станет годом библиотек. Стандартная библиотека выглядит хорошо, и я думаю что в ней будут появляться только незначительные улучшения. Я также думаю, что мы будем включать некоторые внешние пакеты в стандартную библиотеку, но скорее всего это будет происходить медленно и постепенно, ближе к концу года. С другой стороны, будет происходить много интересного за пределами репозитория Rust, как в инкубаторе, так и в других местах.

Библиотека libc в значительной степени устаканена, так что я думаю что в этом году она будет полироваться и двигаться в направлении стабилизации.

rand — еще один крейт из инкубатора, на стабизацию которого можно расчитывать, и я не думаю что будут происходить какие-либо крупные изменения API в будущем.

Одним из самых волнующих пакетов является mio, который обеспечивает очень низко-уровневую поддержку асинхронного IO. Я расчитываю увидеть значительное развитие и движение в сторону получения официального статуса в этом году.

Также есть несколько действительно интересных пакетов связанных с параллелизмом: crossbeam, rayon, simple_parallel, и другие. Я понятия не имею к чему в конечном итоге мы прийдем в этой области, и мне очень интересно будет это увидеть.

Инструменты


Я думаю, что 2016 год будет захватывающим с точки зрения инструментов разработки для Rust. Для нас это направление имеет высокий приоритет, и мне хотелось бы подчеркнуть некоторые вещи, над которыми мы сейчас работаем:

  • инкрементальная компиляция
  • среды разработки (IDE)
  • переписывание и объединение инструментов multirust и rustup
  • улучшение поддержки кросскомпиляции
  • улучшение поддержки Windows
  • пакеты для дистрибутивов Linux
  • инструменты для рефакторинга
  • улучшение работы rustfmt
  • использование Cargo для сборки rustc?


Сообщество


Было здорово наблюдать как растет сообщество в 2015 году, и я надеюсь, что оно вырастет еще больше в 2016. Я с нетерпением ожидаю знакомства с новыми потрясающими людьми и новыми интересными проектами, ожидаю увидеть новые статьи и новые взгляды на язык с точки зрения людей с различным предыдущим опытом, ожидаю больше встреч и больше всего!

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

Я не знаю об официальных планах, но я надеюсь и ожидаю проведения очередного Rust Camp в этом году. На прошлогоднем мероприятии было весело, и я уверен что было бы здорово увидеть продолжение.

Я также ожидаю увидеть как Rust становиться все более «серьезным» — его использование в продакшене и важных проектах с открытым исходным кодом. Ожидаю увидеть как существующие проекты на Rust становятся более значимыми сами по себе, а не только как «проекты использующие Rust».

Некоторые вещи, которые, я думаю, не произойдут


Типы высшего порядка — я думаю, все мы хотим их в той или иной форме, но это огромный вызов с точки зрения архитектуры и большое количество вопросов, над которыми нужно будет поработать. Я буду очень удивлен, увидев солидный RFC по внедрению типов высшего порядка в этом году, не говоря уже о реализации.

Обратная несовместимость — после 1.0 мы были довольно хороши в сохранении стабильности и не ломали уже работающие вещи, и я уверен, что мы сможем продолжить эту тенденцию.

2.0 — есть дискуссия по поводу выпуска обратно несовместимой версии Rust, но это выглядит все менее реалистичным для 2016 года. Пока нам удается двигаться в рамках обратно совместимых релизов достаточно хорошо, и нет ничего такого, что потребовало бы от нас выпуска обратно несовместимой версии. Я не думаю, что нам удастся всегда обходиться без выпуска 2.0, но я думаю что это произойдет точно не в 2016 году.

В независимости от того, что именно случиться, я верю что 2016 год будет прекрасным годом для всего сообщества. С новым годом!

© Habrahabr.ru