Apertura de la biblioteca estándar del lenguaje Mojo. Actualización de las herramientas Mojo 24.2

Los desarrolladores del lenguaje de programación Mojo han comenzado a trasladar los desarrollos del proyecto al ámbito del software de código abierto. El código de la biblioteca estándar ha sido el primero en abrirse, ahora disponible bajo la licencia Apache 2.0 con excepciones del proyecto LLVM, que permiten la mezcla con código bajo la licencia GPLv2. Además de la publicación del código, el proceso de desarrollo se ha orientado hacia la apertura y la posibilidad de transferencia de cambios por parte de terceros mediante la presentación de pull requests en GitHub. Se planea abrir los textos fuente del compilador una vez que se complete el diseño de la arquitectura interna.

En el repositorio se han creado dos ramas con el código de la biblioteca estándar de Mojo: la rama main, sincronizada con la última versión estable de Mojo, y la rama nightly, que refleja el proceso de desarrollo en curso y está sincronizada con las compilaciones nocturnas de Mojo. Se sugiere que los participantes que deseen unirse al desarrollo utilicen la rama nightly para compartir sus cambios. Sin embargo, algunas partes de los módulos de la biblioteca aún no están abiertas, pero se planea trasladar el código restante que aún no se ha publicado al repositorio abierto en algún momento. Principalmente, el código de los módulos de rápido desarrollo, que requieren estabilización adicional, así como los módulos programados para refactorización y aquellos que necesitan revisión y reestructuración adicionales debido a su relación con proyectos propietarios, permanecen cerrados.

Al mismo tiempo, se ha publicado la versión 24.2 del Mojo SDK, que permite compilar proyectos en el sistema local, y la versión 24.2 del motor MAX Engine, que ofrece una plataforma para el desarrollo en el ámbito del aprendizaje automático. El Mojo SDK incluye componentes necesarios para desarrollar aplicaciones en el lenguaje Mojo, incluyendo un compilador, runtime, un shell REPL interactivo para compilar y ejecutar programas, un depurador, un complemento para el editor de código Visual Studio Code (VS Code) con soporte para autocompletar entradas, formateo de código y resaltado de sintaxis, y un módulo para la integración con Jupyter para compilar y ejecutar notebooks de Mojo. MAX Engine complementa el SDK con herramientas para el desarrollo y depuración de aplicaciones que utilizan modelos de aprendizaje automático en varios formatos (TensorFlow, PyTorch, ONNX, etc.). Las versiones de Mojo SDK y MAX Engine están preparadas para las plataformas Linux y macOS.

Entre los cambios más notables en Mojo 24.2:

  • Las estructuras y otros tipos nominales ahora pueden cumplir implícitamente con las interfaces. Por ejemplo, cualquier estructura que implemente el método __str__() cumple implícitamente con la interfaz Stringable y puede utilizarse con la función str().
  • Se ha agregado soporte para la transmisión de argumentos basados en palabras clave en funciones de Python. Por ejemplo, «plt.plot((5, 10), (10, 15), color=’red’)».
  • Se ha añadido soporte para pasar un número variable de argumentos definidos por asignación de palabras clave a la función. Por ejemplo, «print_nicely(a=7, y=8)».
  • El tipo DynamicVector se ha renombrado a List y se ha movido al módulo collections.list. Se ha añadido la capacidad de formar listas a partir de un número arbitrario de valores, por ejemplo, «var numbers = List[Int](1, 2, 3)».
  • Se han añadido parámetros nombrados sep y end a la función print(), a través de los cuales se pueden establecer los valores del separador y la salida final. Por ejemplo, ejecutar print(«Hello», «Mojo», sep=’, ‘, end=’!!!\n’) resultará en la salida «prints Hello, Mojo!!!».

El proyecto Mojo se desarrolla bajo la dirección de Chris Lattner, el fundador y arquitecto principal del proyecto LLVM y creador del lenguaje de programación Swift. La sintaxis de Mojo se basa en el lenguaje Python, y el sistema de tipos es similar al de C/C++. El proyecto se presenta como un lenguaje de propósito general que amplía las capacidades de Python con herramientas de programación de sistemas, adecuado para una amplia gama de tareas y que combina facilidad de uso para desarrollos experimentales y creación rápida de prototipos con la idoneidad para producir productos finales de alto rendimiento.

La simplicidad se logra gracias al uso de la sintaxis familiar del lenguaje Python, y el desarrollo de productos finales se ve facilitado por la capacidad de compilación a código máquina, mecanismos de manejo seguro de la memoria y la utilización de recursos para el aceleramiento hardware de los cálculos. Para alcanzar un alto rendimiento, se admite la paralelización de cálculos utilizando todos los recursos hardware disponibles en sistemas heterogéneos, como GPU, aceleradores especializados para aprendizaje automático e instrucciones de procesadores vectoriales (SIMD). En cálculos intensivos, la paralelización y la utilización de todos los recursos de cálculo permiten lograr un rendimiento que supera a las aplicaciones en C/C++.

El lenguaje soporta la tipificación estática y herramientas para trabajar de manera segura en bajo nivel con la memoria, recordando las capacidades del lenguaje Rust, como el seguimiento del tiempo de vida de las referencias y la verificación del préstamo de variables (borrow checker). Además, el lenguaje ofrece posibilidades para el manejo de bajo nivel, como el acceso directo a la memoria en modo unsafe utilizando el tipo Pointer, la invocación de instrucciones SIMD específicas o el acceso a extensiones hardware, como TensorCores y AMX.

Mojo puede usarse tanto en modo interpretación con JIT como para la compilación en archivos ejecutables (AOT, ahead-of-time). El compilador incluye tecnologías modernas de optimización automática, almacenamiento en caché y compilación distribuida. El código fuente en Mojo se transforma en un código intermedio de bajo nivel MLIR (Multi-Level Intermediate Representation), desarrollado por el proyecto LLVM. El compilador permite aplicar diferentes backends que soportan MLIR para la generación de código máquina.

Fuente: opennet.ru

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster