3 декабря в Москве прошла конференция по языку программирования Rust - RustCon Russia 2021. Она получилась по-настоящему международной, собрав 100 участников из России, Беларуси, Казахстана, Аргентины и Великобритании.

Аудитория конференции была смешанная: кто-то уже пишет на Rust и использует его в работе, а кто-то попробовал его для своих pet’s projects. А кто-то просто интересуется новым развивающимся языком и хотел послушать опытных докладчиков, поболтать с участниками и спикерами в кулуарах.

Было очень много полезной информации и общения. Сообщество Rust пока еще хоть и не большое, но в нем очень крутые и талантливые ребята. И мы уверены, в ближайшее время спрос на Rust-разработчиков будет расти, а это значит, что и сообщество увеличится. Недавно как раз разговаривали с Григорием Петровым о применении Rust в компании Evrone. Из его интервью можно сделать такие же выводы.

В программе прошедшей конференции было 9 докладов и мастер-класс. Если у вас не получилось посетить RustCon Russia 2021, вот небольшая выжимка по темам.

Открыл конференцию Сергей Фомин из Яндекса с докладом - «Зачем системным программистам Rust».

Сергей рассказал про преимущества и недостатки современного системного программирования на различных языках: от С и С++ до их более высокоуровневых альтернатив. Рассмотрел гарантии безопасности, которые предоставляет Rust, и почему даже при наличии unsafe кода Rust существенно более безопасен, чем C и C++. Привёл пример того, как можно взять код на C++ и сделать над ним «безопасную абстракцию» на Rust.

«Под капотом у процедурных макросов» - так звучала тема второго доклада RustCon Russia 2021 от Владислава Бескровного из JetBrains.

Спикер рассказал:

  • Какое API компилятор предоставляет процедурным макросам. Что процедурный макрос может, а что - нет.

  • Как процедурный макрос компилируется в динамическую библиотеку.

  • Как взаимодействуют rust и dll процедурного макроса.

  • Коротко о более высокоуровневых библиотеках - proc_macro2, syn, quote.

  • Пару слов о поддержке процедурных макросов в rust-analyzer и в intellij-rust.

Третий доклад  - «Экскурс в Rust для питонистов, рубистов и всех причастных» от Михаила Грачева из Evrone.

Михаил рассказал, как Rust выглядит для разработчиков, которые уже хорошо умеют Ruby, Python или JS. Это было не «введение в Rust для новичков», а обзор от опытного разработчика для других опытных разработчиков: ключевые отличия, на что стоит обращать внимание и где будет болеть.

«Неочевидные прелести Rust» - четвертый доклад RustCon Russia 2021 от Вафеля. Этот доклад все очень ждали, тк многие знают Вафеля по его блогу «Мне не нравится реальность» и активности в Rust-сообществе. 

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

Вафель рассказал об этих прелестях, чтобы как можно больше разработчиков о них знали и могли ими пользоваться :)

Несколько примеров пунктов из списка:

  • Result: FromIterator (.collect:<Result<_, _>>())

  • Возможность использования паттернов везде (например в аргументах функций, let)

  • Создание массивов через [CONST; N] для T: !Copy"

Пятым докладом был «Rust? В моём фронтенде?!» от Константина Егупова из Modeldrive. Он специально прилетел на RustCon из Лондона (там он живет и работает последние несколько лет).

Константин рассказал:

  • о том, что такое WebAssembly, как оно живёт в вебе и смарт-контрактах, на каких языках можно писать;

  • каково нынешнее состояние WASM-мира;

  • о проблемах сопряжения моделей данных WASM и Javascript;

  • почему переводить фронтенд на Rust/WASM - это хорошая идея;

  • почему переводить фронтенд на Rust/WASM - это плохая идея;

  • о передаче структуры в JS/TS: wasm_bindgen и JSON;

  • как отлаживать проблемы;

  • почему Rust вместо React: yew и его товарищи.

«Гетерогенные списки в Rust и их суперсилы» от Антона Михайлова - следующий, шестой доклад на RustCon Russia 2021. 

Доклад продемонстрировал, как, использовав в качестве промежуточной абстракции гетерогенные списки - вещь, обычно применяемую в функциональном программировании, - можно покрыть возможности, которые могли бы предоставить отсутствующие в Rust фичи: структурная типизация и вариадические дженерики.

Седьмой доклад - «Rust и Python - как в небольшой команде просто, прозрачно и с минимальными трудозатратами переписать узкие места на Rust (и почему не C++)» от Максима Акинина из assi.ai

В этом докладе рассмотрели реальную задачу разработки различных методов расчета кадастровой стоимости, спрототипированной на Python, с тестами, написанными на Python/unittest, и постепенного ее переписывания на Rust с использованием:

  • взаимодействия с RabbitMQ (amiquip);

  • работы с Mongo;

  • треды;

  • интеграция кода в инфраструктуру тестов, разрабатываемых на Python.

Важной частью доклада была мотивация выбора Rust (особенно в сравнении с C++) в реальный проект, который используется в проде, для команды, которая заточена, в основном, под Python и JS.

«Rewrite It In Rust: Переписываем с C++ на Rust» - восьмой доклад на RustCon Russia 2021 от Александра Шишенко из Librevault. Александр ведет свой блог на youtube «Русский айтишник». 

В своем докладе он рассмотрел порядок переписывания реального проекта с C++ на Rust по этапам:

  • Добавили в CMake сборку статических библиотек через Cargo;

  • Заменили C++-зависимости аналогами на Rust;

  • Научились использовать corrosion, cbindgen, cxx.

И всё это без unsafe.

Завершил конференцию девятый доклад - «RustCrypto: экосистема криптографических крейтов написанных на чистом Rust» от Артема Павлова из  Квантома.

Выступление Артема затронуло следующие темы.

  • Краткий экскурс в историю разработки RustCrypto.

  • Влияние подхода "малых крейтов" на использование и разработку по сравнению с монолитными библиотеками. Достоинства и недостатки обоих подходов.

  • Реализация алгоритмов на чистом Rust против биндингов к C/C++/asm библиотекам.

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

  • Проблемы композиции алгоритмов и эффективного написания SIMD кода в присутствии runtime детектирования возможностей процессора.

  • Будущее RustCrypto в контексте развития Rust.

Параллельно с докладами Антон Патрушев провел мастер-класс «Начинаем Embedded на Rust». Он был построен вокруг отладочной платы STM32F3DISCOVERY.

Антон рассказал, как всё устроено в мире Embedded Rust, какие есть инструменты, под какие семейства микроконтроллеров и архитектуры можно разрабатывать на Rust уже прямо сейчас, как механизмы Rust помогают бороться с классическими проблемами в разработке под микроконтроллеры. Затем участники мастер-класса написали небольшой проект - usb устройство, которое при подключении к компьютеру определяется как мышь, не требуя драйверов, и умеет «дрожать» курсором мыши.

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

Поскольку RustCon Russia 2021 так всем понравилась, мы уже планируем следующую конференцию. Проведем ее 2 декабря 2022. У нас есть много идей, как улучшить формат и сделать RustCon Russia 2022 еще более интересной и полезной.

Если у вас не получилось в этом году присутствовать офлайн, вы можете приобрести записи докладов на нашем сайте (с 1 апреля 2022 записи появятся в открытом доступе для всех). Выступления будут интересны и тем, кто уже пишет на rust, и тем, кто пока к нему присматривается (некоторые участники после конференции окончательно решили изучать rust).


Вступайте в чат RustCon Russia, чтобы читать новости про конференцию и общаться.

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


  1. cy-ernado
    05.01.2022 21:34

    Что это делает в хабе Go и зачем тут тег "rust is faster than go"?


    1. gerasimovich Автор
      05.01.2022 22:38
      +1

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


  1. zueve
    08.01.2022 00:39
    +1

    "Выжимка по темам" - это конечно хорошо, но какой от нее толк без возможности посмотра докладов?


  1. AnthonyMikh
    08.01.2022 06:57

    «Гетерогенные списки в Rust и их суперсилы» от Антона Михайлова — следующий, шестой доклад на RustCon Russia 2021.

    О, мой докладец.