Zhvilluesit e gjuhës së programimit Mojo filluan të transferojnë punën e projektit në kategorinë e softuerit të hapur. E para, kodi i bibliotekës standarde është bërë i hapur, i cili tani është në dispozicion nën licencën Apache 2.0 me përjashtime nga projekti LLVM, që lejojnë përzierjen me kodin nën licencën GPLv2. Përveç publikimit të kodit, procesi i zhvillimit është orientuar drejt transparencës dhe mundësisë për të bërë ndryshime nga të tretët përmes dërgimit të kërkesave për tërheqje në GitHub. Tekstet burimore të kompajlerit pritet të hapen pas përfundimit të projektimit të arkitekturës së brendshme.
Në depo janë krijuar dy degë me kodin e bibliotekës standarde Mojo: dega kryesore, e sinkronizuar me versionin e fundit stabil të Mojo, dhe dega nightly, që pasqyron procesin aktual të zhvillimit dhe është e sinkronizuar me ndërtimet nocturne të Mojo. Dega nightly propozohet të përdoret nga pjesëmarrësit që dëshirojnë të bashkohen me zhvillimin dhe të ndajnë ndryshimet e tyre. Megjithatë, disa module të bibliotekës ende nuk janë hapur, por pas një kohe, kodi që mbetet i mbyllur pritet të transferohet gjithashtu në depo të hapura. Në përgjithësi, kodi i moduleve që zhvillohen shpejt dhe kërkojnë stabilizim shtesë, moduleve që janë planifikuar për ristrukturim dhe moduleve që kërkojnë rishikim dhe ripunim për shkak të lidhjeve me projekte pronësore mbetet i mbyllur.
Në të njëjtën kohë është publikuar versioni 24.2 i mjetit zhvillues Mojo SDK, që lejon kompajtimin e projekteve në sistemin lokal, dhe versioni 24.2 i motorit MAX Engine, që ofron një platformë për zhvillime në fushën e mësimit automat. Mojo SDK përfshin komponentët e nevojshëm për zhvillimin e aplikacioneve në gjuhën Mojo, duke përfshirë kompajlerin, runtime, një ndërfaqe REPL interaktive për ndërtimin dhe ekzekutimin e programeve, një debugger, një shtesë për redaktorin e kodit Visual Studio Code (VS Code) me mbështetje për përfundimin automatik të hyrjes, formatimin e kodit dhe ndriçimin e sintaksës, një modul për integrimin me Jupyter për ndërtimin dhe ekzekutimin e notave Mojo. MAX Engine kompleton SDK-në me mjete për zhvillimin dhe rregullimin e aplikacioneve që përdorin modele të mësimit automat në formate të ndryshme (TensorFlow, PyTorch, ONNX, etj.). Ndërtimet e Mojo SDK dhe MAX Engine janë përgatitur për platformën Linux dhe macOS.
Disa nga ndryshimet më të dukshme në Mojo 24.2:
- Strukturat dhe llojet e tjera nominale tani mund të përputhen implicit me tiparët. Për shembull, çdo strukturë për të cilën është realizuar metoda __str__() implicit përputhet me tiparin Stringable dhe mund të përdoret me funksionin str().
- Në mënyrat për sigurimin e kompatibilitetit me kodin në gjuhën Python është shtuar mbështetje për kalimin e argumenteve bazuar në fjalë kyçe në funksionet Python. Për shembull, «plt.plot((5, 10), (10, 15), color=»red»)»
- ĂshtĂ« shtuar mbĂ«shtetje pĂ«r kalimin nĂ« funksion tĂ« numrit tĂ« ndryshueshĂ«m tĂ« argumenteve, tĂ« caktuara pĂ«rmes çelĂ«sit. PĂ«r shembull, «print_nicely(a=7, y=8)».
- Tipi DynamicVector Ă«shtĂ« ribĂ«rĂ« nĂ« List dhe Ă«shtĂ« zhvendosur nĂ« modulin collections.list. ĂshtĂ« shtuar mundĂ«sia pĂ«r tĂ« formuar njĂ« listĂ« bazuar nĂ« njĂ« numĂ«r tĂ« rastĂ«sishĂ«m vlerash, pĂ«r shembull, «var numbers = List[Int](1, 2, 3)».
- Në funksionin print() janë shtuar parametrat me emër sep dhe end, përmes të cilave mund të përcaktohen vlerat e ndarësit dhe të fundit të shtypjes. Për shembull, ekzekutimi print(«Hello», «Mojo», sep=», «, end=»!!!\n») do të sjellë si rezultat «prints Hello, Mojo!!!».
Projekti Mojo zhvillohet nën drejtimin e Chris Lattner, themeluesit dhe arkitektit kryesor të projektit LLVM, si dhe krijuesit të gjuhës së programimit Swift. Sintaksa e Mojo mbështetet në gjuhën Python, ndërsa sistemi i tipave është i afërt me C/C++. Projekti paraqitet si një gjuhë e qëllimshme, që zgjeron mundësitë e gjuhës Python me mjete për programimin sistemor, e përshtatshme për një gamë të gjerë detyrash, dhe që kombinon thjeshtësinë e përdorimit për zhvillimet hulumtuese dhe krijimin e shpejtë të prototipave me adaptueshmërinë për formimin e produkteve përfundimtare me performancë të lartë.
Thjeshtësia arrihet duke përdorur sintaksën e njohur të gjuhës Python, ndërsa zhvillimi i produkteve përfundimtare përfshin mundësinë e kompajlimit në kodin makinerik, mekanizmat për punën e sigurt me memorjen dhe aktivizimin e mjeteve për përshpejtimin harduerik të llogaritjeve. Për të arritur një performancë të lartë, mbështetet paralelizimi i llogaritjeve me angazhimin e të gjithë burimeve harduerike të disponueshme në sistemet heterogjene, si GPU-të, përshpejtuesit e specializuar për mësimin automat dhe komandat e procesorëve vektorialë (SIMD). Gjatë llogaritjeve intensive, paralelizimi dhe angazhimi i të gjithë burimeve të llogaritjes mundëson të arrihet një performancë që e tejkalon aplikacionet në C/C++.
Gjuha mbështet tipizimin statik dhe mjetet për një punë të sigurt në nivel të ulët me memorjen, duke kujtuar mundësitë e gjuhës Rust, siç janë gjurmimi i kohëzgjatjes së referencave dhe kontrolli i huazimit të variablave (borrow checker). Megjithatë, gjuhës i janë të disponueshme edhe mundësitë për punë në nivel të ulët, për shembull, është e mundur qasja e drejtpërdrejtë në memorje në modalitetin unsafe duke përdorur tipin Pointer, thirrja e instrukcioneve SIMD të veçanta ose qasja në zgjerimet harduerike, si TensorCores dhe AMX.
Mojo mund të përdoret si në modalitetin e interpretimit me JIT, ashtu edhe për kompilimin në skedarë ekzekutivë (AOT, ahead-of-time). Në kompilator janë të ndërtuara teknologji moderne për optimizimin automatike, caching dhe kompilim të shpërndarë. Kodi burimor në gjuhën Mojo shndërrohet në kodin e ulët të ndërmjetëm MLIR (Multi-Level Intermediate Representation), që zhvillohet nga projekti LLVM. Kompilatori lejon përdorimin e backend-eve të ndryshme për gjenerimin e kodit të makinës që mbështesin MLIR.
Burimi: opennet.ru
