Python давно стал почти стандартным инструментом для машинного обучения, анализа данных и научных задач. Однако в вычислительно сложных проектах его производительность быстро становится ощутимым ограничением. Поэтому под привычными NumPy, PyTorch и другими инструментами значительная часть вычислений выполняется компонентами на C, C++ или CUDA. Особенно заметно это становится, когда готовых библиотечных функций недостаточно и высокопроизводительные операции приходится писать самостоятельно.

Несколько лет назад за решение этой проблемы взялась компания Modular, представившая Mojo — новый язык, внешне очень похожий на Python, но построенный иначе. Первую публичную версию показали в 2023 году, после чего проект довольно быстро менялся, а некоторые его конструкции успели исчезнуть или несколько раз поменять форму. Теперь этот этап формально завершен: 11 августа 2026 года вышел Mojo 1.0. Первая стабильная версия стала хорошим поводом разобраться, откуда вообще взялся этот необычный проект и зачем понадобился еще один инструмент для высокопроизводительных вычислений.

Откуда вообще взялся Mojo

Modular появилась в начале 2022 года, ее основателями стали Крис Латтнер и Тим Дэвис. Первый хорошо известен как создатель LLVM и Swift, а также один из ключевых авторов Clang и MLIR. Дэвис много лет развивал инфраструктуру машинного обучения в Google, в том числе работал с TensorFlow, XLA и MLIR. В Modular они разрабатывали собственную вычислительную платформу для искусственного интеллекта. Партнеры быстро столкнулись с привычной для этой области проблемой: одна ИИ-система часто зависит от нескольких разнородных технологий, каждая из которых отвечает за свой уровень вычислений.

Такую сложную проблему нельзя было решить созданием очередной библиотеки. Команде требовался инструмент, позволяющий описывать и высокоуровневую логику программ, и низкоуровневые операции без переключения между разными средами разработки. Результатом стал Mojo, ЯП представили вместе с вычислительной платформой Modular. Поначалу опробовать новинку можно было только через облачный Mojo Playground, поскольку локального SDK еще не существовало. Интерес оказался немаленьким: к началу сентября в Playground зарегистрировались более 120 тысяч человек, после чего Modular выпустила инструментарий для локальной установки на Linux.

Почему в качестве отправной точки разработчики выбрали именно Python? Дело в том, что язык лидирует в области машинного обучения и анализа данных, а создание совершенно нового синтаксиса означало бы дополнительный барьер для потенциальной аудитории. Поэтому авторы Mojo сделали его синтаксически близким к Python. Однако за знакомой оболочкой скрывается самостоятельный компилируемый язык со своей моделью памяти, системой типов и правилами выполнения программ.

Сначала в Modular планировали сделать Mojo надмножеством Python — предполагали, что язык сможет исполнять чистый Python-код, параллельно открывая возможности системного программирования. Пока до этого не дошло, и Mojo развивается как независимый язык, а интеграцию с Python разработчики обеспечили за счет импорта существующих пакетов. Поэтому популярное ранее определение «Python++» отлично отражает идею проекта, но не его архитектуру на данный момент.

Постепенно менялось и позиционирование проекта. В 2023 году авторы представляли Mojo прежде всего как специализированный инструмент для задач искусственного интеллекта и высокопроизводительных расчетов, глубоко интегрированный с экосистемой Modular. Теперь же компания продвигает Mojo как системный язык общего назначения, на котором потенциально можно писать не только компоненты ИИ-систем, но и другое производительное ПО. При этом первоначальная специализация никуда не исчезла: компиляторная инфраструктура, работа с памятью, SIMD и разными типами процессоров по-прежнему остаются ключевыми особенностями языка.

Каталог готовых ИИ‑моделей

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

Подробнее →

Зачем нужен новый язык и что скрывается за синтаксисом Python

Одна из основных проблем, на которую нацелился Mojo, иногда называется «двухъязычной» моделью разработки. На Python удобно собирать алгоритмы, экспериментировать и описывать общую логику, но критически важные для производительности участки кода разработчики часто вынуждены переписывать на других языках. Пока нужные функции есть в библиотеках вроде NumPy или PyTorch, это незаметно. Сложности начинаются при создании собственного вычислительного ядра, нестандартной оптимизации или поддержке нового оборудования. В этих случаях приходится спускаться на уровень системного программирования, где действуют совершенно другие правила работы с типами данных, памятью и аппаратными ресурсами.

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

На простом примере различия могут быть почти незаметны. Функции объявляются через def, блоки определяются отступами, а if, for и while выглядят привычно. Переменные в современном Mojo явно создаются через var, при необходимости для них можно указывать типы, хотя значительную часть информации система способна вывести самостоятельно. В результате исходник не превращается в длинную последовательность деклараций, характерную для некоторых системных языков. Однако по мере «приближения к железу» отличия от Python становятся все заметнее.

Особенно заметны отличия при работе с памятью. В Mojo каждое значение принадлежит одной переменной, но другие участки программы могут обращаться к нему по ссылке без создания дубликатов. Похожий подход применяется в Rust, хотя конкретные правила в Mojo отличаются. Компилятор следит за тем, чтобы ссылки оставались действительными, и обнаруживает ситуации, способные привести к обращению к уже недоступным данным. Например, если изменение контейнера сделало ранее полученную ссылку на его содержимое недействительной, Mojo может сообщить об ошибке еще при компиляции. В Python подобные детали обычно скрыты от программиста. Тем не менее, при работе с памятью напрямую они важны и для производительности, и для безопасности программы.

Еще одно важное отличие от Python — способ выполнения программы. Код Mojo можно заранее скомпилировать в самостоятельный исполняемый файл, которому для запуска не нужен интерпретатор Python. При компиляции уже известны типы данных и другие параметры программы, поэтому компилятор может заранее подобрать и оптимизировать код под конкретную задачу. Mojo также поддерживает метапрограммирование: часть вычислений и проверок можно выполнить еще на этапе компиляции, а на их основе создать специализированный вариант функции. В результате разработчик получает больше возможностей управлять тем, какой машинный код в итоге будет выполняться, что особенно важно для высокопроизводительных вычислений.

Большую роль в Mojo играет MLIR — компиляторная инфраструктура, одним из создателей которой был Крис Латтнер. Если сильно упростить, обычному компилятору нужно превратить написанную человеком программу в машинный код, понятный процессору. MLIR позволяет делать это в несколько этапов: сначала сохранить информацию о высокоуровневых операциях программы, а затем постепенно преобразовать их в команды, рассчитанные на конкретное оборудование. Такой подход особенно полезен для Mojo, который должен работать не только на центральных процессорах (CPU), но и на графических ускорителях (GPU) и специализированных AI-чипах. Поэтому MLIR был заложен в архитектуру языка с самого начала и во многом определяет то, как Mojo может сочетать сравнительно высокоуровневый синтаксис с низкоуровневой оптимизацией.

Decimo v0.10.0 — интерактивный калькулятор на Mojo для высокоточных вычислений. Источник
Decimo v0.10.0 — интерактивный калькулятор на Mojo для высокоточных вычислений. Источник.

Благодаря такой архитектуре разработчики Mojo обещают производительность на уровне C и C++. В ранних демонстрациях Modular заявляла особенно впечатляющие результаты: в отдельных задачах оптимизированный код Mojo работал в десятки тысяч раз быстрее аналогичного варианта на Python.

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

Смысл языка в другом: он предоставляет инструменты для постепенной оптимизации узких мест программы и достижения скорости системного C++ без необходимости переписывать проект на другой язык.

Что изменилось в Mojo 1.0

Финальная Mojo 1.0 вышла 11 августа 2026 года вместе с Modular 26.5. Предыдущие ветки — 1.0.0b1 от 7 мая и 1.0.0b2 от 18 июня — позволили сообществу протестировать изменения до официального запуска. Главное новшество здесь скорее организационное, чем техническое: Modular считает архитектуру языка достаточно зрелой и намерена сохранять совместимость в рамках ветки 1.x. Это не означает, что язык теперь вообще не будет меняться: при необходимости компания допускает изменения, из-за которых старый код придется исправлять. Однако после выхода 1.0 такие случаи должны происходить значительно реже.

К выпуску 1.0 разработчики постарались сделать синтаксис более последовательным, избавившись от дублирующих конструкций. Переменные теперь объявляются через var, для указателей оставлен единый тип Pointer, а работа с замыканиями приведена к общим правилам. Одновременно в языке появились лямбда-функции с привычным для Python синтаксисом. В целом Modular старается использовать знакомые по Python конструкции там, где они подходят, а собственные добавляет в тех случаях, когда нужны возможности системного языка.

Большое внимание авторы уделили развитию экосистемы вокруг языка. Разработчики улучшили LSP-сервер, отвечающий за подсказки, навигацию по исходникам и диагностику в редакторах вроде VS Code. Компилятор стал подробнее сообщать о потенциальных ошибках при работе с памятью и ссылками, что особенно важно после закрепления модели владения. Подобные изменения не так эффектно смотрятся в пресс-релизах, как очередной впечатляющий бенчмарк, но именно от них во многом зависит удобство повседневной разработки. К первой стабильной версии Modular явно старалась довести до приемлемого состояния не только синтаксис, но и окружающий его инструментарий.

Источник

За время открытого тестирования значительно выросла и стандартная библиотека языка. После публикации ее исходного кода почти 200 участников сообщества внесли более 1 100 изменений, затронувших свыше 200 000 строк. Еще более тысячи человек сообщали об ошибках и предлагали улучшения. Для трехлетнего проекта это довольно активное сообщество, хотя до масштабов Python, C++ или Rust пока далеко.

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

Релиз версии 1.0 не останавливает развитие Mojo. В планах разработчиков остаются асинхронное программирование, сопоставление с образцом, объединения типов и другие возможности. Пока компания открыла не весь проект: стандартная библиотека доступна под лицензией Apache 2.0, но исходный код компилятора и части внутренних инструментов Modular еще не опубликовала. Авторы планируют выложить их в открытый доступ до конца 2026 года. Таким образом, версия 1.0 фиксирует базис языка — его ключевые механизмы и синтаксис сформировались и больше не будут подвергаться частым ломающим изменениям.

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


  1. Machcnc
    23.08.2026 13:09

    Инсталлятора под Windows нет.... только WSL. С одной стороны понятно, почему так сделали... Но выглядит как-то не айс в итоге.


    1. rsashka
      23.08.2026 13:09

      Выглядит идеально! Под виндой запускается и работает, а за совместимость WSL с масдаем отвечает сам MIcrosoft.


      1. DenisArd
        23.08.2026 13:09

        Не разделяю восторгов. Полбеды если бы только для работы инструментов разработки нужен был бы костыль в виде скачивания и установки дистрибутива другой ОС под виртуалкой, но невозможность собрать нативное приложение под наиболее массовую десктопную платформу ставит крест на использовании языка в многих проектах - заставлять обычного пользователя качать себе какую-нибудь убунту под WSL - ну, такое. Это ограничивает нишу языка в основном разработкой серверных приложений.


        1. rsashka
          23.08.2026 13:09

          Ну как бы само использование термина “язык программирования” уже предполагает, что человек не обычный пользователь. Ладно бы это была бы игруха, тут да, я с вами соглашусь, заставлять пользователя ставить еще и Linux, это немного перебор.

          Но для средств разработки отличное решение. Ну а если программист не может настроить себе WSL то может быть ему это не тук уж и нужно? :-)

          И использование WSL никак не отменяет сборку нативных приложений. Для этого давно придумана кросс компиляция.


          1. DenisArd
            23.08.2026 13:09

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


            1. rsashka
              23.08.2026 13:09

              Я отвечал про решение с WSL, а самим Mojo не пользуюсь и не собираюсь, поэтому про него ничего сказать не могу. Как по мне, то синтаксис моча это вообще полный шлак.


  1. Chemist_modeler
    23.08.2026 13:09

    Не забываем, что профессия программиста уже становится нишевой. Быстро-быстро. Да-да, вайб делает ...-код, но (1) уже не так, как даже полгода назад, и (2) многим уже хватает этого для шчастия.

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

    А если нужен быстрый вход и есть (вряд ли устранимые) проблемы с квалификацией разработчиков - то двигаться надо, имхо, в сторону доступности на массовых платформах. По той простой причине, что супер-профессиональный физик, химик или биолог не обязан быть высококвалифицированным айтишником и не обязан уметь то, что оным кажется базовым навыком, изучаемым на первом курсе. Ибо на этом первом курсе челрвек попросту не учился. Реакции фенолов с фторуглеродами или патофизиология крови ему могут быть ближе и понятнее, чем n += 1.

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


  1. Octagon77
    23.08.2026 13:09

    Посмотрим новость

    Одна из основных проблем, на которую нацелился Mojo, иногда называется «двухъязычной» моделью разработки.

    интеграцию с Python разработчики обеспечили за счет импорта существующих пакетов

    Julia с человеческим питоническим лицом?

    Смысл языка в другом: он предоставляет инструменты для постепенной оптимизации узких мест программы и достижения скорости системного C++ без необходимости переписывать проект на другой язык.

    Cython take two?

    В планах разработчиков остаются асинхронное программирование, сопоставление с образцом, объединения типов и другие возможности. 

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

    Теперь успех языка зависит от скорости формирования зрелой экосистемы пакетов.

    С какой стати и в разрез со всем сообщаемым в статье? Надо будет ещё, конечно и на всякий случай, поискать где именно дерьмо, но судя по статье и первому впечатлению - успех есть дело решённое сразу, как это было, например, с uv. А судьба - не синоним успеха, за Mojo стоит AI компания, значит нужно ещё пережить хлопок AI пузыря.

    Посмотрим реакцию

    Инсталлятора под Windows нет....

    Сколько ни лазил по официальному сайту с документацией - ни единого упоминания кросскомпиляции, 

    То есть у разработчиков с самого начала знатные communication problems.

    Finally

    Спасибо за статью, хотя и не часто встречаешь текст, который одновременно выглядит и как перевод и как нейрослоп. Но Mojo вывез, что тоже ему в плюс.


  1. Machcnc
    23.08.2026 13:09

    Идея сама по себе просто блеск, но кроме идеи нужна и реализация, а вот тут проблема... И в качестве идеи - а почему бы не появиться просто компилятору того же питоновского кода, без его интерпретации в бинарный как есть, а сразу в исполняемый оптимизированный ... есть о чем задуматься. Мы тут получили задачку, перевести в С++ код системы управления промышленным роботом, который для ускорения разработки был написан на Python. Не тривиально. Потренировались на "кошечках", на том же ядре CNC была программа для управления электроэрозионным станком - так вот, даже с несколькими агентами в Cursor это заняло около 2-х недель ежедневного исправления и тестирования (тут понятно, аппаратно-программный комплекс, постоянное тестирование на железе, что тогда говорить о системе управления манипулятором - там полгода точно, там куча решателей кинематики, протоколы, встроенный ПЛК... жесть). И вот уже витает мысль о компиляторе питоновского кода без прослоек ..... Mojo бы возможно помог бы, но.... очень узкая применяемость. Но, как идея, супер!


  1. WLMike
    23.08.2026 13:09

    Ждет его судьба Джулии - нишевый язык, который может и неплохой, но никому не нужный. Особенно в эру агентов, где особенно жестко встретил проблема, если существующего кода нет, то никто на нем писать не будет