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, чтобы читать новости про конференцию и общаться.