Vývojári programovacieho jazyka Mojo začali konvertovať vývoj projektu na open source softvér. Ako prvý bol otvorený kód štandardnej knižnice, ktorý je teraz dostupný pod licenciou Apache 2.0 s výnimkami z projektu LLVM, ktoré umožňujú miešanie s kódom pod licenciou GPLv2. Okrem publikovania kódu sa vývojový proces posunul smerom k otvorenosti a schopnosti komunikovať zmeny tretích strán prostredníctvom odosielania žiadostí o stiahnutie na GitHub. Otvorenie zdrojového kódu kompilátora sa plánuje po dokončení návrhu vnútornej architektúry.
Úložisko má dve vetvy so štandardným kódom knižnice Mojo: hlavnú vetvu, synchronizovanú s najnovším stabilným vydaním Mojo, a nočnú vetvu, ktorá odráža aktuálny vývojový proces a je synchronizovaná s nočnými zostavami Mojo. Odporúčame, aby nočnú pobočku využívali účastníci, ktorí sa chcú zapojiť do vývoja a zdieľať svoje zmeny. Zároveň niektoré moduly knižnice ešte nie sú otvorené, ale po určitom čase sa plánuje aj presun zostávajúceho uzavretého kódu do otvoreného úložiska. Kód rýchlo sa rozvíjajúcich modulov, ktoré vyžadujú dodatočnú stabilizáciu, modulov, pre ktoré sa plánuje refaktoring, a modulov, ktoré si vyžadujú dodatočnú kontrolu a prepracovanie z dôvodu prepojenia s proprietárnymi projektmi, zostáva uzavretý.
Súčasne bola vydaná verzia Mojo SDK 24.2, ktorá umožňuje kompiláciu projektov na lokálnom systéme, a verzia MAX Engine 24.2, ktorá ponúka platformu pre vývoj strojového učenia. Mojo SDK obsahuje komponenty potrebné na vývoj aplikácií v jazyku Mojo vrátane kompilátora, runtime prostredia, interaktívneho REPL shellu na vytváranie a spúšťanie programov, debuggeru, doplnku pre editor kódu Visual Studio Code (VS Code) s podporou automatického dopĺňania vstupu, formátovania kódu a zvýrazňovania syntaxe, modulu pre integráciu s Jupyterom na vytváranie a spúšťanie Mojo notebookov. MAX Engine dopĺňa SDK o nástroje na vývoj a ladenie aplikácií, ktoré používajú modely strojového učenia v rôznych formátoch (TensorFlow, PyTorch, ONNX atď.). Pre platformu sú pripravené zostavenia Mojo SDK a MAX Engine. Linux и macOS.
Niektoré z najvýznamnejších zmien v Mojo 24.2 zahŕňajú:
- Štruktúry a iné nominálne typy sa teraz môžu implicitne priradiť k vlastnostiam. Napríklad každá štruktúra, pre ktorú je implementovaná metóda __str__() implicitne zodpovedá vlastnosti Stringable a možno ju použiť s funkciou str().
- Nástroje pre kompatibilitu Pythonu pridali podporu pre odovzdávanie argumentov založených na kľúčových slovách do funkcií Pythonu. Napríklad "plt.plot((5, 10), (10, 15), color="red")"
- Pridaná podpora pre odovzdávanie premenlivého počtu argumentov do funkcie, špecifikovaných prostredníctvom priradenia kľúčových slov. Napríklad "print_pekne (a=7, y=8)".
- Typ DynamicVector bol premenovaný na List a presunutý do modulu collections.list. Pridaná možnosť generovať zoznam na základe ľubovoľného počtu hodnôt, napríklad „čísla var = List[Int](1, 2, 3)“.
- Do funkcie print() pribudli pomenované parametre sep a end, prostredníctvom ktorých môžete nastaviť oddeľovač a výsledné výstupné hodnoty. Napríklad vykonanie print("Ahoj", "Mojo", sep=", ", end="!!!\n") bude mať za následok výstup "vytlačí Ahoj, Mojo!!!".
Projekt Mojo vedie Chris Lattner, zakladateľ a hlavný architekt projektu LLVM a tvorca programovacieho jazyka Swift. Syntax Mojo je založená na jazyku Python a typový systém je blízky C/C++. Projekt je prezentovaný ako univerzálny jazyk, ktorý rozširuje možnosti Pythonu o možnosti systémového programovania, je vhodný pre širokú škálu úloh a spája jednoduché použitie pre výskumný vývoj a rýchle prototypovanie s vhodnosťou pre vysokovýkonné koncové produkty.
Jednoduchosť je dosiahnutá použitím známej syntaxe Pythonu a vývoj finálnych produktov je uľahčený schopnosťou kompilácie do strojového kódu, pamäťovo bezpečnými mechanizmami a použitím nástrojov na hardvérovú akceleráciu. Na dosiahnutie vysokého výkonu je podporovaná paralelizácia výpočtov s využitím všetkých hardvérových prostriedkov heterogénnych systémov dostupných v systéme, ako sú GPU, špecializované akcelerátory pre strojové učenie a inštrukcie vektorového procesora (SIMD). Pri intenzívnych výpočtoch umožňuje paralelizácia a využitie všetkých výpočtových zdrojov dosiahnuť výkon lepší ako aplikácie v C/C++.
Jazyk podporuje statické písanie a nízkoúrovňové funkcie pamäťovej bezpečnosti pripomínajúce Rust, ako je sledovanie životnosti odkazov a kontrola výpožičiek. Jazyk zároveň poskytuje aj možnosti pre prácu na nízkej úrovni, napríklad je možné priamo pristupovať k pamäti v nebezpečnom režime pomocou typu Pointer, volať jednotlivé SIMD inštrukcie alebo pristupovať k hardvérovým rozšíreniam ako TensorCores a AMX.
Mojo je možné použiť ako v režime interpretácie pomocou JIT, tak aj na kompiláciu do spustiteľných súborov (AOT, predčasne). Kompilátor má zabudované moderné technológie pre automatickú optimalizáciu, ukladanie do vyrovnávacej pamäte a distribuovanú kompiláciu. Zdrojový kód v jazyku Mojo je konvertovaný na nízkoúrovňový stredný kód MLIR (Multi-Level Intermediate Representation), vyvinutý v rámci projektu LLVM. Kompilátor vám umožňuje použiť rôzne backendy, ktoré podporujú MLIR na generovanie strojového kódu.
Zdroj: opennet.ru
