Профиль: Аноним (вход | регистрация) неRU opennet.me  
OpenNET

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

Релиз языка программирования Mojo 1.2 и публикация кода движка MAX Framework

25.10.2026 09:34 (MSK)

Представлен релиз языка программирования Mojo 1.2. Язык Mojo развивается под руководством Криса Латнера (Chris Lattner), основателя и главного архитектора проекта LLVM и создателя языка программирования Swift. Код компилятора и сопутствующего инструментария, необходимого для сборки проектов на языке Mojo, распространяется под лицензией Apache 2.0 c исключениями от проекта LLVM, допускающими смешивание с кодом под лицензией GPLv2.

Синтаксис 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.2:

  • Добавлена поддержка сопоставления с образцом, используя конструкции match / case. В качестве образца могут использоваться литералы ("case 100:"), логические выражения с литералами ("case 100 | 200:"), кортежи ("case (10, 10, 10):"), структуры, ограничивающие условия ("case limit if limit > 10:") и шаблоны ("case _:"). Дополнительно реализовано выражение "comptime match" для выполнения проверки на этапе компиляции.
    
       def classify_point(p: Tuple[Int, Int]) -> String:
           match p:
               case 0, 0:
                   return "origin"
               case x, 0 if x < 0:
                   return String("negative x-axis:", x)
               case x, 0:
                   return String("x-axis:", x)
               case 0, y:
                   return String("y-axis:", y)
               case x, y:
                   return String("point:", x, ",", y)
    
  • Добавлена поддержка деструктуризации списков, которая может использоваться как отдельно, так и внутри проверок в match:
    
       var [first, *middle, last] = values
       match values:
           case []:
               print("empty")
           case [1, *middle, last]:
               print(len(middle), last)
           case [first, *rest]:
               print(first, len(rest))
    
  • В выражения if, elif и while добавлена возможность использования конструкций "if case" и "while case" для проверки и извлечения данных.
    
        if case .Some(item) = value:
            return String("some:", item)
        else:
            return "none"
    
        while case .Some(item) = get_next():
            process(item)
    
  • В библиотеку std.math добавлено более 20 математических функций (atan(), tan(), cbrt(), erfc(), lgamma(), log10(), remainder(), hypot() и т.п.), доступных в вариантах, способных работать на CPU и GPU, и не использующих системную библиотеку libm.
  • Добавлен тип TargetAccelerator для метаданных аппаратных ускорителей, сочетающий возможности типов GPUInfo и CompilationTarget.
  • Добавлен синтаксис "not <Trait>" для отключения реализации определённых типажей (например, "struct Handle(not Movable, Writable):"), который рекомендуется использовать вместо "<Trait> where False".
  • Появилась возможность определения собственных сообщений об ошибках в проверочных выражениях where - "where <condition> else "<message>".
    
       def foo[sc: Int]() where sc > 1 else "scaling factor must be greater than"
    
  • Компилятор mojo переведён на выделение памяти при помощи библиотеки jemalloc на платформе Linux. Компиляция крупных пакетов и больших ядер для GPU ускорилась на 10-13%. Например, пакет nn теперь компилируется за 61 секунду вместо 98.
  • Проведена оптимизация производительности. Операции выравнивания строк ускорены до 86 раз, а повторения больших строк через оператор "*" примерно в 2 раза. Значительно повышена производительность методов String.startswith() и String.endswith(). В среднем на 20% ускорен разбор чисел с плавающей запятой при помощи функции atof().
  • Структура StringSpan теперь предоставляет доступ к байтам строки только в режиме чтения (immutable). Поддержка структур MutStringSpan, MutStringSlice и параметра mut, позволявших напрямую изменять данные в строковом буфере, прекращена.
  • Пустой кортеж "()" теперь всегда означает значение кортежа, а не тип. Для указания типа пустого кортежа следует указывать "Tuple[]".
  • Ключевые слова async и await переименованы в "__async" и "__await для индикации их экспериментального статуса (старые варианты сохранены, но будут выдавать предупреждение).

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

Новая версия примечательна публикацией исходного кода MAX Framework, включая бэкенды, runtime и графовый компилятор. Код опубликован под собственной лицензией "MAX License", которая допускает использование, модификацию, расширение и создание производных коммерческих продуктов, но вносит ограничения для защиты от фрагментации платформы, не допускающие создание специфичных для отдельных аппаратных платформ версий, нарушающих совместимость.

Из функциональных изменений в MAX Framework 26.7 отмечается добавление поддержки AI-моделей Muse Glimmer и MiMo-V2.6-Flash, возможность передачи видео в модели Qwen3.5 и Qwen3-VL, новый API Decisions для оценки вероятностей при классификации и принятии решений, значительное ускорение выполнения моделей на GPU NVIDIA B200 и AMD MI355. Реализован режим "eager" для ускорения тестирования и отладки кода, позволяющий выполнять операции мгновенно по мере их вызова, без предварительной полной обработки графовым компилятором.

  1. Главная ссылка к новости (https://www.modular.com/blog/2...)
  2. OpenNews: Релиз языка программирования Mojo 1.1
  3. OpenNews: Открыт код компилятора для языка программирования Mojo
  4. OpenNews: Релиз языка программирования Mojo 1.0
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/66544-mojo
Ключевые слова: mojo
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (4) RSS
  • 1, няш (?), 10:44, 25/10/2026 Скрыто ботом-модератором     [к модератору]
  • –1 +/–
     
  • 2, анм (?), 11:06, 25/10/2026 [ответить]  
  • +/–
    Если в мане по mojo нет резона для раздела "как заставить компилироваться рабочие приложения а то наш боров тупой как пробка" - уже на голову выше чем руст
     
  • 3, Alexey Torgashin (?), 11:51, 25/10/2026 [ответить]  
  • +/–
    Крис Латнер этот. Конечно такая глыба человечеще. Такой язык Свифт. И ещё язык Моджо.

    Круто конечно. И Llvm.

    В последние годы человек оплешивился. Плеш растет на голове. Не всем волосы носить.

    Бывает...

     
  • 4, Аноним (4), 12:05, 25/10/2026 [ответить]  
  • +/–
    >Синтаксис Mojo основан на языке Python, а система типов близка к C/C++.

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

     

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



    XSQUARE
    Inferno Solutions
    Hosting by Hoster.ru
    Хоcтинг: