Rilascio del linguaggio di programmazione Mojo 24.3

È stato pubblicato il rilascio della piattaforma di programmazione Mojo 24.3, che consente di compilare progetti localmente. Include componenti essenziali per lo sviluppo di applicazioni in Mojo, come il compilatore, il runtime, un'interfaccia a riga di comando REPL per costruire ed eseguire programmi, un debugger, un'estensione per l'editor di codice Visual Studio Code (VS Code) con supporto per il completamento automatico, la formattazione del codice e l'evidenziazione della sintassi, e un modulo per l'integrazione con Jupyter per costruire ed eseguire notebook Mojo. I testi sorgente della libreria standard di Mojo sono aperti sotto la licenza Apache 2.0 con eccezioni dal progetto LLVM, che consentono l'integrazione con codice sotto licenza GPLv2. Si prevede di rilasciare il codice sorgente del compilatore dopo aver completato la progettazione dell'architettura interna.

Contemporaneamente è stato rilasciato il motore MAX Engine 24.3, che offre una piattaforma per lo sviluppo di applicazioni nel campo dell'apprendimento automatico. MAX Engine arricchisce la piattaforma Mojo con strumenti per lo sviluppo e il debug di applicazioni che utilizzano modelli di machine learning in vari formati (TensorFlow, PyTorch, ONNX, ecc.). Le build del Mojo SDK e di MAX Engine sono state preparate per le piattaforme Linux e macOS.

Tra le novità in Mojo 24.3:

  • Nei moduli per la gestione delle collezioni (List, Dict, Set e Tuple) sono state aggiunte funzionalità per rendere l'uso più familiare agli utenti del linguaggio di programmazione Python. Nel tipo List sono stati aggiunti metodi che replicano l'API di Python, come pop(index), resize(new_size) e insert(index, value).
  • Nel tipo Dict è stato aggiunto il metodo update() per aggiornare chiavi/valori da un altro Dict.
  • Nel tipo Tuple è stata abilitata la gestione di tipi memorizzati solo in memoria, come String, permettendo l'uso di "x = tup[1]" invece di "x = tup.get[1, Int]()" e l'assegnazione di valori tramite "tup[1] = x".
  • Nel tipo Set è stata implementata la supporto per metodi nominati che possono essere usati al posto degli operatori: difference() invece di "-", difference_update() invece di "-=", intersection_update() invece di "&=", e update() invece di "|= “.
  • È stata aggiunta la funzione reversed(), che consente di invertire l'ordine degli elementi. La funzione reversed() può essere utilizzata con List, Dict e qualsiasi tipo che supporti l'intervallo di valori. var numbers = List(1, 2, 3, 4, 5) for number in reversed(numbers): print(number)
  • È stata implementata l'interfaccia Boolable, che restituisce True per le variabili di tipo Dict, List e Set se contengono almeno un elemento.
  • È stata migliorata la gestione degli argomenti variabili. È ora possibile definire funzioni che contengono sia argomenti opzionali che variabili. fn variadic_arg_after_default( a: Int, b: Int = 3, *args: Int, c: Int, d: Int = 1, **kwargs: Int ): …
  • Sono state aggiunte le funzioni __source_location() e __call_location() per determinare la posizione (numero di riga nei testi sorgente) delle chiamate a funzioni e codice.
  • Nel metodo FileHandle.seek() è stata aggiunta la gestione dell'argomento 'whence', in analogia con il linguaggio Python.
  • Il tipo AnyPointer è stato rinominato in UnsafePointer. È stata aggiunta la possibilità di inizializzare UnsafePointer direttamente da un riferimento di tipo Reference ("UnsafePointer(someRef)"). Per lavorare con i puntatori UnsafePointer sono state aggiunte le funzioni initialize_pointee_copy, initialize_pointee_move, move_from_pointee() e move_pointee.

Il linguaggio Mojo è sviluppato sotto la guida di Chris Lattner, fondatore e architetto principale del progetto LLVM e creatore del linguaggio di programmazione Swift. La sintassi di Mojo si basa sul linguaggio Python e il sistema di tipi è simile a C/C++. Il progetto si presenta come un linguaggio di programmazione generale che espande le capacità di Python con strumenti di programmazione di sistema, adatto a una vasta gamma di compiti e combinando la semplicità d'uso per progetti di ricerca e rapida prototipazione con l'idoneità per la creazione di prodotti finali ad alte prestazioni.

La semplicità è raggiunta grazie all'uso della sintassi familiare del linguaggio Python, mentre lo sviluppo di prodotti finali è facilitato dalla possibilità di compilazione in codice macchina, dai meccanismi di gestione sicura della memoria e dall'utilizzo di risorse per l'accelerazione hardware delle computazioni. Per garantire alte prestazioni, si supporta il parallelismo delle computazioni, sfruttando tutte le risorse hardware disponibili nei sistemi eterogenei, come le GPU, gli acceleratori specializzati per il machine learning e le istruzioni per processori vettoriali (SIMD). Nelle computazioni intensive, il parallelismo e l'uso di tutte le risorse computazionali consentono di raggiungere prestazioni superiori rispetto alle applicazioni in C/C++.

Il linguaggio supporta la tipizzazione statica e strumenti per una gestione sicura a basso livello della memoria, simili alle funzionalità del linguaggio Rust, come il tracciamento del ciclo di vita dei riferimenti e la verifica del prestito delle variabili (borrow checker). Inoltre, il linguaggio offre possibilità per operazioni a basso livello, come l'accesso diretto alla memoria in modalità unsafe con l'uso del tipo Pointer, l'invocazione di singole istruzioni SIMD o l'accesso a estensioni hardware come TensorCores e AMX.

Mojo può essere utilizzato sia in modalità interpretativa con JIT che per la compilazione in file eseguibili (AOT, ahead-of-time). Il compilatore include tecnologie moderne per l'ottimizzazione automatica, la cache e la compilazione distribuita. Il codice sorgente nel linguaggio Mojo viene convertito in un codice intermedio a basso livello MLIR (Multi-Level Intermediate Representation), sviluppato dal progetto LLVM. Il compilatore consente di utilizzare diversi backend che supportano MLIR per la generazione di codice macchina.

Fonte: opennet.ru

Acquista un hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista un hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster