Открытие стандартной библиотеки языка Mojo. Обновление инструментария Mojo 24.2

Новости мира unix. Хотите узнать секрет вечного счастья? Откройте страницу 246.
Ответить
acolyte
Аватара пользователя
Сообщения: 2579
Зарегистрирован: 20.08.2022

#

Открытие стандартной библиотеки языка Mojo. Обновление инструментария Mojo 24.2
Дата публикации:Wed, 03 Apr 2024 10:23:16 +0300




Разработчики языка программирования Mojo начали перевод наработок проекта в разряд открытого ПО. Первым открыт код библиотеки, который теперь доступен под лицензией Apache 2.0 c исключениями от проекта LLVM, допускающими смешивание с кодом под лицензией GPLv2. Помимо публикации кода процесс разработки сместился в сторону открытости и возможности передачи сторонних изменений через отправку pull-запросов в GitHub. Исходные тексты компилятора планируют открыть после завершения проектирования внутренней архитектуры.




В репозитории созданы две ветки с кодом стандартной библиотеки Mojo: ветка main, синхронизированная с последним стабильным релизом Mojo, и ветка nightly, отражающая текущий процесс разработки и синхронизированная с ночными сборками Mojo. Ветку nightly предлагается использовать участникам, которые желают присоединиться к разработке и поделиться своими изменениями. При этом часть модулей библиотеки пока не открыта, но через какое-то время остающийся закрытым код также планируют переместить в открытый репозиторий. В основном закрытым остаётся код быстро развивающихся модулей, требующих дополнительной стабилизации, модулей для которых запланирован рефакторинг и модулей, требующих дополнительного рецензирования и переработки из-за связи с проприетарными проектами.




Одновременно опубликован выпуск инструментария Mojo SDK 24.2, позволяющего компилировать проекты на локальной системе, и выпуск движка MAX Engine 24.2, предлагающего платформу для разработок в области машинного обучения. В состав Mojo SDK входят компоненты, необходимые для разработки приложений на языке Mojo, включая компилятор, runtime, интерактивную REPL-оболочку для сборки и запуска программ, отладчик, дополнение к редактору кода Visual Studio Code (VS Code) с поддержкой автодополнения ввода, форматирования кода и подсветки синтаксиса, модуль для интеграции с Jupyter для сборки и запуска Mojo notebook. MAX Engine дополняет SDK средствами для разработки и отладки приложений, использующих модели машинного обучения в различных форматах (TensorFlow, PyTorch, ONNX и т.п.). Сборки Mojo SDK и MAX Engine подготовлены для платформы Linux и macOS.






Среди наиболее заметных изменений в Mojo 24.2:
  • Структуры и другие номинальные типы теперь могут неявно соответствовать типажам. Например, любая структура для которой реализован метод __str__() неявно соответствует типажу Stringable и может использоваться с функцией str().
    В средствах для обеспечения совместимости с кодом на языке Python добавлена поддержка передачи аргументов на основе ключевых слов в Python-функции. Например, "plt.plot((5, 10), (10, 15), color="red")"
    Добавлена поддержка передачи в функцию переменного числа аргументов, задаваемых через присвоение ключевых слов. Например, "print_nicely(a=7, y=8)".

    Тип DynamicVector переименован в List и перемещён в модуль collections.list. Добавлена возможность формирования списка на основе произвольного числа значений, например, "var numbers = List[Int](1, 2, 3)".

    В функцию print() добавлены именованные параметры sep и end, через которые можно задать значения разделителя и финального вывода. Например, выполнение print("Hello", "Mojo", sep=", ", end="!!!\n") приведёт к выводу "prints Hello, Mojo!!!".










Проект 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.







Новость позаимствована с opennet.ru
Ссылка на оригинал: https://www.opennet.ru/opennews/art.shtml?num=60917

Жизнь за Нер'зула!

Ответить