AIREITER

Mojo стал open source: лицензия, ограничения и реальная совместимость с Python

Последнее обновление: 2026-08-19 00:54:11

У Mojo наконец-то открыт исходный код компилятора — но считать язык полностью независимым от Modular пока рано. С 18 августа 2026 года компилятор, инструменты и всё необходимое для сборки языка доступны под Apache 2.0 с исключениями LLVM. При этом внешние pull request'ы в компилятор не принимаются до заявленного Modular конца 2026 года, а GPU-стек для сервинга по-прежнему зависит от отдельно лицензируемых готовых компонентов. Разбираемся, где именно проходит эта граница и для каких задач на Mojo уже можно уверенно опираться сегодня.

Репозиторий modular/modular на GitHub, где размещены открытые исходники компилятора и стандартной библиотеки Mojo

Mojo открывали поэтапно — процесс занял больше двух лет

Mojo не стал open source в один день. Компания Modular, основанная Крисом Латтнером — создателем LLVM и Swift, — публиковала исходники постепенно: сначала стандартную библиотеку и ядра, а компилятор открыла последним.

ДатаЧто стало открытымВнешние PR
Март 2024Стандартная библиотека, Apache 2.0 с исключениями LLVMПринимаются
2024–2025GPU/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 делают два важных послабления:

  1. Объектный код внутри бинарников. Если при компиляции вашего кода части Mojo встраиваются в итоговый артефакт, требования разделов 4(a), 4(b) и 4(d) не применяются. Иными словами, к каждому бинарнику, собранному компилятором Mojo, не нужно прикладывать текст Apache License.
  2. Совместимость с 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-ядер и моделей.

Главная страница mojolang.org с информацией о стабильном Mojo 1.0.0 и анонсом открытого исходного кода

Вклад в 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 на 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.