Язык 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.1:
- Сокращено время компиляции за счёт более быстрой обработки t-строк и неявных преобразований. Повышена производительность генерируемого кода.
- В LSP-сервере (Language Server Protocol) реализована возможность исправления частых опечаток в коде на языке Mojo.
- Добавлен сокращённый синтаксис, позволяющий не указывать названия типов, которые можно автоматически определить исходя из контекста. Например, вместо «SIMD[DType.float64, 4]» теперь можно писать «SIMD[.float64, 4]».
- Расширен перечень API в стандартной библиотеке, имеющих статус стабильных (например, стабилизированы String, SIMD и List).
- Продолжен перевод API с устаревшей формы замыканий, передаваемых как параметры, обрабатываемые во время компиляции, на унифицированные замыкания, передаваемые в виде аргументов, обрабатываемых во время выполнения.
- Удалены возможности, ранее помеченные как устаревшие: ключевые слова fn, alias, __comptime_assert, а также конструкции «@parameter if» и «@parameter for».
Одновременно сформирован выпуск движка MAX Framework 26.6, предлагающего платформу для разработок в области машинного обучения. MAX Framework дополняет инструментарий Mojo средствами для разработки и отладки приложений, использующих модели машинного обучения в различных форматах (TensorFlow, PyTorch, ONNX и т.п.). В MAX Framework 26.6 добавлена поддержка генерации звука с использованием модели MiniMax-Music3, позволяющая создавать стерео музыку с частотой дискретизации 44.1 кГц на основе текстового описания. Существенно повышена производительность при работе на системах с GPU NVIDIA и AMD. Добавлена поддержка AI-моделей Inkling и GLM-5.3, а также расширена поддержка семейств моделей Kimi, Qwen и Gemma.
Источник: http://www.opennet.ru/opennews/art.shtml?num=66299
