The OpenNET Project / Index page

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

Выпуск языка программирования Mojo 24.3

03.05.2024 17:01

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

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

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

  • В модули для работы с коллекциями (List, Dict, Set и Tuple) добавлены возможности, делающие их более привычные пользователям, знакомым с языком программирования Python. В тип List добавлены методы, повторяющие Python API, такие как pop(index), resize(new_size) и insert(index, value).
  • В тип Dict добавлен метод update() для обновления ключа/значения из другого Dict.
  • В типе Tuple обеспечена работа с хранящимися только в памяти типами, такими как String, что позволяет указывать "x = tup[1]" вместо "x = tup.get[1, Int]()" и присваивать значения через "tup[1] = x".
  • В типе Set реализована поддержка именованных методов, которые можно использовать вместо операторов: difference() вместо "-", difference_update() вместо "-=", intersection_update() вместо "&=" и update() вместо "|=".
  • Добавлена функция reversed(), позволяющая поменять порядок следования элементов на обратный. Функция reversed() может применяться с List, Dict и любыми типами, поддерживающими диапазоны значений.
    
       var numbers = List(1, 2, 3, 4, 5)
       for number in reversed(numbers):
           print(number)
    
  • Реализован типаж Boolable, возвращающий для переменных с типами Dict, List и Set значение True, если они содержат хотя бы один элемент.
  • Улучшена поддержка вариативных аргументов. Предоставлена возможность определения функций, содержащих одновременно как необязательные, так и вариативные аргументы.
    
       fn variadic_arg_after_default(
         a: Int, b: Int = 3, *args: Int, c: Int, d: Int = 1, **kwargs: Int
       ): ...
    
  • Добавлены функции __source_location() и __call_location() для определения местоположения (номер строки в исходных текстах) вызовов функций и кода.
  • В метод FileHandle.seek() по аналогии с языком Python добавлена поддержка аргумента "whence".
  • Тип AnyPointer переименован в UnsafePointer. Добавлена возможность инициализации UnsafePointer из напрямую из ссылки с типом Reference ("UnsafePointer(someRef)"). Для работы с указателями UnsafePointer добавлены функции initialize_pointee_copy, initialize_pointee_move, move_from_pointee() и move_pointee.

Язык 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.

  1. Главная ссылка к новости (https://www.modular.com/blog/w...)
  2. OpenNews: Открытие стандартной библиотеки языка Mojo. Обновление инструментария Mojo 24.2
  3. OpenNews: Обновление инструментария для языка программирования Mojo
  4. OpenNews: Доступен для тестирования инструментарий для языка программирования Mojo
  5. OpenNews: Создатель LLVM развивает новый язык программирования Mojo
  6. OpenNews: Сотрудник Google развивает язык программирования Carbon, нацеленный на замену C++
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/61111-mojo
Ключевые слова: mojo
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (57) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, DEF (?), 17:47, 03/05/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –16 +/
    Слишком поздно. Julia уже вытесняет Python из ниши Data Science и Big Data.
     
     
  • 2.3, Аноним (3), 17:53, 03/05/2024 [^] [^^] [^^^] [ответить]  
  • +8 +/
    Ну, это вряд ли, конечно. Маловероятно, так скажем.
     
     
  • 3.37, Аноним (37), 00:21, 04/05/2024 [^] [^^] [^^^] [ответить]  
  • +9 +/
    Есть тип людей, которым кажется, что чем больше им нравится вещь, тем больше она вытесняет. Называются гуманитарии.
     
  • 2.11, Аноним (-), 18:32, 03/05/2024 [^] [^^] [^^^] [ответить]  
  • +5 +/
    Вытеснение идет полных ходом, я смотрю:
    https://trends.google.com/trends/explore?q=%2Fm%2F05z1_,%2Fm%2F0j3djl7&hl=ru
     
  • 2.24, OpenEcho (?), 20:41, 03/05/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Julia

    А она научилась наконец в реальную компиляцию или только для приманки так и осталось на бумаге где кроме ПриветМир в 200 мегов ничего больше не комипилится ?

     
  • 2.27, Аноним (27), 21:13, 03/05/2024 [^] [^^] [^^^] [ответить]  
  • +3 +/
    Любой язык с индексацией с единицы идёт прямиком ффтопку. Потому что считать индексы в массивах очень неудобно становится. Простейший способ это сделать - это считать всё так, как будто индексация идёт с нуля, а потом добавить единицу. Только единицу придётся добавлять на каждый доступ. Я что, похож на идиота, чтобы такое говно, мне ставящее палки в колёса, использовать?
     
     
  • 3.30, Аноним (30), 21:38, 03/05/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Я что, похож на идиота, чтобы такое говно, мне ставящее палки в колёса, использовать?

    Ну почему же "похож"?... Вполне возможно так и есть.

    Первый элемент массива - это первый, а не нулевой. Впрочем, у Джулии, например, есть банальные слова-заменители begin:end для первого и последнего с возможностью подставить смещение от них. И не использовать 1 или length().

     
     
  • 4.46, Аноним (46), 02:48, 04/05/2024 [^] [^^] [^^^] [ответить]  
  • +/
    нет, первый элемент массива он именно нулевой, так как идёт по смещению base + 0*sizeof(el).
     
     
  • 5.52, User (??), 08:58, 04/05/2024 [^] [^^] [^^^] [ответить]  
  • +/
    А вот это есть лютое легаси с попыткой наложить на бизнес-слой ограничения технической реализации.
     
     
  • 6.68, Аноним (68), 00:57, 07/05/2024 [^] [^^] [^^^] [ответить]  
  • +/
    А если не в си, а, скажем, в расте выделить память непрерывным куском и итерироваться как по многомерному массиву (y*width + x), то превратится ли "лютое легаси" в какую-нибудь "state-of-the-art индексацию от ведущих специалистов с экспертизой в data layout"? А то индексация с единицы этот случай портит (придётся начинать разные индексы с разных чисел или вычитать единицы).

    Ограничения технической реализации не помешало бы наложить на бизнес-слой всего человечества. На часах ноль часов и говорят, что идёт первый час. Но... на календаре 2024, а говорят, что идёт 2024-й год. Второе тысячелетие формально кончилось с наступлением 2001-го, а праздновали на год раньше.

    Или хотя бы добавить произвольную индексацию в каждый новый ЯП, если так "бизнес-слой" важен.

     
     
  • 7.69, User (??), 08:56, 07/05/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >[оверквотинг удален]
    > превратится ли "лютое легаси" в какую-нибудь "state-of-the-art индексацию от ведущих специалистов
    > с экспертизой в data layout"? А то индексация с единицы этот
    > случай портит (придётся начинать разные индексы с разных чисел или вычитать
    > единицы).
    > Ограничения технической реализации не помешало бы наложить на бизнес-слой всего человечества.
    > На часах ноль часов и говорят, что идёт первый час. Но...
    > на календаре 2024, а говорят, что идёт 2024-й год. Второе тысячелетие
    > формально кончилось с наступлением 2001-го, а праздновали на год раньше.
    > Или хотя бы добавить произвольную индексацию в каждый новый ЯП, если так
    > "бизнес-слой" важен.

    А при чем тут "Си" и "Раст"? Если бы я про "null-terminated strings" говорил - оно в кассу было бы, а тут-то при шта? Проблема в том, что "в повседневной жизни" для тебя "первый элемент" - ну вот "первый", а в случае с некоторыми ЯП - ну вот "нулевой", патамучтагладиолус и нам так 50 лет назад удобней было. Примерно та же мулька кстати с использованием "=" в качестве оператора присваивания - тоже овердофигища проблем на пустом месте.
    Календарь с часами кстати - тоже лютейшее legacy, вызывающее дохренища проблем в том числе и у программистов - но тут не то, чтобы мы могли чего-нибудь сделать, увы. Правда с моей т.з. логика вида "И что за беда, коль в огороде лебеда? Вон, у них церква горят - ничего не говорят!" - она того-этого... ущербная, но кто-то пользуется, да.

     
     
  • 8.70, Аноним (68), 18:42, 07/05/2024 [^] [^^] [^^^] [ответить]  
  • +/
    А при чём тут 50 лет назад --- TL DR 1 индексация с нуля в принципе полезна и... большой текст свёрнут, показать
     
     
  • 9.71, User (??), 21:17, 07/05/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Ну вот если бы нейронки хорошо справлялись - вопросов бы не было, но они НЕ СП... текст свёрнут, показать
     
     
  • 10.72, Аноним (68), 22:03, 07/05/2024 [^] [^^] [^^^] [ответить]  
  • +/
    ШТО Нет, у остального человечества нейронки в головах прекрасно справляются Мо... текст свёрнут, показать
     
     
  • 11.73, User (??), 05:42, 08/05/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Эм Вы что - думаете, что у программистов монополия на глупость Нет Всё, что в... текст свёрнут, показать
     
     
  • 12.74, Аноним (68), 19:26, 08/05/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Ну это точно ограничения технической реализации Решение пропустить три этажа из... большой текст свёрнут, показать
     
     
  • 13.75, User (??), 21:14, 08/05/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Что за беда, коль в огороде лебеда ... текст свёрнут, показать
     
     
  • 14.76, Аноним (68), 01:29, 10/05/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Да, конце комментария оффтоп, но зачем опять реагировать только на него Ошибочн... текст свёрнут, показать
     
     
  • 15.77, User (??), 11:14, 11/05/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Да нет, тут не в оффтопе дело - мне сам подход не нравится Тут лежат ГРАБЛИ, ... текст свёрнут, показать
     
     
  • 16.78, Аноним (68), 23:27, 11/05/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Мне тоже не нравится подход в энный или уже в эмный раз игнорировать аргумент... текст свёрнут, показать
     
     
  • 17.79, User (??), 15:48, 12/05/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Так какие - аргументы -то Грабли пусть лежат, как лежали - их еще дед лОжил - ... текст свёрнут, показать
     
  • 5.62, Аноним (-), 17:50, 04/05/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Ах вот ты о чём... Храни в base адрес буфера минус sizeof(el) и будет тебе щщасте.
     
  • 5.63, Бывалый Смузихлёб (ok), 18:03, 04/05/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    нулевой элемент именно нулевой, а не первый
    а первый - именно первый. На то он и первый что первый.
    Просто некоторые уже забыли как им выносили мозги в вузе или при ином обучении проге
    Где нулевое называлось первым, а границы массива... там целый курс можно было лещей ловить
     
  • 5.65, Аноним (65), 01:30, 05/05/2024 Скрыто ботом-модератором     [к модератору]
  • +2 +/
     
  • 3.38, Аноним (37), 00:24, 04/05/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А зачем вообще знать какой там у тебя индекс в массиве? Чтобы что? Максимум, что может понадобиться это длина и то крайне редко.
     
     
  • 4.48, Аноним (46), 02:51, 04/05/2024 [^] [^^] [^^^] [ответить]  
  • +/
    чтобы байтоёжствовать.
     
  • 4.54, тыквенное латте (?), 09:08, 04/05/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > А зачем вообще знать какой там у тебя индекс в массиве? Чтобы
    > что? Максимум, что может понадобиться это длина и то крайне редко.

    зачем вообще нужен массив? чтобы что?

     
     
  • 5.58, Аноним (58), 11:08, 04/05/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >чтобы что?

    Очевидно, что бы массировать ;)

     
     
  • 6.59, тыквенное латте (?), 11:13, 04/05/2024 [^] [^^] [^^^] [ответить]  
  • +/
    >>чтобы что?
    > Очевидно, что бы массировать ;)

    Очевидно, что это лишнее. Дэвалопа не должен забивать голову лишним, только бизнес логикой. И потом летать на ней, в обязательном порядке. ;-)

     
  • 3.41, Аноним (41), 00:35, 04/05/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Индексация с нуля - это маленькая оптимизация родом даже не из 80-х, а раньше, когда буквально каждый бит экономили. Наберись уже храбрости и потрать пару инструкци
     
     
  • 4.42, Аноним (41), 00:37, 04/05/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    ... инструкций на вычисление индексов когда тут же миллиарды операций сжигаются впустую из-за bloatware.
     
     
  • 5.47, Аноним (46), 02:50, 04/05/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Ваш сарказм невообразимо уныл и неуместен тут.
     
     
  • 6.67, Аноним (67), 15:01, 06/05/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Ты даже не умеешь отличать сарказм.
     
  • 2.60, economist (?), 13:13, 04/05/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Мужики-то не знают.  
     

  • 1.6, Аноним (6), 18:07, 03/05/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +4 +/
    > компилировать проекты на локальной системе

    killer-feature

     
  • 1.7, Аноним (-), 18:15, 03/05/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Ребята молодцы. Вот так раз - и 24я версия!
    Солидно звучит. Это ж AI, тут всё должно быть bleeding edge!
    А не как какая-то занюханая v0.7.0, которая была в январе 2024 года.
    Вот ее инвестору фиг продашь!
     
     
  • 2.16, Аноним (16), 19:26, 03/05/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Просто и понятно Mojo в 8 раз лучше питона.
     
     
  • 3.31, Аноним (30), 21:38, 03/05/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Синтаксис бы ему человеческий. И вообще было бы замечательно.
     
     
  • 4.39, Аноним (37), 00:27, 04/05/2024 [^] [^^] [^^^] [ответить]  
  • –5 +/
    Синтаксис вообще последнее, на что внимание обращается. Как цвет ноутбука. При большом желании можно и поменять, но в целом пофиг.
     
     
  • 5.66, Аноним (66), 09:22, 05/05/2024 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Вот розовенький да?
     
  • 4.43, Аноним (41), 00:41, 04/05/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Синтаксис у него отличный, родом от Python, а еще есть borrow checker, так что можно писать безопасные программы не жертвуя производительностью!
     
     
  • 5.51, Аноним (30), 07:57, 04/05/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Синтаксис у него отличный, родом от Python

    Ну так в этом то и проблема. Откуда синтаксисе питона хоть что-то хорошее?

     
  • 5.56, YetAnotherOnanym (ok), 10:00, 04/05/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > родом от Python

    самое то, что нужно для тех, кто не способен освоить более одного "лёгкого в изучении" языка.

     

  • 1.8, Username (?), 18:17, 03/05/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Зачем оно нужно, столько языков уже наплодили в последнее время без сферы применения или которые не просили
     
     
  • 2.12, Аноним (16), 18:52, 03/05/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Это язык от главного автора LLVM, Swift и Clang. Т.е. от главного человека в природа который хоть что-то понимает в создании языков программирования.
     
     
  • 3.19, Аноним (19), 19:52, 03/05/2024 Скрыто ботом-модератором     [к модератору]
  • +1 +/
     
  • 2.25, OpenEcho (?), 20:47, 03/05/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > Зачем оно нужно, столько языков уже наплодили в последнее время без сферы применения

    Mojo 🔥 — the programming language for all **AI developers**

    Для ИИ оно, специЯльно-е
    Ну и к пиктограмам 🔥 приучают, чтоб назад в прошлое легче

     
     
  • 3.44, mister_0 (?), 00:42, 04/05/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Fuzzy logic умеет? или там, я не знаю, экспертную систему можно забубенить?
     
  • 2.36, Аноним (-), 23:52, 03/05/2024 [^] [^^] [^^^] [ответить]  
  • +/
    > столько языков уже наплодили в последнее время

    Всегда столько плодили. Создание языков программирования -- это программерское развлечение, которое по популярности уступает только написанию ОС.

     
  • 2.40, Аноним (37), 00:29, 04/05/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Как раз у можо сфера применения определена на стадии дизайна. А по поводу не просили... тебе на госуслуги должны были запрос прислать?
     

  • 1.20, Аноним (20), 19:53, 03/05/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +3 +/
    Что же с вами будет, когда до версии 24.3 дойдёт Zig...
     
     
  • 2.35, Nv (?), 22:18, 03/05/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Ниче не будет Z3 только в том варианте
     
  • 2.50, Аноним (50), 07:53, 04/05/2024 [^] [^^] [^^^] [ответить]  
  • –1 +/
    >Zig prioritizes reading code over writing it.

    Не, дэвид блэйн, не надо.

     

  • 1.45, 12yoexpert (ok), 00:47, 04/05/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +5 +/
    очередной проект-однодневка, как и swift/golang/прочий современный коммерческий хипсто-мусор
    не забудьте накупить книжек на амазоне от орелли, курсов удеми и взять в аренду подкасты на спотифай (или куда там эту дрисню выкладывают?)
     
  • 1.49, Афанасий (?), 07:40, 04/05/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +2 +/
    Swift - местечковый язык для Apple. С ним всё ясно.

    Go - используется хорошо для всяких сетевых решений типа REST API и около сетевых делах 7таких как системы управления контейнерами и т.п. Занял свою нишу и за её пределы не выбирается.

    Нравится или не нравится, но жить эти языки будет долго и нас переживут. Замены им на горизонте не видно(

     
  • 1.55, YetAnotherOnanym (ok), 09:59, 04/05/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Синтаксис Mojo основан на языке Python, а система типов близка к C/C++

    Павлино-утко-ёж

     
  • 1.57, Аноним (57), 10:58, 04/05/2024 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > позволяющего компилировать проекты на локальной системе.

    Чем это лучше… любого другого языка?

     
     
  • 2.64, Аноним (64), 00:36, 05/05/2024 [^] [^^] [^^^] [ответить]  
  • +/
    Тем, что сабжа нет под винду
     

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



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

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