У Mojo наконец-то открыт исходный код компилятора — но считать язык полностью независимым от Modular пока рано. С 18 августа 2026 года компилятор, инструменты и всё необходимое для сборки языка доступны под Apache 2.0 с исключениями LLVM. При этом внешние pull request'ы в компилятор не принимаются до заявленного Modular конца 2026 года, а GPU-стек для сервинга по-прежнему зависит от отдельно лицензируемых готовых компонентов. Разбираемся, где именно проходит эта граница и для каких задач на Mojo уже можно уверенно опираться сегодня.
Mojo открывали поэтапно — процесс занял больше двух лет
Mojo не стал open source в один день. Компания Modular, основанная Крисом Латтнером — создателем LLVM и Swift, — публиковала исходники постепенно: сначала стандартную библиотеку и ядра, а компилятор открыла последним.
| Дата | Что стало открытым | Внешние PR |
|---|---|---|
| Март 2024 | Стандартная библиотека, Apache 2.0 с исключениями LLVM | Принимаются |
| 2024–2025 | GPU/CPU-ядра Mojo, 450 000+ строк кода по данным Modular на май 2025 года | Принимаются |
| 11 августа 2026 | Стабильный Mojo 1.0.0 — semver для языка и шестинедельный цикл релизов | - |
| 18 августа 2026 | Компилятор, инструменты и исходники сборки, анонсированные на ModCon | Заморожены до конца 2026 года |
Важно учитывать дату публикации материалов. Источники, вышедшие до 18 августа 2026 года, обычно называют компилятор закрытым. Например, в статье Mojo в Wikipedia в версии от 12 августа 2026 года, то есть за шесть дней до релиза, для компилятора всё ещё была указана проприетарная Modular Community License.
Что разрешает Apache 2.0 с исключениями LLVM
Файл LICENSE в репозитории использует ту же разрешительную модель, что и LLVM. Два исключения LLVM — не формальность: они напрямую влияют на условия распространения собранных программ.
Базовая Apache 2.0 даёт привычный для коммерческого использования набор прав: код можно копировать, изменять, сублицензировать и распространять в исходной или объектной форме. Лицензия также содержит явный патентный грант от каждого контрибьютора. Он прекращается только в случае, если вы сами подаёте иск, заявляя о нарушении ваших патентов этой работой. При распространении обычно необходимо приложить текст лицензии, отметить изменения и сохранить файл NOTICE — это требования раздела 4.
Исключения LLVM делают два важных послабления:
- Объектный код внутри бинарников. Если при компиляции вашего кода части Mojo встраиваются в итоговый артефакт, требования разделов 4(a), 4(b) и 4(d) не применяются. Иными словами, к каждому бинарнику, собранному компилятором Mojo, не нужно прикладывать текст Apache License.
- Совместимость с GPLv2. Если вы объединяете скомпилированный Mojo код с кодом под GPLv2, а суд признаёт патентные или indemnity-положения Apache несовместимыми с GPLv2, конфликтующие разделы могут не применяться к такой комбинированной работе.
При этом лицензия не предоставляет права на товарные знаки, включая названия Mojo и Modular, и не даёт гарантий либо защиты от ответственности. Кроме того, код репозитория — лишь часть картины: согласно README самого репозитория, использование и распространение MAX, Mojo и Modular отдельно регулируются Modular Community License.
Что действительно открыто, а что осталось за пределами репозитория
Ниже — состав репозитория modular/modular, который на 19 августа 2026 года насчитывал 53 617 коммитов, 26,9 тыс. звёзд и 2,9 тыс. форков, а также компоненты, не вошедшие в него.
| Компонент | Расположение | Статус |
|---|---|---|
| Компилятор Mojo | Каталог /KGEN | Открыт с 18 августа 2026 года; PR заморожены |
| Стандартная библиотека | /mojo/stdlib | Открыта с марта 2024 года; PR принимаются |
| GPU/CPU-ядра MAX | /max/kernels | Открыты; вклад приветствуется |
| Сервер инференса и пайплайны моделей | /max/python/max/serve, /max/pipelines | Открыты |
| Готовые платформенные сборки MAX | Распространяются вне репозитория | Modular Community License |
| Настройка ядер и моделей MAX | - | По-прежнему требует готового бинарника компилятора Mojo |
Последний пункт — не предположение сообщества, а прямое заявление Modular. В анонсе от 18 августа сказано, что готовый компилятор «остаётся необходимым» для настройки ядер или моделей MAX. Для AI-инженеров, работающих с GPU, именно здесь сегодня сходятся открытый код и лицензируемые компоненты — и именно это вызвало вопросы в день запуска. Пользователь u/benreynwar написал в ветке анонса на r/ProgrammingLanguages:
«Похоже, для компиляции под GPU всё ещё нужно много вещей, которые не были открыты». — u/benreynwar, r/ProgrammingLanguages
Для локальной CPU-сборки есть документированный путь: клонировать репозиторий, собрать через Bazel и запустить. Зависимость от готового компилятора возникает при настройке GPU-ядер и моделей.
Вклад в stdlib принимают, в компилятор — пока нет
Open source и открытое управление проектом — не одно и то же. У Mojo сейчас есть первое, но не второе. В посте-анонсе сказано без обиняков: «мы пока не готовы принимать вклад в компилятор и инструменты». Цель Modular — начать принимать такие изменения к концу 2026 года.
Со стандартной библиотекой ситуация иная. Внешние изменения туда принимают с 2024 года, а к выходу Mojo 1.0, как сообщала Modular, почти 200 контрибьюторов уже получили принятые pull request'ы: более 1 100 PR изменили свыше 200 000 строк. Но PR к компилятору и инструментам пока не принимаются.
Исходники можно собрать и проверить самостоятельно:
git clone https://github.com/modular/modular.git
cd modular
./bazelw run --config=build-mojo KGEN:mojo -- run hello.mojo
./bazelw test --config=build-mojo mojo/stdlib/test/...
Параметр --config=build-mojo собирает компилятор из локального checkout, а --config=prebuilt-mojo вместо этого скачивает nightly-бинарник, как указано в анонсе. Прежде чем делать форк, стоит помнить и ещё несколько вещей: ветка main соответствует nightly-сборкам, стабильные релизы выходят раз в шесть недель, а контроль мейнтейнеров остаётся за Modular, пока вклад в компилятор закрыт. Как сформулировал u/Fidodo в обсуждении на r/programming:
«Открытый исходный код не означает, что проектом управляет сообщество. Последнее слово в вопросе о том, что будет принято, всё равно за мейнтейнерами». — u/Fidodo, r/programming
Интеграция с Python: что уже работает, а что пока нет
Официальная главная страница демонстрирует рабочий сценарий: создать 40 значений Float64, передать их в NumPy, построить график через Matplotlib и сохранить plot.png — всё из Mojo. Сегодня реально существуют два пути интеграции: Mojo умеет импортировать Python-модули через рантайм CPython, а Python может вызывать функции Mojo через C-совместимые биндинги. Второй вариант особенно важен для AI-инженеров: горячее ядро пишется на Mojo, а обучение и сервинг остаются на Python.
А вот исходная идея Mojo как «надмножества» Python, с которой язык запускали в 2023 году, пока не соответствует действительности:
- Mojo не совместим с Python 3 на уровне исходного кода: Python-программа не запустится без изменений.
- В официальной дорожной карте теперь прямо сказано, что Mojo «может как стать, так и не стать полным надмножеством Python». На первом этапе намеренно не реализовывались нетипизированный Python-подобный код и паритет с Python-библиотеками.
- В Mojo нет системы классов Python: вместо неё используются структуры с traits и другая объектная модель.
- Классы, наследование и нетипизированные переменные относятся к третьей фазе roadmap, которая ещё не началась. Вторая фаза, включающая инструменты и упаковку, находится в работе.
- API стандартной библиотеки нестабильны, если только они явно не помечены как stable, даже после версии 1.0.
Те, кто уже пробовал переносить код, формулируют ещё жёстче. Из обсуждения состояния Mojo на r/MojoLang:
«До поддержки Python в качестве суперкласса ещё очень далеко». — u/newtestdrive, r/MojoLang
«Это определённо ещё не надмножество Python». — @eatonphil, X
Тот же u/newtestdrive отмечал, что перенос Python-скриптов «ухудшает читаемость, а иногда вообще невозможен». В собственном FAQ Modular предлагает три способа миграции: изучить документированные различия между Python и Mojo, использовать Mojo AI skills для перевода с помощью ассистента или постепенно добавлять Mojo-биндинги в существующий Python-код. На практике Mojo разумнее воспринимать как язык для ядер с Python-подобным синтаксисом, а не как замену Python.
Для каких задач в AI-стеке подходит Mojo
Независимые данные о производительности на GPU уже есть. Исследование Oak Ridge National Laboratory, представленное на воркшопе SC25 WACCPD и получившее там награду за лучшую статью, сравнивало четыре ядра — seven-point stencil, BabelStream, miniBUDE и Hartree-Fock — с CUDA и HIP на NVIDIA H100 и AMD MI300A. На задачах, упирающихся в память, Mojo в целом оказался конкурентоспособен; в вычислительно интенсивных сценариях с активным использованием атомарных операций и fast-math отставание оставалось заметным.
| Ваш сценарий | Вывод |
|---|---|
| Разработка переносимых GPU/CPU-ядер | Стоит попробовать: данные ORNL подтверждают паритет в memory-bound задачах; код с активными атомиками на AMD сначала нужно бенчмаркить |
| Промышленный сервинг моделей на MAX | Сначала изучите условия Modular Community License: зависимость от готового бинарника сохраняется |
| Замена Python в прикладном коде общего назначения | Нет: третья фаза не завершена, совместимости исходников нет, а управление пакетами ещё не начато |
| Изучение программирования ускорителей | Да: читаемый исходный код, локальная сборка, расширение VS Code с LSP и отладчиком |
Несколько платформенных нюансов для планирования: Mojo нативно работает на Linux и macOS, а в Windows — только через WSL. Согласно политике телеметрии SDK, собираются базовые сведения о системе, отчёты о сбоях и агрегированные данные о времени работы LSP; исходный код не передаётся.
FAQ
Mojo теперь полностью open source?
Да. С 18 августа 2026 года компилятор, инструменты, стандартная библиотека и исходники сборки находятся в GitHub-репозитории modular/modular под Apache 2.0 с исключениями LLVM. Готовые платформенные сборки MAX по-прежнему распространяются по отдельной Modular Community License.
Под какой лицензией распространяется Mojo?
Исходный код репозитория и вклад контрибьюторов распространяются под Apache License 2.0 с исключениями LLVM; использование и распространение платформы MAX отдельно регулируются Modular Community License.
Можно ли отправить PR в компилятор Mojo?
Пока нет. Стандартная библиотека, ядра MAX, примеры и документация принимают внешние PR; с 2024 года приняты изменения примерно от 200 контрибьюторов. PR к компилятору и инструментам заморожены до заявленного Modular конца 2026 года.
Mojo совместим с Python?
Частично. Mojo импортирует Python-модули через рантайм CPython и предоставляет C-совместимые биндинги для вызова из Python, но не совместим с Python 3 на уровне исходников, не имеет классов, а в его roadmap прямо указано, что он «может как стать, так и не стать» полным надмножеством Python.
На что смотреть до 2027 года
Есть три контрольные точки, от которых зависит, превратится ли этот релиз в по-настоящему управляемый сообществом проект: заявленный срок до конца 2026 года для начала приёма изменений в компилятор и инструменты, третья фаза roadmap с классами, наследованием и нетипизированными переменными — именно там могла бы появиться серьёзная совместимость с Python, — а также скорость, с которой API стандартной библиотеки будут получать статус stable в рамках post-1.0 политики semver.