Mojo programmeerimist keele arendajad on alustanud projekti arenduste ĂŒmberkujundamist avatud lĂ€htekoodiga tarkvaraks. Esimene avatud kood on standardteegi kood, mis on nĂŒĂŒd saadaval Apache 2.0 litsentsi alusel koos LLVM projekti eranditega, mis lubavad kokku segada GPLv2 litsentsi all olevate koodidega. Koodi avaldamise kĂ”rval on arendusprotsess liikunud suunas, kus on rohkem avatust ja vĂ”imalust edastada kolmandate osapoolte muudatusi, esitades GitHubis pull-pĂ€ringuid. Kompilaatori lĂ€htekood plaanitakse avada pĂ€rast sisemise arhitektuuri disaini lĂ”petamist.
Repositooriumis on loodud kaks haru Mojo standardteegi koodiga: haru main, mis on sĂŒnkroniseeritud Mojo viimase stabiilse vĂ€ljaandega, ja haru nightly, mis peegeldab praegust arendusprotsessi ning on sĂŒnkroniseeritud Mojo öiste kogumistega. Haru nightly on mĂ”eldud osalejatele, kes soovivad liituda arendusega ja jagada oma muudatusi. Sellegipoolest ei ole osa raamatukogust veel avatud, kuid mĂ”ne aja pĂ€rast plaanitakse ka ĂŒlejÀÀnud suletud kood viia avatud repositooriumisse. Peamiselt jÀÀb suletuks kiiresti arenevate moodulite kood, mis vajavad tĂ€iendavat stabiilsust, moodulite, mille jaoks on plaanitud refaktoreerimist ning moodulite, mis vajavad tĂ€iendavat lĂ€bivaatamist ja ĂŒmberkujundamist seoses omandiĂ”iguslike projektidega.
Samas vĂ€lja anti Mojo SDK 24.2 tööriistade vĂ€ljaanne, mis vĂ”imaldab projekte kohalikul sĂŒsteemil kompileerida, ja MAX Engine 24.2 mootori vĂ€ljaanne, mis pakub platvormi masinĂ”ppe arenduseks. Mojo SDK koosneb komponentidest, mis on vajalikud rakenduste arendamiseks Mojo keeles, sealhulgas kompilaator, runtime, interaktiivne REPL-keskkond programmide koostamiseks ja kĂ€itamiseks, tĂ”rkeotsingutööriist, tĂ€iendus Visual Studio Code (VS Code) redaktorile sisendi automaatse tĂ€iendamise, koodi vormindamise ja sĂŒntaksi esiletĂ”stmise toetamiseks, jne. MAX Engine tĂ€iendab SDK-d vahenditega rakenduste arendamiseks ja tĂ”rkeotsinguks, mis kasutavad masinĂ”ppe mudeleid erinevates formaatides (TensorFlow, PyTorch, ONNX jne). Mojo SDK ja MAX Engine kogumid on ette valmistatud Linuxi ja macOS-i platvormile.
Mojo 24.2 kÔige silmapaistvamad muudatused:
- Struktuurid ja muud nominaalsed tĂŒĂŒbid saavad nĂŒĂŒd kaudset vastavust tĂŒĂŒpidele. NĂ€iteks iga struktuur, millel on rakendatud meetod __str__(), vastab kaudselt tĂŒĂŒbile Stringable ja seda saab kasutada funktsiooniga str().
- Python-koodi ĂŒhilduvust tagavad vahendid on saanud toetuse sĂ”nasĂ”naliste parameetrite edastamiseks Pythonifunktsioonidesse. NĂ€iteks, âplt.plot((5, 10), (10, 15), color='red')â
- Toetatakse muutuva arvu parameetrite edastamist funktsioonile, kasutades sĂ”nasĂ”nalisi mÀÀramisi. NĂ€iteks, âprint_nicely(a=7, y=8)â.
- TĂŒĂŒp DynamicVector on ĂŒmber nimetatud Listiks ja viidud moodulisse collections.list. Lisatud on vĂ”imalus luua nimekiri suvalisest vÀÀrtuste arvust, nĂ€iteks âvar numbers = List[Int](1, 2, 3)â.
- Funktsioonile print() on lisatud nimelised parameetrid sep ja end, mille kaudu saab mÀÀrata eraldaja ja lĂ”ppvÀÀrtuse. NĂ€iteks kĂ€ivitamine print(âHelloâ, âMojoâ, sep=â, â, end=â!!!\nâ) annab vĂ€ljundi âprints Hello, Mojo!!!â.
Mojo projekt areneb Chris Lattneri juhtimisel, kes on LLVM projekti asutaja ja peaarhitekt ning programmeerimiskeele Swift looja. Mojo sĂŒntaks pĂ”hineb Pythonil ja tĂŒĂŒbisĂŒsteem sarnaneb C/C++-le. Projekti tutvustatakse kui ĂŒldotstarbelist keelt, mis laiendab Python keele vĂ”imalusi sĂŒsteemse programmeerimise vahenditega, olles sobiv laiale eesmĂ€rkide spektrile, ĂŒhendades uurimisprojektide ja prototĂŒĂŒpide kiire loomise lihtsuse, samuti kĂ”rgtehnoloogiliste lĂ”ppproduktide tootmise sobivuse.
Lihtsus saavutatakse tavalise Python'i sĂŒntaksi kasutamisega ning lĂ”ppproduktide arendamist toetavad vĂ”imalused, nagu masinkoodi kompileerimine, mĂ€lu turvalise töö mehhanismid ja riistvaralise arvutuse kiirendamise vahendite kasutamine. KĂ”rge jĂ”udluse saavutamiseks toetatakse arvutuste paralleelse protsessimise vĂ”imalust, rakendades kĂ”iki olemasolevaid riistvaramodelle, nagu GPU-d, spetsialiseeritud kiirendajad masinĂ”ppe jaoks ja vektoritöötluspunkti instruktsioonid (SIMD). Intensiivse arvutuse korral annab paralleelse töötlemise ja kĂ”igi arvutusressursside kaasamine vĂ”imaluse saavutada jĂ”udlust, mis ĂŒletab C/C++ rakenduste omadusi.
Keel toetab staatilist tĂŒpiseerimist ja turvaliste madala taseme mĂ€lu tööriistu, mis meenutavad Rust'i keele vĂ”imalusi, nagu viidete eluea jĂ€lgimine ja muutujate laenamise kontroll (borrow checker). Samuti on keeles olemas madala taseme töövĂ”imalused, nĂ€iteks otse mĂ€lu juurde pÀÀsemine unsafe-reĆŸiimis kasutada tĂŒĂŒpi Pointer, eraldi SIMD-instruktsioonide kutsumine vĂ”i juurdepÀÀs riistvaralistele laiendustele, nagu TensorCores ja AMX.
Mojo vĂ”ib olla kasutusel kas tĂ”lgendamise reĆŸiimis JIT'i kaudu vĂ”i kompileerimise jaoks tĂ€itmisfailide (AOT, ahead-of-time) loomiseks. Kompilaator sisaldab kaasaegseid automaatse optimeerimise, vahemĂ€lu ja jaotatud kompileerimise tehnoloogiaid. Mojo keeles kirjutatud lĂ€htekood muudetakse madala taseme vahepealseks koodiks MLIR (Multi-Level Intermediate Representation), mille vĂ€ljatöötamiseks on vastutav projekt LLVM. Kompilaator vĂ”imaldab kasutada mitmesuguseid tagaplaneeringuid, mis toetavad MLIR-i masina koodi genereerimise jaoks.
Allikas: opennet.ru
