Veröffentlichung der Programmiersprache Mojo 24.3

Опубликован выпуск инструментария языка программирования 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.

Die Mojo-Sprache entwickelt sich unter der Leitung von Chris Lattner, dem Gründer und Chefarchitekten des LLVM-Projekts und dem Erfinder der Programmiersprache Swift. Die Syntax von Mojo basiert auf Python, während das Typsystem den Sprachen C/C++ ähnelt. Das Projekt wird als eine universelle Sprache präsentiert, die die Möglichkeiten von Python durch systemnahe Programmierung erweitert. Sie ist für eine Vielzahl von Aufgaben geeignet und vereint die Anwendungsfreundlichkeit für Forschungsentwicklungen und schnelles Prototyping mit der Eignung zur Schaffung hochleistungsfähiger Endprodukte.

Die Einfachheit wird durch die Verwendung der vertrauten Syntax der Programmiersprache Python erreicht. Die Entwicklung von Endprodukten wird durch die Möglichkeit zur Kompilierung in Maschinencode, sichere Speicherverwaltungsmechanismen und die Verwendung von Hardwarebeschleunigung für Berechnungen unterstützt. Um hohe Leistung zu erzielen, wird eine Parallelisierung der Berechnungen unter Einbeziehung aller verfügbaren Hardware-Ressourcen in heterogenen Systemen wie GPUs, spezialisierten Beschleunigern für maschinelles Lernen und vektoriellen Prozessorinstruktionen (SIMD) unterstützt. Bei intensiven Berechnungen ermöglicht die Parallelisierung und Nutzung aller Rechenressourcen eine Leistungsfähigkeit, die über der von C/C++-Anwendungen liegt.

Die Sprache unterstützt statische Typisierung und bietet Möglichkeiten für sichere, low-level Speicherverwaltung, ähnlich wie die Funktionen von Rust, einschließlich Referenzlebensdauer-Tracking und das Überprüfen von Variablenleihgaben (Borrow Checker). Gleichzeitig sind im Sprachumfang auch Optionen für die low-level Arbeit verfügbar, wie der direkte Zugriff auf den Speicher im unsafe Modus über den Typ Pointer, das Ausführen spezifischer SIMD-Instruktionen und der Zugriff auf Hardware-Erweiterungen wie TensorCores und AMX.

Mojo kann sowohl im Interpretationsmodus mit JIT als auch zur Kompilierung in ausführbare Dateien (AOT, ahead-of-time) verwendet werden. Der Compiler ist mit modernen Technologien zur automatischen Optimierung, Caching und verteilten Kompilierung ausgestattet. Der Quellcode in Python wird in niedrigstufigen Zwischencode MLIR (Multi-Level Intermediate Representation) umgewandelt, das im Rahmen des LLVM-Projekts entwickelt wird. Der Compiler ermöglicht die Verwendung verschiedener Backends, die MLIR unterstützen, um Maschinencode zu generieren.

Quelle: opennet.ru

Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen 🔥 Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen | ProHoster