Apertura della libreria standard del linguaggio Mojo. Aggiornamento dello strumento Mojo 24.2

Gli sviluppatori del linguaggio di programmazione Mojo hanno avviato la traduzione dei lavori del progetto in software open source. Il codice della libreria standard è stato reso disponibile per la prima volta con licenza Apache 2.0, con eccezioni dal progetto LLVM che consentono la mescolanza con codice sotto licenza GPLv2. Oltre alla pubblicazione del codice, il processo di sviluppo si è orientato verso la trasparenza e la possibilità di apportare modifiche da terze parti tramite l'invio di pull request su GitHub. Si prevede di rendere pubblici i codici sorgente del compilatore dopo il completamento della progettazione dell'architettura interna.

Nel repository sono state create due branche con il codice della libreria standard Mojo: la branca main, sincronizzata con l'ultima versione stabile di Mojo, e la branca nightly, che riflette il processo attuale di sviluppo ed è sincronizzata con le build notturne di Mojo. Si consiglia di utilizzare la branca nightly ai partecipanti che desiderano contribuire allo sviluppo e condividere le proprie modifiche. Tuttavia, alcune parti dei moduli della libreria non sono ancora aperte, ma si prevede che il codice rimanente chiuso venga spostato nel repository aperto in futuro. In generale, il codice dei moduli in rapida evoluzione, che richiedono ulteriore stabilizzazione, dei moduli previsti per il refactoring e dei moduli che necessitano di ulteriori revisioni e rielaborazioni a causa di tabella di collegamento con progetti proprietari rimarrà chiuso.

È stato contemporaneamente rilasciato l'SDK Mojo 24.2, che consente di compilare progetti su sistemi locali, e il motore MAX Engine 24.2, che offre una piattaforma per lo sviluppo nell'ambito del machine learning. L'SDK Mojo include i componenti necessari per sviluppare applicazioni nel linguaggio Mojo, tra cui il compilatore, l'ambiente di runtime, una shell REPL interattiva per la costruzione e l'esecuzione di programmi, un debugger, un'estensione per l'editor di codice Visual Studio Code (VS Code) con supporto per l'autocompletamento, la formattazione del codice e l'evidenziazione della sintassi, e un modulo per integrare Jupyter per la creazione e l'esecuzione di notebook Mojo. MAX Engine completa l'SDK con strumenti per lo sviluppo e il debug di applicazioni che utilizzano modelli di machine learning in vari formati (TensorFlow, PyTorch, ONNX, ecc.). Le versioni dell'SDK Mojo e di MAX Engine sono preparate per le piattaforme Linux e macOS.

Tra le modifiche più significative in Mojo 24.2:

  • Le strutture e altri tipi nominali ora possono corrispondere implicitamente alle interfacce. Ad esempio, qualsiasi struttura per la quale è stato implementato il metodo __str__() corrisponde implicitamente all'interfaccia Stringable e può essere utilizzata con la funzione str().
  • Negli strumenti per garantire la compatibilità con il codice Python, è stata aggiunta la supporto per la trasmissione di argomenti basati su parole chiave nelle funzioni Python. Ad esempio, «plt.plot((5, 10), (10, 15), color=»red»)»
  • È stata aggiunta la supporto per la trasmissione a una funzione di un numero variabile di argomenti, specificati tramite l'assegnazione di parole chiave. Ad esempio, «print_nicely(a=7, y=8)».
  • Il tipo DynamicVector è stato rinominato in List e spostato nel modulo collections.list. È stata aggiunta la possibilità di creare un elenco a partire da un numero arbitrario di valori, ad esempio, «var numbers = List[Int](1, 2, 3)».
  • Nella funzione print() sono stati aggiunti i parametri nominati sep e end, attraverso i quali è possibile specificare i valori del separatore e dell'output finale. Ad esempio, l'esecuzione di print(«Hello», «Mojo», sep=», «, end=»!!!\n») porterà all'output di «prints Hello, Mojo!!!».

Il progetto Mojo è guidato da Chris Lattner, fondatore e architetto principale del progetto LLVM e creatore del linguaggio di programmazione Swift. La sintassi di Mojo si basa su Python, mentre il sistema di tipi è simile a C/C++. Il progetto si presenta come un linguaggio di programmazione generale che amplia le capacità di Python con strumenti di programmazione di sistema, adatto a una vasta gamma di compiti e combinando la semplicità d'uso per la ricerca e lo sviluppo rapido di prototipi 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