Главная / Блог / Когда и как Rust заменит C?

Рассказываем об особенностях Rust и прогнозируем его будущее

March 2020

Создатели Rust обещают, что их язык затмит собой C и С++. Разработчики Evrone использовали его в ряде действующих проектов, каждый из которых позволил нам набрать внушительный опыт. В статье поделимся нашими выводами о применении языка и его возможном будущем.

В C и С++ есть общепризнанные проблемные моменты, с которыми программистам приходится иметь дело из раза в раз. Это и трудности при компиляции, и высокий шанс утечки памяти, сам процесс управления этой памятью вручную, известные ошибки segfault. Задача Rust — обойти эти недоработки, одновременно увеличив производительность и повысив безопасность.

Что особенного в Rust?

  • Лаконичный синтаксис с ключевиками, похож на синтаксис C.
  • Кодовый анализатор, помогающий не допускать утечек памяти и не совершать ошибок при работе с многопоточностью.
  • Самостоятельное управление расположением данных в памяти (используя указатели).
  • Нет garbage collection.
  • Мощная статистическая типизация.
Семейное древо Rust

История языка

Разработкой языка занялся в свободное время сотрудник Mozilla Грэйдон Хор 14 лет назад, в 2006. Три года он действовал самостоятельно, пока в 2009-м к работе официально не подключилась Mozilla. В 2010 Rust был представлен официально.

Первый альфа-релиз языка состоялся в 2012. На Rust был разработан Servo, движок для веб-браузеров. В 2013 к работе над Servo присоединился Samsung, в результате чего код Servo был портирован на ARM-архитектуру.

Rust 1.0 вышел в 2015. В свой первый год Rust взял бронзу в голосовании «Любимый язык программирования» на портале Stack Overflow. Все последующие годы Rust занимает только первое место.

история rust

Преимущества и недостатки

Аргументы «за»:

  • без проблем работает на Unix и Mac;
  • есть абстракции, которые существенно упрощают регулирование памяти вручную;
  • надёжная система взаимодействия с памятью, исключающая ошибки сегментации;
  • автоматическое представление способов исправить ошибки при компиляции;
  • компилятор содержит сборщик и менеджер пакетов, инструменты для тестирования и создания документации;
  • в безопасном коде нет возможности применять указатели (только ссылки на 100% реальные объекты);
  • доступное описание ошибок в шаблонах.

Аргументы «против»:

  • Компилятор слишком строго фиксирует вызовы к памяти;
  • Нет типичных для ООП-стиля наследования и классов.
rust за и против

Где нужен Rust?

Код на Rust соответствует четырём главным концепциям в программировании: процедурное, параллельное, функциональное и ООП. Поэтому Rust — разносторонний язык, который можно применять во многих сферах. Например:

  • программирование клиентских приложений и веб-серверов;
  • blockchain;
  • создание собственных ОС;
  • написание программ и приложений по мониторингу систем и серверов;
  • разработка ПО общего назначения;
  • создание инфраструктуры;
  • написание движков для браузеров и игр.

ПО и операционки

Rust спроектировали именно для системной разработки. В нём есть все необходимые функции для работы с памятью и противодействия уязвимостям, чтобы использоваться для создания ключевых программ и операционных систем. Единственное, что создаёт помеху этому, — недостаточная поддержка от «железа», производители которого привыкли к тому, что все применяют C или C++. Вот несколько удачных реализаций:

  • многопоточный движок для браузера Servo;
  • гипервизор Firecracker, разработанный в основном под бессерверную архитектуру;
  • микроядерная ОС Redox.

Rust и блокчейн-проекты

Одно из важнейших требований блокчейн-сетей — высокая скорость работы внутри сети при низком уровне нагрузки серверов. Многие блокчейны (например Ethereum или Bitcoin) используют для реализации таких условий функционал C++. Учитывая сказанное выше, создание инфраструктуры на Rust будет более результативным. Вот примеры использования в blockchain:

  • сервис для разработки блокчейн-проектов Solana;
  • фреймворк для тех же целей Exonum;
  • неофициальный клиент для Ethereum и Bitcoin — Parity.io;
  • децентрализованная платформа хранения и работы с информацией MaidSafe;
  • гетерогенные blockchain-сети polkadot.network.

Rust и web-приложения

В Rust есть всё необходимое для разработки веб-приложений. Его функционал подходит и для frontend, и для backend. Для создания фронтенда можно использовать Yew, аналог React для Rust. Удобная и функциональная разработка серверов доступна в actix-web, крайне эффективном фреймворке, включающем в себя работу с HTTP/2.0, WebSockets и TLS. Но, разумеется, только им Rust не ограничивается, технологий много: pencil, conduit, rocket, gotham. Вот примеры проектов:

  • сервис онлайн-обучения Coursera, созданный преподавателями Стэнфорда;
  • файловый и облачный хостинг Dropbox;
  • проект OpenDNS, который помогает находить доступные DNS-сервера.

Rust и нейросети

На сегодняшний день нейросети на Rust — это в основном эксперименты. Язык выглядит довольно притягательным для машинного обучения: низкоуровневая работа с памятью и при этом применение высокоуровневых абстракций, а также высокая производительность языка. Всё это работает на Rust API и сулит ему большую популярность. Но пока в экосистеме Rust практически нет на 100% испытанных и безопасных фреймворков для разработки нейросетей, способных составить конкуренцию библиотекам на Python.

Что будет с Rust дальше?

За практически 40 лет C++ выбился в лидеры отрасли, сохраняет это лидерство и считается стандартом разработки. Rust — молодой язык, который постоянно меняется, эволюционирует, пытаясь решить известные недочеты не только C++, но и остальных языков.

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

Прогноз Evrone: Rust будет становиться все более востребованным языком, и вполне возможно, что при должном развитии и доработках он сможет обойти главных сегодняшних конкурентов.

Rust с каждым днём используют всё чаще. На него сделали ставки такие компании как Microsoft, Amazon. Также Rust включили в список языков для разработки ядра Linux, а Google — выпустила свою ОС Fuchsia, которая в большой степени написана на Rust.
Михаил Грачёв
Backend-разработчик и DevOps-инженер Evrone
Будем на связи
Прикрепить файл
Максимальный размер файла: 2 МБ.
Допустимые типы файлов: jpg jpeg png txt rtf pdf doc docx ppt pptx.