Apertura della libreria standard del linguaggio Mojo. Aggiornamento degli strumenti Mojo 24.2

Gli sviluppatori del linguaggio di programmazione Mojo hanno iniziato a rendere le intuizioni del progetto disponibili come software open source. Il primo codice a essere reso pubblico è quello della libreria standard, ora accessibile con licenza Apache 2.0 con le eccezioni del progetto LLVM, che consentono l'integrazione con codice sotto licenza GPLv2. Oltre alla pubblicazione del codice, il processo di sviluppo si è spostato verso una maggiore apertura e la possibilità di trasferire modifiche esterne tramite l'invio di pull request su GitHub. I testi sorgente del compilatore saranno resi disponibili dopo il completamento della progettazione dell'architettura interna.

Nel repository sono state create due branch con il codice della libreria standard di Mojo: il branch main, sincronizzato con l'ultima versione stabile di Mojo, e il branch nightly, che riflette l'attuale processo di sviluppo ed è sincronizzato con le build notturne di Mojo. Si consiglia di utilizzare il branch nightly da parte degli partecipanti che desiderano unirsi allo sviluppo e condividere le proprie modifiche. Tuttavia, alcune parti dei moduli della libreria non sono ancora state aperte, ma nel tempo anche il codice attualmente chiuso sarà trasferito nel repository pubblico. Resta in gran parte chiuso il codice dei moduli in rapida evoluzione, che richiedono ulteriore stabilizzazione, dei moduli per i quali è previsto un refactoring e dei moduli che necessitano di ulteriori revisioni e riscritture a causa dei legami con progetti proprietari.

È stato contemporaneamente rilasciato Mojo SDK 24.2, uno strumento che consente di compilare progetti su un sistema locale, e il motore MAX Engine 24.2, che offre una piattaforma per sviluppi nel campo dell'apprendimento automatico. Mojo SDK include componenti necessari per lo sviluppo di applicazioni nel linguaggio Mojo, tra cui il compilatore, il runtime, un'interfaccia REPL interattiva per la creazione e l'esecuzione di programmi, un debugger, un'estensione per l'editor di codice Visual Studio Code (VS Code) con supporto per l'autocompletamento dell'input, la formattazione del codice e l'evidenziazione della sintassi, e un modulo per l'integrazione con Jupyter per la creazione e l'esecuzione di notebook Mojo. MAX Engine completa SDK con strumenti per lo sviluppo e il debugging di applicazioni che utilizzano modelli di apprendimento automatico in vari formati (TensorFlow, PyTorch, ONNX, ecc.). Le build di Mojo SDK e MAX Engine sono preparate per le piattaforme Linux e macOS.

Tra le modifiche più significative in Mojo 24.2:

  • Ora le strutture e altri tipi nominali possono implicitamente corrispondere 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().
  • Nei mezzi per garantire la compatibilità con il codice Python è stato aggiunto il supporto per il passaggio di argomenti basati su parole chiave alle funzioni Python. Ad esempio, «plt.plot((5, 10), (10, 15), color=»red»)»
  • È stato aggiunto il supporto per il passaggio di un numero variabile di argomenti alla funzione tramite l'assegnazione di parole chiave. Ad esempio, «print_nicely(a=7, y=8)».
  • Il tipo DynamicVector è stato rinominato in List ed è stato spostato nel modulo collections.list. È stata aggiunta la possibilità di creare una lista basata su 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'uscita finale. Ad esempio, l'esecuzione di print(«Hello», «Mojo», sep=», «, end=»!!!\n») porterà all'output «prints Hello, Mojo!!!».

Il progetto Mojo si sviluppa 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, mentre il sistema di tipi è simile a C/C++. Il progetto è presentato come un linguaggio di programmazione generico che espande le capacità del linguaggio Python con strumenti di programmazione di sistema, adatto a una vasta gamma di compiti e combinando la facilità d'uso per lo sviluppo di ricerca e creazione rapida di prototipi con l'idoneità per la creazione di prodotti finali ad alte prestazioni.

La semplicità è raggiunta grazie all'uso di una sintassi familiare del linguaggio Python, mentre la realizzazione di prodotti finiti è facilitata dalla possibilità di compilazione in codice macchina, meccanismi sicuri per la gestione della memoria e l'uso di risorse per l'accelerazione hardware dei calcoli. Per ottenere alte prestazioni, viene supportato il parallelismo dei calcoli sfruttando tutte le risorse hardware disponibili nei sistemi eterogenei, come GPU, acceleratori specializzati per il machine learning e istruzioni per processori vettoriali (SIMD). Nelle operazioni di calcolo intensive, il parallelismo e l'uso di tutte le risorse computazionali permettono di raggiungere prestazioni superiori alle applicazioni scritte in C/C++.

Il linguaggio supporta la tipizzazione statica e strumenti per una gestione sicura della memoria a basso livello, simili alle capacità del linguaggio Rust, come il monitoraggio del tempo di vita dei riferimenti e il controllo del prestito delle variabili (borrow checker). Allo stesso tempo, il linguaggio offre anche funzionalità per operazioni a basso livello, come la possibilità di accedere direttamente alla memoria in modalità unsafe utilizzando il tipo Pointer, invocare istruzioni SIMD specifiche o accedere 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 integra tecnologie moderne per l'ottimizzazione automatica, la memorizzazione nella cache e la compilazione distribuita. Il codice sorgente del linguaggio Mojo viene trasformato in codice intermedio a basso livello MLIR (Multi-Level Intermediate Representation), sviluppato dal progetto LLVM. Il compilatore consente di applicare vari backend compatibili con MLIR per la generazione di codice macchina.

Fonte: opennet.ru

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