A Mojo programozási nyelv fejlesztői elkezdték a projekt eredményeinek átadását nyílt forráskódú szoftvernek. Az első nyilvános a szabványos könyvtár kódja, amely mostantól Apache 2.0 licenc alatt érhető el, a GPLv2 licencel való keverési kivételekkel az LLVM projektből. A kód publikálásán túl a fejlesztési folyamat a nyitottság irányába mozdult el, és lehetőség nyílt harmadik fél által végzett módosítások beküldésére pull kérések formájában a GitHub-ra. A fordító forráskódját a belső architektúra tervezésének befejezése után tervezik megnyitni.
A repository-ban két ág készült a szabványos Mojo könyvtár kódjával: a main ág, amely a Mojo legutolsó stabil kiadásával van szinkronizálva, és a nightly ág, amely a jelenlegi fejlesztési folyamatot tükrözi és szinkronban van a Mojo éjszakai buildjeivel. A nightly ágat javasolják azoknak a résztvevőknek, akik szeretnének csatlakozni a fejlesztéshez, és megosztani a módosításaikat. Jelenleg a könyvtár egyes moduljai még nem nyitottak, de egy idő után a zárt kódot is át fogják helyezni nyílt repository-ra. Leginkább a gyorsan fejlődő modulok kódja marad zárva, amelyek további stabilizálást igényelnek, valamint azok a modulok, amelyeknek tervezett refaktorálásuk van, és azok a modulok, amelyek további felülvizsgálatot és átdolgozást igényelnek a tulajdonos projektek miatt.
Egy időben kiadták a Mojo SDK 24.2 eszközkészlet verziót, amely lehetővé teszi a projektek helyi rendszeren történő fordítását, és a MAX Engine 24.2 motor verziót, amely platformot kínál a gépi tanulás területén való fejlesztéshez. A Mojo SDK tartalmazza azokat a komponenseket, amelyek szükségesek a Mojo nyelvű alkalmazások fejlesztéséhez, beleértve a fordítót, a runtime-ot, egy interaktív REPL környezetet a programok összeállításához és futtatásához, a hibakeresőt, a Visual Studio Code (VS Code) szerkesztőhöz készült kiegészítőt, amely támogatja a kód autocompletion-t, a kódformázást és a szintaxis kiemelést, valamint egy modult a Jupyter-hez való integrációhoz a Mojo notebookok összeállításához és futtatásához. A MAX Engine kiegészíti az SDK-t a gépi tanulási modellek különböző formátumokban (TensorFlow, PyTorch, ONNX stb.) alkalmazásának fejlesztésére és hibakeresésére szánt eszközökkel. A Mojo SDK és a MAX Engine buildjei a Linux és macOS platformokra készültek.
A Mojo 24.2-es verzió legfontosabb változásai között:
- A struktúrák és egyéb névleges típusok mostantól implicit módon megfelelhetnek a típusoknak. Például bármely struktúra, amelyhez meg van valósítva a __str__() metódus, implicit módon megfelel a Stringable típusnak és használható a str() funkcióval.
- A Python kód kompatibilitásához szükséges eszközökben hozzáadva az argumentumok kulcsszavak alapján történő átadásának támogatása Python-funkciókhoz. Például: «plt.plot((5, 10), (10, 15), color=»red»)»
- Hozzáadva a változó számú argumentumok kulcsszavak alapján történő átadásának támogatása a funkcióba. Például: «print_nicely(a=7, y=8)».
- A DynamicVector típust List-re neveztek át és áthelyezték a collections.list modulba. Lehetővé vált listák létrehozása tetszőleges számú érték alapján, például: «var numbers = List[Int](1, 2, 3)».
- A print() függvényhez hozzáadva a sep és end nevű paramétereket, amelyeken keresztül megadhatók a választó és a végső kimeneti értékek. Például a print(«Hello», «Mojo», sep=», «, end=»!!!\n») végrehajtása «prints Hello, Mojo!!!» kimenetet eredményez.
A Mojo projekt Chris Lattner (Chris Lattner), az LLVM projekt alapítója és főépítésze, valamint a Swift programozási nyelv létrehozója irányítása alatt fejlődik. A Mojo szintaxisa a Python nyelven alapul, míg a típus rendszere közel áll a C/C++ nyelvekhez. A projektet általános célú nyelvként tüntetik fel, amely a Python nyelv rendszer programozási eszközeivel bővíti a lehetőségeket, széleskörű feladatokhoz alkalmas és ötvözi a kutatás során a könnyű használatot a gyors prototípus létrehozással a nagy teljesítményű végtermékek kialakításának lehetőségével.
A könnyűség a Python nyelv megszokott szintaxisának használatával érhető el, míg a végtermékek fejlesztését segíti a gépkódba való fordítás lehetősége, a memória biztonságos kezelésének mechanizmusai és a számítási teljesítmény hardveres gyorsítására szolgáló eszközök alkalmazása. A magas teljesítmény elérése érdekében a számítások párhuzamosítása támogatott, kihasználva a heterogén rendszerek, például a GPU, a gépi tanulásra specializált gyorsítók és a vektoriális processzor utasítások (SIMD) által rendelkezésre álló összes hardveres erőforrást. Intenzív számítási feladatok esetén a párhuzamosítás és az összes számítási erőforrás bevonása lehetővé teszi, hogy olyan teljesítményt érjünk el, amely felülmúlja a C/C++ alkalmazásokat.
A nyelv statikus típusú megközelítést és biztonságos alacsony szintű memóriahozzáférési eszközöket támogat, hasonlóan a Rust nyelv lehetőségeihez, mint például a hivatkozások élettartamának nyomon követése és a változók kölcsönzési ellenőrzése (borrow checker). Ugyanakkor a nyelv alacsony szintű munkára is lehetőséget ad, például közvetlen memóriahozzáférés biztonságos módon a Pointer típus használatával, egyes SIMD utasítások meghívása vagy hardveres kiterjesztésekhez való hozzáférés, mint a TensorCores és az AMX.
A Mojo használható JIT módban, értelmezéssel és lefordítható futtatható fájlokká (AOT, ahead-of-time) is. A fordítóba modern automatikus optimalizáló, gyorsítótárazási és elosztott fordítási technológiák vannak beépítve. A Mojo nyelven írt forráskód alacsony szintű köztes kóddá (MLIR - Multi-Level Intermediate Representation) alakul, amelyet az LLVM projekt fejleszt. A fordító lehetővé teszi különböző háttérszerverek alkalmazását a gépkód generálásához, amelyek támogatják az MLIR-t.
Forrás: opennet.ru
