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

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

Как Rust рос и развивался

Rust — это язык, который вырос не из попытки придумать что-то «совсем новое», а из желания спасти будущее программирования от ошибок прошлого. Именно так о нем сказал его автор Грэйдон Хор.

В начале нулевых было два подхода к созданию ЯП: упор на скорость или на безопасность. Программы на С и C++ работали быстро, но могли дать сбой из-за случайной ошибки программиста. Java, напротив, снижал подобные риски, но взамен требовал больше времени на исполнение.

Нужно было что-то, что объединяло бы мощь С и C++ со стабильностью Java. И это не революция ради революции, а умный апгрейд идей, давно знакомых разработчикам, но теперь с гарантией безопасности. 

История Rust началась в 2006 году. Тогда Грэйдон Хор, работавший в Mozilla, вечерами в порыве энтузиазма экспериментировал с новым языком. Ему хотелось решить проблему внезапного падения сервисов из-за нехватки памяти. Даже название он выбрал с иронией — Rust, в честь ржавчины (грибка). Тот факт, что эти организмы не только весьма живучи, но и быстро распространяются и переживают почти любые условия, показалось Хору отличной метафорой для языка, который должен стать одновременно надежным и быстрым.

С самого старта он задал правила игры: сначала семантика, потом синтаксис. Поэтому ранние версии Rust выглядели лаконично и даже нескольки аскетично: ключевые слова были максимум из пяти букв, а вместо привычных return или function использовались короткие ret и fn. Хор хотел, чтобы язык был строгим по смыслу и компактным в выражении.

Символ Rust. Источник.
Символ Rust. Источник.

Ключевые вещи, которые там сформировались, — ownership (кто владеет ресурсом) и borrow checker (механизм заимствования) — звучат громоздко. Но по сути это просто строгие правила для памяти: компилятор проверяет, у кого ключи памяти, и не дает двум «владельцам» ломать друг другу жизнь.

Через три года после зарождения идеи Mozilla решила финансировать разработку Rust. Уже в 2010 на конференции Mozilla Summit новый язык программирования показали публике. Интересно, что первый компилятор Rust был написан вовсе не на нем самом, а на OCaml — языке, который часто используют для создания компиляторов и академических инструментов.

Однако со временем команда разработчиков Rust переписала компилятор полностью на самом Rust, сделав его самодостаточным. Он использовал LLVM как бэкенд для генерации машинного кода. В 2011 году проект сделал исторический шаг — компилятор смог скомпилировать сам себя. Для разработчиков это был своеобразный «момент взросления»: язык доказал свою состоятельность.

Первая официальная альфа-версия the Rust lang (0.1) появилась в январе 2012 года. А в апреле 2013 года Mozilla пошла еще дальше и объявила о запуске проекта Servo. Это был браузерный движок, полностью написанный на Rust. Servo должен был показать, что Rust — это не очередной академический язык, а инструмент для создания сложных и высоконагруженных систем.

Выход первой стабильной версии Rust 1.0 в мае 2015 года обозначил готовность языка к промышленному использованию. Стабильность API позволила разработчикам создавать на Rust долгосрочные проекты без страха, что что-то внезапно сломается в следующих обновлениях. 

Сильным драйвером стала интеграция инфраструктуры: пакетный менеджер Cargo, репозиторий crates.io для публикации библиотек и rustup для управления версиями компилятора. Cargo, например, стал эталоном удобного пакетного менеджера, которым вдохновлялись другие языки.

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

В дальнейшем в нем появились развитые статические анализаторы кода, такие как Clippy, и автоматический форматировщик fmt. Инструмент Miri позволял выполнять интерпретацию кода Rust для поиска ошибок времени выполнения. Важнейший шаг — внедрение async/await, которые упростили работу с асинхронным программированием и открыли Rust дорогу в разработку масштабируемых сетевых приложений и микросервисов. 

Одновременно с этим стали набирать обороты проекты по поддержке WebAssembly (WASM), где Rust занял ведущее место как язык для создания быстрых веб-приложений и новых видов интерактивного контента в браузере.

Развитие Rust. Источник.
Развитие Rust. Источник.

В 2021 году была основана Rust Foundation, для поддержки развития языка, координацию усилий крупных участников и управление открытым проектом на профессиональном уровне. Одним словом — институционализация. В декабре 2022 года the Rust-programming-language стал первым языком (кроме C и Assembler), поддерживаемым при разработке Linux-ядра. А в 2023 году Stack Overflow обнаружил, что Rust является «самым любимым» языком программирования среди разработчиков.

Влияние крупных корпораций — Microsoft, Google, Amazon — сформировало мощный бэкграунд для Rust. Особое внимание сообщество уделяет образованию: язык развивается через официальные онлайн-курсы, документацию, мероприятия и конференции, а значит притягивает специалистов уровня мидл и выше. 

Небольшой список рекомендаций

  • The Rust Programming Language — бесплатная онлайн книга. Она охватывает базовые и продвинутые концепции языка и является основным учебником для изучения Rust.

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

  • Rust Compiler Error Index — компилятор настолько разговорчив что, во время написания программы вы будете наслаждаться простынями всяких ошибок. В этом томе все эти ошибки расписаны и рассказаны. 

  • The Rust Reference — полное, дотошное руководство, которое расскажет и покажет что делает каждая закорючка на экране. Хотите знать как Rust разложит в памяти ваш enum? Вам сюда.

  • Сайт rust-lang.org, где доступна широкая коллекция документации, примеров и руководств для изучения различных аспектов языка и его экосистемы.

Selectel Tech Day — 8 октября

Разберем реальный опыт IT-команд, технический бэкстейдж и ML без спецэффектов. 15 стендов и интерактивных зон, доклады, мастер-классы, вечерняя программа и нетворкинг. Участие бесплатное: нужна только регистрация.

Зарегистрироваться →

Rust vs C++ vs C# vs Java

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

Rust

fn main() {
    let number = 25;

    if number % 2 == 0 {
        println!("{} is even.", number);
    } else {
        println!("{} is odd.", number);
    }
}

Переменная number объявляется с помощью let (по умолчанию неизменяемая). Условный оператор if проверяет остаток от деления на 2, а для вывода используется макрос println!. В Rust выражения обычно не заканчиваются точкой с запятой, если значение результата нужно вернуть или распечатать. Код компилируется в исполняемый файл с хорошей безопасностью памяти благодаря системе владения.

Такой синтаксис называют C-подобным, потому что его корни восходят к языку С, который появился еще в далеких семидесятых. Сейчас это фактически стандарт корпоративной разработки — если знаете такой синтаксис, сможете быстро пересесть на Java, Swift, C# и любой другой современный язык.

C++

#include <iostream>

int main() {
    int number = 25;

    if (number % 2 == 0) {
        std::cout << number << " is even." << std::endl;
    } else {
        std::cout << number << " is odd." << std::endl;
    }

    return 0;
}

В C++ вводится переменная number типа int. Вывод организован через поток std::cout. Условие и оператор % работают так же, как в Rust.

Код требует явного return 0; в конце функции main. C++ имеет более сложный синтаксис и меньше гарантий безопасности памяти, чем Rust, что может привести к ошибкам. Но при этом он предоставляет тонкий контроль ресурсов.

C#

using System;

class Program
{
    static void Main()
    {
        int number = 25;

        if (number % 2 == 0)
        {
            Console.WriteLine($"{number} is even.");
        }
        else
        {
            Console.WriteLine($"{number} is odd.");
        }
    }
}

C# — язык с управляемой памятью и сборщиком мусора. Синтаксис похож на C++ с классами и методами. Вывод осуществляется через Console.WriteLine(). Интерполяция строк с помощью $"{}" делает код более читаемым.  C# поддерживает асинхронное программирование и обширную стандартную библиотеку, но уступает по контролю памяти Rust.

Java

public class Main {
    public static void main(String[] args) {
        int number = 25;

        if (number % 2 == 0) {
            System.out.println(number + " is even.");
        } else {
            System.out.println(number + " is odd.");
        }
    }
}

Java — строго объектно-ориентированный язык. Все функции обязаны быть внутри классов. Вывод — через System.out.println(). Компиляция в байт-код JVM добавляет портируемость, но немного снижает производительность по сравнению с нативными языками. Управление памятью реализовано сборщиком мусора, что упрощает разработку, но снижает контроль.

Так что же сделало Rust по-настоящему рабочим

Во-первых, интеграция Cargo и crates.io кардинально снизила технические барьеры в создании, сборке и распространении программ. Cargo — это полноценный менеджер проектов, который автоматизирует управление зависимостями, компиляцию, тестирование и публикацию пакетов. Вместе с crates.io — огромным репозиторием библиотек — он стал экосистемным сердцем Rust, позволив разработчикам легко искать, использовать и мейнтейнить пакеты. 

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

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

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

Наконец, комплекс инструментов, ориентированных на developer experience. Автоматический форматировщик rustfmt позволяет разработчикам забыть о долгих спорах по стилю кода — он обеспечивает единый, читаемый и поддерживаемый вид программ без дополнительных усилий. Линтер Clippy помогает выявлять неочевидные ошибки, потенциальные баги и рекомендации по улучшению читаемости и производительности, что значительно сокращает количество проблем в ранних стадиях. 

К тому же документация Rust — одна из самых полных и доступных в мире открытого ПО, с подробными гайдлайнами, примерами и руководствами, постоянно обновляемыми сообществом и компанией.

Где Rust уже реально работает

В таблице представлен топ ЯП по популярности на август 2025 года:

Рейтинги основаны на количестве квалифицированных инженеров по всему миру, курсах и сторонних поставщиках. Источник.
Рейтинги основаны на количестве квалифицированных инженеров по всему миру, курсах и сторонних поставщиках. Источник.

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

В сегменте CLI и утилит Rust также занимает лидирующие позиции. Например, ripgrep — это быстрый и эффективный инструмент для поиска текста в файловой системе, который уже стал популярным среди системных администраторов и разработчиков. 

За счет компактности кода, точного контроля памяти и гарантий безопасности Rust используется для разработки приложений с ограниченными ресурсами — например, веб-приложений с поддержкой WASM. Там он помогает создавать клиентские модули, интегрируемые в браузеры, а также встраиваемое ПО для IoT и других систем с низким энергопотреблением.

Крупные международные IT-компании использующие Rust: 

  • Amazon применяет Rust для разработки облачных сервисов, в частности, для AWS Lambda и Firecracker (миниконтейнеров для серверлесс-вычислений), где важна безопасность и скорость;

  • Microsoft активно переписывает критичные компоненты Windows (например, DWriteCore, GDI) из C/C++ на Rust с целью снижения уязвимостей. Также они переписывают криптографическую библиотеку SymCrypt на Rust с формальной верификацией. Есть проекты, связанные с WebAssembly: Rust-библиотека Wassette (на Rust, Wasm-runtime) и Hyperlight Wasm (для изолированного выполнения wasm-компонентов);

  • Dropbox переписал свою синхронизационную систему (Nucleus, Magic Pocket) на Rust, выбрав его за контроль памяти, безопасность, производительность и параллелизм;

  • Discord переписал некоторые бэкенд-компоненты с Go на Rust, получив 10-кратное снижение задержек и снижение использования CPU; 

  • Solana и Polkadot — ведущие блокчейн-платформы, полностью или частично написанные на Rust;

  • Mozilla разработала движок Quantum, на котором работает браузер Mozilla Firefox.

Что сдерживает массовое принятие

Первое — это высокий порог входа, связанный с моделью владения памятью (ownership) и системой заимствований (borrow checker). Эти концепции требуют принципиально иного понимания управления ресурсами, нежели классические языки.

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

Дерево Rust. Источник.
Дерево Rust. Источник.

Другие сдерживающие факторы — «эко-пробелы» и отсутствие зрелых и полноценных решений в ряде важных ниш. Например, в сфере разработки графических интерфейсов (GUI) пока нет полноценных фреймворков, способных конкурировать с экосистемами вроде Electron, Qt или Flutter. Это сужает возможности применения Rust для создания десктопных и мобильных приложений. Аналогичная ситуация с Data Science и ML, где Python с его богатыми библиотеками по-прежнему остается незаменимым инструментом.

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

Что должно случиться, чтобы Rust выстрелил

Чем вам привлекателен Python? Простым синтаксисом? Что тогда привлекает людей учить С# (помимо зарплат и работы в нишевой отрасли)? Скорее всего, фича в интеграции с экосистемой Microsoft и Visual Studio. А что могло бы стать мощным катализатором роста Rust?

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

Наличие готовых CI/CD-шаблонов, поддержка интеграций с облачными платформами, а также обширные best-practices и рекомендации по архитектуре и тестированию помогут командам быстро и надежно строить проекты на Rust. Это создаст комфортную среду разработки и эксплуатации, избавит от множества технических и организационных сложностей.

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

В этой же плоскости мы в Selectel развиваем проект OpenFix, который предлагает конкретные задачи по переписыванию критичных компонентов Linux-экосистемы с C на Rust.

Хотите сделать свой вклад в защиту и развитие Linux-сообщества и получить за это награду? В рамках OpenFix вы можете взяться за задачу по рефакторингу кода — переписать утилиту или библиотеку с C на Rust, сохраняя при этом поведение оригинала. После публикации ваше ПО будет распространяться по Пермиссивной лицензии. Значит, мейнтейнером — останетесь вы.

Кроме этого, в OpenFix есть задачи по пакетизации и поиску багов.

  • Выберите программу из нашего списка и напишите для нее deb-пакет.

  • Обычно, просят найти баг в ПО. У нас же — ты можешь принести баг, который тебе надоел в опен сорсе или в любом открытом баг-трекере, а мы оценим и заплатим за его решение.

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

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

А что вы думаете о Rust? Делитесь своим мнением и опытом работы с ним в комментариях!

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


  1. JBFW
    10.09.2025 08:40

    Еще одна вещь, которая, как мне кажется, препятствует "широкому принятию Rust" - это вайб "вы все больные и не лечитесь, а у нас Rust!" - который проскакивает буквально при любом упоминании о том, что что-то где-то переписали на Rust (даже название ripgrep).

    умрите, жалкие, недостойные недоязыки кривопрограммирования...
    умрите, жалкие, недостойные недоязыки кривопрограммирования...

    Ну и, кто-то конечно захочет присоединиться к элите, а кто-то наоборот...


    1. jaha33
      10.09.2025 08:40

      Ну или как с картинкой про писуары и линукс.

      Еще по Rust на удивление очень мало литературы, как переведенной на ру так и на английском.

      Даже если взять одногодку Раста - Go, то по Go разительно больше литературы и полезной информации.