Chris Lattner, mwanzilishi na mbunifu mkuu wa LLVM na muundaji wa lugha ya programu ya Swift, na Tim Davis, aliyekuwa mkuu wa miradi ya Google ya AI kama vile Tensorflow na JAX, alizindua lugha mpya ya programu, Mojo, ambayo inachanganya urahisi wa kutumia kwa utafiti na prototyping haraka na kufaa kwa kujenga bidhaa za mwisho za utendaji wa juu. Hii inafanikiwa kupitia sintaksia inayojulikana ya Python, ilhali ya pili inafanikiwa kupitia mkusanyiko asilia, mifumo ya usalama wa kumbukumbu, na kuongeza kasi ya maunzi.
Mradi huu unaangazia ukuzaji wa ujifunzaji wa mashine, lakini pia unawasilishwa kama lugha ya kusudi la jumla inayopanua Python na uwezo wa kupanga mifumo na inafaa kwa kazi nyingi. Kwa mfano, lugha inatumika kwa maeneo kama vile utendakazi wa juu wa kompyuta na usindikaji na ubadilishaji data. Kipengele cha kuvutia cha Mojo ni uwezo wa kubainisha alama ya emoji "🔥" kama kiendelezi cha faili za msimbo (k.m., "helloworld.🔥"), pamoja na kiendelezi cha maandishi ".mojo."
Lugha kwa sasa inaendelezwa sana, na ni kiolesura cha mtandaoni pekee kinachopatikana kwa majaribio. Miundo inayojitegemea inayoendeshwa kwenye mifumo ya ndani imeahidiwa kuchapishwa baadaye, baada ya kupokea maoni kuhusu mazingira shirikishi ya wavuti. Msimbo wa chanzo wa mkusanyaji, JIT, na maendeleo mengine yanayohusiana yamepangwa kuwa wazi baada ya usanifu wa ndani kukamilika (mfano wa ukuzaji wa milango iliyofungwa kwa mfano wa kufanya kazi unakumbusha awamu ya awali ya maendeleo ya LLVM, Clang, na Swift). Kwa kuwa syntax ya Mojo inategemea Python, na mfumo wa aina yake ni sawa na C/C++, mipango ya siku zijazo ni pamoja na kutengeneza zana ili kurahisisha uhamishaji wa miradi iliyopo ya C/C++ na Python hadi Mojo, na pia kuwezesha maendeleo ya miradi mseto inayochanganya chatu na msimbo wa Mojo.
Mradi umeundwa ili kuongeza rasilimali za maunzi zilizopo za mifumo tofauti tofauti kwa kukokotoa. Kwa mfano, GPU, vichapuzi maalum vya kujifunza kwa mashine, na vichakataji vya vekta ya maagizo moja (SIMD) vinaweza kutumika kuendesha programu za Mojo na kusawazisha hesabu. Sababu zilizotajwa za kuunda kitengo tofauti cha Python, badala ya kutegemea CPython iliyopo kwa utoshelezaji, ni pamoja na kuzingatia ujumuishaji, ujumuishaji wa uwezo wa upangaji wa mifumo, na utumiaji wa usanifu tofauti wa ndani ambao unawezesha utekelezaji wa nambari kwenye GPU na vichapuzi anuwai vya vifaa. Wakati huo huo, watengenezaji wa Mojo wanakusudia kudumisha utangamano na CPython iwezekanavyo.
Mojo inaweza kutumika katika hali ya JIT (kwa wakati) na kabla ya wakati (AOT). Kikusanyaji kinajumuisha teknolojia za kisasa za uboreshaji kiotomatiki, kache, na mkusanyiko uliosambazwa. Msimbo wa chanzo cha Mojo hubadilishwa kuwa msimbo wa kiwango cha chini wa kati (MLIR), uliotengenezwa na mradi wa LLVM na kutoa uwezo wa ziada wa kuboresha uchakataji wa grafu ya mtiririko wa data. Mkusanyaji huunga mkono viambajengo vingi vya nyuma vilivyowezeshwa na MLIR kwa utengenezaji wa msimbo wa mashine.
Uongezaji kasi wa ziada wa maunzi huwezesha faida za utendakazi kwa ukokotoaji wa kina unaozidi ule wa programu za C/C++. Kwa mfano, wakati wa kujaribu programu ya kutengeneza seti ya Mandelbrot, programu iliyokusanywa ya Mojo (r7iz.metal-16xl) ilikuwa kasi mara 6 kuliko utekelezaji wa C++ inapoendeshwa katika wingu la AWS (sekunde 0.03 dhidi ya 0.20), mara 35,000 zaidi ya programu ya Python wakati wa kutumia 90.0. 1027 sek.), na mara 1500 kwa kasi zaidi unapotumia PYPY (sekunde 0.03 dhidi ya sekunde 46.1).
Wakati wa kutathmini utendakazi wa mashine ya kujifunza, rafu ya Modular Inference Engine AI, iliyoandikwa kwa Mojo, ilikuwa kasi 3x kwenye kichakataji cha Intel wakati inachakata muundo wa lugha, mara 6.4 kwa kasi wakati wa kutumia muundo wa pendekezo, na kasi 2.1x wakati wa kuendesha miundo ya uchakataji wa taarifa inayoonekana ikilinganishwa na suluhu inayotegemea TensorFlow. Kwenye vichakataji vya AMD, Mojo ilipata faida za utendakazi 3.2x, 5x, na 2.2x, huku kwenye vichakataji vya ARM, ilipata faida za utendakazi za 5.3x, 7.5x na 1.7x. Suluhisho la msingi wa PyTorch lilibaki nyuma ya Mojo kwa 1.4x, 1.1x, na 1.5x kwenye Intel CPUs, 2.1x, 1.2x, na 1.5x kwenye CPU za AMD, na 4x, 4.3x, na 1.3x kwenye CPU za ARM.

Lugha hii inaauni uchapaji tuli na vipengele vya usalama vya kiwango cha chini vya usalama vinavyofanana na Rust, kama vile ufuatiliaji wa muda wa marejeleo na kikagua kukopa. Mbali na vipengele vya usalama vya vielelezo, lugha pia inatoa uwezo wa kiwango cha chini, kama vile ufikiaji wa kumbukumbu ya moja kwa moja katika hali isiyo salama kwa kutumia aina ya Pointer, kutumia maagizo ya mtu binafsi ya SIMD, na kufikia viendelezi vya maunzi kama vile TensorCores na AMX.

Ili kurahisisha utenganisho wa msimbo wa Python wa kawaida na ulioboreshwa kwa vitendakazi vilivyo na aina zilizobainishwa wazi kwa anuwai zote, inapendekezwa kutumia neno kuu la "fn" tofauti badala ya "def." Vile vile, kwa madarasa, ikiwa upakiaji wa data tuli katika kumbukumbu unahitajika wakati wa kukusanya (kama katika C), aina ya "muundo" inaweza kutumika badala ya "darasa." Uagizaji rahisi wa moduli za C/C++ pia inawezekana. Kwa mfano, ili kuleta kitendakazi cha cos kutoka kwa maktaba ya hisabati, unaweza kubainisha "kutoka "math.h" import cos."
Chanzo: opennet.ru
