The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Бета-выпуск языка программирования Mojo 1.0

10.05.2026 10:21 (MSK)

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

В состав платформы включены компоненты, необходимые для разработки приложений на языке Mojo, включая компилятор, runtime, интерактивную REPL-оболочку для сборки и запуска программ, отладчик, дополнение к редактору кода Visual Studio Code (VS Code) с поддержкой автодополнения ввода, форматирования кода и подсветки синтаксиса, модуль для интеграции с Jupyter для сборки и запуска Mojo notebook. Исходный код стандартной библиотеки Mojo открыты под лицензией Apache 2.0 c исключениями от проекта LLVM, допускающими смешивание с кодом под лицензией GPLv2. Исходный код компилятора планируют открыть после завершения стабилизации внутренней архитектуры.

Язык Mojo развивается под руководством Криса Латнера (Chris Lattner), основателя и главного архитектора проекта LLVM и создателя языка программирования Swift. Синтаксис Mojo основан на языке Python, а система типов близка к C/C++. Проект преподносится как язык общего назначения, расширяющий возможности языка Python средствами системного программирования, подходящий для широкого круга задач и сочетающий простоту применения для исследовательских разработок и быстрого создания прототипов с пригодностью для формирования высокопроизводительных конечных продуктов.

Простота достигается благодаря использованию привычного синтаксиса языка Python, а разработке конечных продуктов способствуют возможность компиляции в машинный код, механизмы безопасной работы с памятью и задействование средств для аппаратного ускорения вычислений. Для достижения высокой производительности поддерживается распараллеливание вычислений с задействованием всех имеющихся в системе аппаратных ресурсов гетерогенных систем, таких как GPU, специализированные ускорители для машинного обучения и векторные процессорные инструкции (SIMD). При интенсивных вычислениях распараллеливание и задействование всех вычислительных ресурсов даёт возможность добиться производительности, превосходящей приложения на C/C++.

Язык поддерживает статическую типизацию и средства для безопасной низкоуровневой работы с памятью, напоминающие возможности языка Rust, такие как отслеживание времени жизни ссылок и проверка заимствования переменных (borrow checker). При этом в языке доступны и возможности для низкоуровневой работы, например, возможно прямое обращение к памяти в режиме unsafe с использованием типа Pointer, вызов отдельных SIMD-инструкций или доступ к аппаратным расширениям, таким как TensorCores и AMX.

Mojo может использоваться как в режиме интерпретации с использованием JIT, так и для компиляции в исполняемые файлы (AOT, ahead-of-time). В компилятор встроены современные технологии автоматической оптимизации, кэширования и распределённой компиляции. Исходный код на языке Mojo преобразуются в низкоуровневый промежуточный код MLIR (Multi-Level Intermediate Representation), развиваемый проектом LLVM. Компилятор позволяет применять для генерации машинного кода различные бэкенды, поддерживающие MLIR.

Среди изменений в Mojo 1.0.0b1:

  • Ключевое слово "fn" объявлено устаревшим - для объявления функций следует использовать ключевое слово "def" (возможности "fn" и "def" объединены, и в "def" реализована семантика "fn" без генерации исключений).
  • Унифицирована реализация замыканий (closure). Не учитывающие контекст замыкания (stateless closure) теперь автоматически преобразуются в функции верхнего уровня и могут использоваться как callback-вызовы в FFI (Foreign Function Interface). Добавлена поддержка захвата по ссылке (ref capture). При объявлении функций добавлен признак "thin" для объявления простого типа указателя на функцию без захвата состояния.
  • Указатели с типом UnsafePointer теперь не могут принимать значение null по умолчанию, а для работы с null-указателями необходимо использовать "Optional[UnsafePointer[...]]", что позволяет исключить накладные расходы при работе с null-указателями и сохранить возможность безопасного применения в FFI.
  • По умолчанию в коде для CPU в коллекциях включена проверка допустимых границ (на GPU проверка отключена для производительности, но может быть включена при сборке с "mojo build -D ASSERT=all"). Прекращена поддержка указания отрицательных значений в индексах (запрещено "x[-1]", но можно указывать "x[len(x)-1]").
  • Из стандартной библиотек удалён тип NDBuffer, вместо которого следует использовать TileTensor.
  • Расширена поддержка работы с GPU через графический API Metal на системах Apple (например, появилась поддержка print() и матричных инструкций M5). Добавлена поддержка ускорителей AMD MI250X и NVIDIA B300.
  • Идентификаторы примитивов GPU (индексы потоков и блоков) переведены на возвращение типа Int вместо UInt.
  • Контекст CPU ('DeviceContext(api="cpu")') стал потокозависимым (stream-ordered). Для упорядоченного выполнения задач добавлены функции enqueue_cpu_function() и enqueue_cpu_range().
  • В типах String и StringSlice добавлена поддержка графемных кластеров (Unicode UAX #29), позволяющая корректно вычислять длину и обрезать строки с emoji и комбинированных символов. Добавлены методы graphemes() и count_graphemes(), а также синтаксис слайсов "[grapheme=...]".
  • Реализовано уточнение типов (Type Refinement) на этапе компиляции для автоматического сужения типов внутри выражений "where", "if" и "assert" (позволяет обойтись без явного указания trait_downcast).
  • Предложен унифицированный API рефлексии, в котором предложена новая функция reflect[T](), возвращающая Reflected[T] и заменяющая семейство функций struct_field_* и старые методы get_type_name().

Одновременно сформирован выпуск движка MAX Framework 26.3, предлагающего платформу для разработок в области машинного обучения. MAX Framework дополняет инструментарий Mojo средствами для разработки и отладки приложений, использующих модели машинного обучения в различных форматах (TensorFlow, PyTorch, ONNX и т.п.). В новой версии MAX Framework добавлена возможность генерации видео, расширена поддержка работ с использованием нескольких GPU, значительно повышена производительность интерпретатора (некоторые операции стали выполняться быстрее в 10-20 раз).

  1. Главная ссылка к новости (https://www.modular.com/blog/m...)
  2. OpenNews: Сотрудник Google развивает язык программирования Carbon, нацеленный на замену C++
  3. OpenNews: Программно-аппаратная платформа CHERIoT 1.0 для повышения безопасности кода на языке Си
  4. OpenNews: Выпуск языка программирования Hare 0.26
  5. OpenNews: Компания Apple опубликовала язык программирования Swift 6.3
  6. OpenNews: Выпуск языка программирования Nim 2.2.10
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/65415-mojo
Ключевые слова: mojo
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (42) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Soltek (?), 10:54, 10/05/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Еще один язык... вы это серьйозно?
     
     
  • 2.3, аааааааа (?), 11:00, 10/05/2026 [^] [^^] [^^^] [ответить]  
  • +4 +/
    ну исходно они позиционировались как 100% совместимый с Питоном, но более лучший, но потом выродились в то, что мы получили - еще один язык, да
     
     
  • 3.11, Аноним (11), 12:17, 10/05/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Питон специально вносит изменения в свою реализацию чтобы нельзя было сделать клон. Ну чтож питону же хуже. Все перейдут на mojo.
     
     
  • 4.23, Аноним (23), 13:37, 10/05/2026 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Никто не перейдет. Язык мертворожден, как и hare, zig, v, crystal и прочие игрульки одного человека.
     
     
  • 5.31, Витюшка (?), 14:58, 10/05/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    За zig стоят несколько человек. Я перестал его отслеживать, перешёл на Rust. Но как минимум bun был на нём написан. И это успешный коммерческий проект. То есть по сравнению с другими из списка - он ушёл гораздо дальше. Но...как говорят инерция/момент потеряны. С Rust переписывать никто не будет, да и незачем.
     
     
  • 6.49, Аноним (49), 17:09, 10/05/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Bun как раз недавно на раст переписали чисто посмотреть как оно получится. Сперва вообще ничего не работало, а потом взяло и завелось. Зиг мёртв.
     
     
  • 7.56, уп (?), 18:59, 10/05/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Какая наглая ложь. Впрочем, это типично для растомана.

    https://x.com/jarredsumner/status/2053381543419379975

     
  • 5.32, Аноним (11), 15:08, 10/05/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Ты забыл про Раст.
     
  • 3.29, Аноним (29), 13:50, 10/05/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > запрещено "x[-1]"

    это уже не 100% совместимый с Питоном

     
  • 3.34, Аноним (34), 15:17, 10/05/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    На самом деле это не так, язык не позиционировался как совместимый с Python.
     
  • 2.5, Аноним (29), 11:07, 10/05/2026 [^] [^^] [^^^] [ответить]  
  • +4 +/
    > При интенсивных вычислениях распараллеливание и задействование всех вычислительных ресурсов даёт возможность добиться производительности, превосходящей приложения на C/C++.

    Невозможно после таких предложений воспринимать автора всерьёз.

     
     
  • 3.12, жо (?), 12:18, 10/05/2026 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Серьезно? Криса Латнера который задизайнил язык Swift невозможно воспринимать в серьез? лол
     
     
  • 4.33, Аноним (11), 15:11, 10/05/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > Серьезно? Криса Латнера который задизайнил язык Swift невозможно воспринимать в серьез?
    > лол

    Swift дико тормозной и жрет много ресурсов.

     
  • 2.7, Аноним (7), 11:12, 10/05/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Если не нравится - создай свой.
     
     
  • 3.54, ОстинПауэерс (?), 18:33, 10/05/2026 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 2.19, nc (ok), 12:57, 10/05/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Почему никто не говорит "еще одна файловая система", "еще один браузер" или "еще один текстовый/графический/... редактор"? Чем языки программирования отличаются?
     
     
  • 3.22, Аноним (22), 13:25, 10/05/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > Почему никто не говорит "еще одна файловая система", "еще один браузер" или
    > "еще один текстовый/графический/... редактор"? Чем языки программирования отличаются?

    Это как с "я построил мост, мельницу, посадил сад ..." и "один раз овцу" 😀

     
  • 3.41, Аноним (41), 16:15, 10/05/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Почему не говорят? Говорят.
     

  • 1.2, Аноним (29), 10:57, 10/05/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    > Язык Mojo развивается под руководством ... основателя и главного архитектора проекта LLVM и создателя языка программирования Swift. Синтаксис Mojo основан на языке Python, а система типов близка к C/C++.

    Надо было добавить ещё скобки от шелла и номера строк от бейсика.

     
  • 1.4, Аноним (4), 11:06, 10/05/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    >> При интенсивных вычислениях распараллеливание и задействование всех вычислительных ресурсов даёт возможность добиться производительности, превосходящей приложения на C/C++

    Забыли еще добавить что приложение на C/C++ должно быть запущено на китайской пароварке... Для кого вообще это

     
     
  • 2.6, Аноним (29), 11:09, 10/05/2026 [^] [^^] [^^^] [ответить]  
  • +3 +/
    > приложение на C/C++ должно быть запущено на китайской пароварке

    Именно на пароварке, не выше... А то современные DE проигрывают в плавности прокрутки даже 8-битным Дендям.

     

  • 1.8, cyberslug (?), 12:03, 10/05/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    За 50 лет никто так и не смог даже приблизиться к Pascal. Никлаус, спи спокойно. Ты навсегда останешься легендой!
     
     
  • 2.26, Аноним (-), 13:42, 10/05/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Ada даже превзошла его...
     
  • 2.27, Аноним (27), 13:49, 10/05/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    За 10 лет до Паскаля, Алгол-60 уже поддерживал структурное программирование.
     
  • 2.39, Аноним (39), 15:33, 10/05/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Вирт, с тем же Обероном, напрочь проигнорировал реальность: сетевое и многопоточной программирование! как результат всё это осталось в прошлом, как музейный экспонат. На сегодняшний день можно сказать, что Go, это тот самый Паскаль который не проигнорировал реальность (если я не ошибаюсь автор Go, хорошо знаком с Виртом, и вдохновлялся именно его творением). Это не умоляет его вклад в ИТ, однако если бы Паскаль оставался в том виде в какое его видел Вирт (убрать всякие, объектные паскали и прочее), то Паскаль бы давно сгинул! Всё же Вирт это больше про академическую среду.
     
  • 2.55, Сладкая булочка (?), 18:53, 10/05/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > За 50 лет никто так и не смог даже приблизиться к Pascal.

    Что именно имеется ввиду?

     

  • 1.9, aname (ok), 12:09, 10/05/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Это всё хорошо, но зачем, а главное: зачем?
     
     
  • 2.13, Аноним (11), 12:18, 10/05/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Mojo всех переиграл на раз, два.
     
  • 2.28, Аноним (27), 13:50, 10/05/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Бизнес ведь
     

  • 1.10, Аноним (11), 12:16, 10/05/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Не зря говорят Mojo он может.
     
  • 1.16, Аноним (16), 12:35, 10/05/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    > запрещено "x[-1]"

    Это больше не Питон

     
  • 1.18, Аноним (18), 12:46, 10/05/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Поздно, уже есть Julia, да и Python никто не отменял.
     
  • 1.24, Аноним (24), 13:38, 10/05/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    "компилятор, компилятор", а на деле C# с синтаксисом питона.
     
     
  • 2.30, Аноним (27), 13:51, 10/05/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Но ведь ... именно об этом мы и мечтали, не так ли?
     

  • 1.35, Аноним (39), 15:18, 10/05/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Нееее, надо ждать когда выйдет проект от другого llvm чувака;) Как по мне, у его языка Hylo куда больше перспектив (идея во снова языка классная!). Ибо это фактически продолжение swift, а значит apple либо перенесет (или уже начала переносить) различные фишки к себе. Имхо, в конечном итоге из этого сделают свой rust.
     
  • 1.43, Аноним (41), 16:19, 10/05/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    На бета версии языка будут бета версии программ, а потом как с беты версии переписывать бета версию программы, это же не смешно.
     
  • 1.44, Аноним (44), 16:24, 10/05/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • –2 +/
    У Питона одна из самых спорных фич - отсутствие скобок, в которые включены блоки кода. И эти туда же. Ну можно же было как в С-подобных языках добавить фигурные скобки {}. Глупое решение.
     
     
  • 2.45, Аноним (29), 16:40, 10/05/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > добавить фигурные скобки {}

    В питоне они уже есть, читай справку.

     
  • 2.51, Гуманоид (?), 17:21, 10/05/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Они просто забыли спросить у экспертов опеннета, что и как им делать.
     

  • 1.50, Аноним (50), 17:10, 10/05/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Упоминание VS Code это сигнал а работе под контролем Microsoft. То есть провал.
     
  • 1.52, Гуманоид (?), 17:24, 10/05/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Свершилось. Питончик со статическими типами и компиляцией в бинарник. Обрастет софтом и в путь.
     
     
  • 2.53, Аноним (53), 17:52, 10/05/2026 [^] [^^] [^^^] [ответить]  
  • +/
    флаг в руки
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2026 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру