9 компаний, которые используют Rust в производстве

Перевод | Автор оригинала: Gints Dreimanis

Если вы еще не слышали, Rust - один из самых многообещающих и любимых языков программирования.

Впервые созданный в Mozilla, с тех пор он был принят такими компаниями, как Dropbox, Microsoft, Facebook и другими. Основное преимущество Rust заключается в том, что он обеспечивает производительность, подобную C, при сохранении безопасности памяти, к которой мы привыкли при разработке с использованием таких языков, как JavaScript и Python.

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

9 историй успеха Rust

Dropbox

Dropbox использует Rust

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

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

Узнайте больше об использовании Rust в Dropbox в их техническом блоге.

Coursera

Coursera использует Rust для выполнения своих заданий по программированию, когда учащимся нужно написать и запустить компьютерную программу для решения проблемы. Программы запускаются, тестируются и оцениваются внутри контейнеров Docker. По соображениям безопасности команде разработчиков потребовалось использовать для некоторой части кода низкоуровневый язык, такой как Rust, и они решили, что Rust более безопасен, чем C.

Хотя C по умолчанию является низкоуровневым языком программирования с полным контролем, эти двоичные файлы имеют строгие требования к безопасности и корректности. Вместо этого мы выбрали Rust, современный родной язык от Mozilla. Одним из распространенных аргументов в пользу Rust является полная невосприимчивость к определенным классам уязвимостей безопасности благодаря мощной системе типов, что делает его отличным выбором для критически важных функций безопасности. (Источник)

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

Figma

Фигма использует Rust

Figma - это инструмент совместного веб-дизайна для векторной графики и прототипирования интерфейсов. Они решили переписать свой механизм многопользовательской синхронизации на Rust (ранее он был на TypeScript), чтобы повысить производительность, поскольку их сервер не успевал за ростом пользователей.

Мы выбрали Rust для этого переписывания, потому что он сочетает лучшую в своем классе скорость с низким потреблением ресурсов, при этом обеспечивая безопасность стандартных серверных языков. Низкое использование ресурсов было особенно важно для нас, потому что некоторые проблемы с производительностью старого сервера были вызваны сборщиком мусора. (Источник)

Узнайте больше об использовании Rust в Figma в их блоге.

npm

npm - это менеджер пакетов для JavaScript. Команда инженеров решила переписать свой основной сервис на Rust, потому что они увидели, что производительность сервиса скоро станет узким местом, если рост пользователей продолжится. Они отказались от таких технологий, как C и C++, поскольку не верили, что смогут управлять памятью для веб-службы. Java была отклонена, так как это предполагало развертывание JVM на их серверах. 🙃

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

Чтобы узнать больше, прочитайте их тематическое исследование на домашней странице Rust.

Microsoft

Microsoft использует Rust

Microsoft недавно экспериментировала с интеграцией Rust в свои большие кодовые базы C/C++.

Основным аргументом в пользу принятия Rust в Microsoft была безопасность памяти, которую обеспечивает Rust. За последние 12 лет около 70 процентов CVE (Common Vulnerabilities and Exposures), обнаруженных в Microsoft, были связаны с безопасностью памяти. Microsoft пробовала различные варианты решения этой проблемы, такие как обширное обучение разработчиков и инструменты статического анализа. Однако, похоже, единственный выход - сделать эти уязвимости невозможными.

Чтобы узнать больше о Rust в Microsoft, посмотрите этот доклад:

Cloudflare

Cloudflare использует Rust в своей основной граничной логике и в качестве замены C, который небезопасен для памяти.

Их GitHub показывает 18 репозиториев с открытым исходным кодом, которые используют Rust, и в своем блоге они документируют его использование для правил межсетевого экрана, очень настраиваемого инструмента межсетевого экрана.

Благодаря смешанному набору требований к производительности, безопасности памяти, низкому использованию памяти и возможности быть частью других продуктов, над которыми мы работаем, например Spectrum, Rust выделялся как самый сильный вариант. (Источник)

Facebook

Facebook использует Rust

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

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

Amazon

AWS использовал Rust для чувствительных к производительности компонентов таких сервисов, как Lambda, EC2 и S3. Кроме того, компания открыто поддерживает и спонсирует развитие языка и его экосистемы.

У Amazon также есть открытый исходный код для сервиса, полностью написанного на Rust. Firecracker VMM - это монитор виртуальных машин, созданный для таких сервисов, как AWS Lambda и AWS Fargate.

Discord

Discord использует Rust

Discord использует Rust во многих местах своей кодовой базы, как на стороне клиента, так и на стороне сервера.

Например, команда использовала Rust и Elixir для масштабирования до 11 миллионов одновременных пользователей за счет использования Elixir NIF (собственные реализованные функции). В этом случае Rust позволил им ускорить существующую кодовую базу Elixir, сохранив при этом всю память в безопасности.

Они также переписали свой сервис Read States на Rust (изначально на Go). Хотя версия сервиса для Go большую часть времени была достаточно быстрой, иногда возникали большие всплески задержки из-за модели памяти Go и сборщика мусора.

Чтобы решить эту проблему, Discord перешел на Rust, который предлагает уникальную систему распределения памяти, которая делает ненужной сборку мусора.

Помимо производительности, Rust имеет много преимуществ для команды разработчиков. Например, его безопасность типов и средство проверки заимствований упрощают рефакторинг кода при изменении требований к продукту или обнаружении новых знаний о языке. Кроме того, экосистема и инструменты превосходны и имеют значительный импульс. (Источник)

Чтобы узнать больше об их использовании Rust, прочтите эту статью в их блоге.

Будущее Rust

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

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

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

Если вы хотите узнать больше о Rust, я собрал краткое введение, которое вы можете проверить в нашем блоге. А пока подписывайтесь на нас в социальных сетях, таких как Twitter и Medium, чтобы видеть больше сообщений о Rust и нескольких других языках программирования, которые мы используем в нашей повседневной работе.