Mojo
От: BlackEric http://black-eric.lj.ru
Дата: 11.05.23 09:17
Оценка:
Создатель LLVM развивает новый язык программирования Mojo

Крис Латнер (Chris Lattner), основатель и главный архитектор LLVM, а также создатель языка программирования Swift, и Тим Дэвис (Tim Davis), бывший руководитель AI-проектов Google, таких как Tensorflow и JAX, представили новый язык программирования Mojo, сочетающий простоту применения для исследовательских разработок и быстрого создания прототипов с пригодностью для формирования высокопроизводительных конечных продуктов. Первое достигается благодаря использованию привычного синтаксиса языка Python, а второе за счёт возможности компиляции в машинный код, механизмов безопасной работы с памятью и задействованию средств для аппаратного ускорения вычислений.

Проект сфокусирован на использовании для разработок в области машинного обучения, но при этом преподносится как язык общего назначения, расширяющий возможности языка Python средствами системного программирования и подходящий для широкого круга задач. Например, язык применим для таких областей, как высокопроизводительные вычисления, обработка и преобразование данных. Интересной особенностью Mojo является возможность указания emoji-символа "🔥" в качестве расширения для файлов с кодом (например, "helloworld.🔥"), помимо текстового расширения ".mojo".

В настоящее время язык находится на стадии интенсивного развития и для тестирования предложен только online-интерфейс. Обособленные сборки для запуска на локальных системах обещают опубликовать позднее, после получения отзывов о работе интерактивного web-окружения. Исходные тексты компилятора, JIT и других связанных с проектом наработок планируют открыть после завершения проектирования внутренней архитектуры (модель развития рабочего прототипа за закрытыми дверями напоминает начальную стадию разработки LLVM, Clang и Swift). Так как синтаксис Mojo основан на языке Python, а система типов близка к C/C++, в будущем планируют разработать инструментарий для упрощения перевода на Mojo существующих проектов, написанных на C/C++ и Python, а также для разработки гибридных проектов, совмещающих код на Python и Mojo.



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

Задействование дополнительных аппаратных механизмов для ускорения вычислений даёт возможность добиться производительности, при интенсивных вычислениях превосходящей приложения на C/C++. Например, при тестировании приложения для генерации множества Мандельброта, скомпилированное приложение на языке Mojo при выполнении в облаке AWS (r7iz.metal-16xl) оказалось в 6 раз быстрее реализации на C++ (0.03 сек. против 0.20 сек.), а также в 35 тысяч раз быстрее приложения на Python при использовании штатного CPython 3.10.9 (0.03 сек. против 1027 сек.) и в 1500 раз быстрее при использовании PYPY (0.03 сек. против 46.1 сек.).


Mojo may be the biggest programming language advance in decades (ENG)

Chris Lattner is responsible for creating many of the projects that we all rely on today – even although we might not even have heard of all the stuff he built! As part of his PhD thesis he started the development of LLVM, which fundamentally changed how compilers are created, and today forms the foundation of many of the most widely used language ecosystems in the world. He then went on to launch Clang, a C and C++ compiler that sits on top of LLVM, and is used by most of the world’s most significant software developers (including providing the backbone for Google’s performance critical code). LLVM includes an “intermediate representation” (IR), a special language designed for machines to read and write (instead of for people), which has enabled a huge community of software to work together to provide better programming language functionality across a wider range of hardware.

Chris saw that C and C++ however didn’t really fully leverage the power of LLVM, so while he was working at Apple he designed a new language, called “Swift”, which he describes as “syntax sugar for LLVM”. Swift has gone on to become one of the world’s most widely used programming languages, in particular because it is today the main way to create iOS apps for iPhone, iPad, MacOS, and Apple TV.

Unfortunately, Apple’s control of Swift has meant it hasn’t really had its time to shine outside of the cloistered Apple world. Chris led a time for a while at Google to try to move Swift out of its Apple comfort zone, to become a replacement for Python in AI model development. I was very excited about this project, but sadly it did not receive the support it needed from either Apple or from Google, and it was not ultimately successful.

Having said that, whilst at Google Chris did develop another project which became hugely successful: MLIR. MLIR is a replacement for LLVM’s IR for the modern age of many-core computing and AI workloads. It’s critical for fully leveraging the power of hardware like GPUs, TPUs, and the vector units increasingly being added to server-class CPUs.

So, if Swift was “syntax sugar for LLVM”, what’s “syntax sugar for MLIR”? The answer is: Mojo! Mojo is a brand new language that’s designed to take full advantage of MLIR. And also Mojo is Python.


Интересно, взлетит?
Мне кажется, что такой язык был нужен давно. Хотя для языков release faster не работает пожалуй. Язык надо выпускать сразу полностью готовый со всеми наворотами из коробки. Но CPython и IronPython настолько убоги, что, надеюсь, процесс пойдет.
https://github.com/BlackEric001
mojo
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.