Awọn olupilẹṣẹ ti ede siseto Mojo ti bẹrẹ iyipada awọn idagbasoke iṣẹ akanṣe sinu sọfitiwia orisun ṣiṣi. Ni akọkọ lati ṣii orisun ni koodu ikawe boṣewa, eyiti o wa ni bayi labẹ iwe-aṣẹ Apache 2.0 pẹlu awọn imukuro lati iṣẹ akanṣe LLVM ti o gba laaye idapọ pẹlu koodu labẹ iwe-aṣẹ GPLv2. Ni afikun si koodu titẹjade, ilana idagbasoke ti yipada si ṣiṣi ati agbara lati baraẹnisọrọ awọn ayipada ẹni-kẹta nipasẹ fifisilẹ awọn ibeere fa si GitHub. Awọn koodu orisun ti olupilẹṣẹ ti gbero lati ṣii lẹhin apẹrẹ ti faaji inu ti pari.
Ibi ipamọ naa ni awọn ẹka meji pẹlu koodu ikawe boṣewa Mojo: ẹka akọkọ, mimuuṣiṣẹpọ pẹlu itusilẹ iduroṣinṣin tuntun ti Mojo, ati ẹka alẹ, ti n ṣe afihan ilana idagbasoke lọwọlọwọ ati mimuuṣiṣẹpọ pẹlu awọn itumọ alẹ ti Mojo. Ẹka alẹ ni iwuri lati lo nipasẹ awọn olukopa ti o fẹ lati darapọ mọ idagbasoke ati pin awọn ayipada wọn. Ni akoko kanna, diẹ ninu awọn modulu ile-ikawe ko tii ṣii, ṣugbọn lẹhin igba diẹ koodu pipade ti o ku tun gbero lati gbe lọ si ibi ipamọ ṣiṣi. Awọn koodu ti awọn modulu idagbasoke ni kiakia ti o nilo imuduro afikun, awọn modulu fun eyiti a ṣe ipinnu atunṣe, ati awọn modulu ti o nilo atunyẹwo afikun ati atunṣe nitori awọn asopọ pẹlu awọn iṣẹ akanṣe ti o wa ni pipade.
Ní àkókò kan náà, a tẹ̀jáde ìtújáde Mojo SDK 24.2, èyí tí ó mú kí a kó àwọn iṣẹ́ àkànṣe jọ lórí ètò ìbílẹ̀ kan, àti ìtújáde MAX Engine 24.2, èyí tí ó fúnni ní ìpele fún ìdàgbàsókè ẹ̀kọ́ ẹ̀rọ, jáde. Mojo SDK ní àwọn èròjà tí ó yẹ fún ìdàgbàsókè àwọn ohun èlò nínú èdè Mojo, pẹ̀lú àkójọpọ̀, àkókò ìṣiṣẹ́, ikarahun REPL oníṣepọ̀ fún kíkọ́ àti ṣíṣiṣẹ́ àwọn ètò, àtúnṣe sí olóòtú kóòdù Visual Studio Code (VS Code) pẹ̀lú àtìlẹ́yìn fún ìparí àdáni, ìṣètò kóòdù àti ìṣàfihàn sísọ̀rọ̀, module fún ìṣọ̀kan pẹ̀lú Jupyter fún kíkọ́ àti ṣíṣiṣẹ́ àwọn ìwé àkọsílẹ̀ Mojo. MAX Engine ń fi àwọn irinṣẹ́ kún SDK pẹ̀lú àwọn irinṣẹ́ fún ṣíṣe àgbékalẹ̀ àti ṣíṣàtúnṣe àwọn ohun èlò tí ó lo àwọn àpẹẹrẹ ẹ̀kọ́ ẹ̀rọ ní onírúurú ọ̀nà (TensorFlow, PyTorch, ONNX, àti bẹ́ẹ̀ bẹ́ẹ̀ lọ). Àwọn ìkọ́lé Mojo SDK àti MAX Engine ni a ti múra sílẹ̀ fún ìpele náà. Linux и macOS.
Diẹ ninu awọn iyipada olokiki julọ ni Mojo 24.2 pẹlu:
- Awọn ọna ati awọn iru ipin miiran le ṣe maapu taara si awọn abuda. Fun apẹẹrẹ, eyikeyi igbekalẹ fun eyiti ọna __str__ () ti wa ni imuse taara ni ibaamu si Stringable abuda ati pe o le ṣee lo pẹlu iṣẹ str ().
- Awọn irinṣẹ Ibamu Python ti ṣafikun atilẹyin fun gbigbe awọn ariyanjiyan orisun-ọrọ si awọn iṣẹ Python. Fun apẹẹrẹ, "plt.plot ((5, 10), (10, 15), awọ = "pupa")"
- Atilẹyin ti a ṣafikun fun gbigbe nọmba oniyipada ti awọn ariyanjiyan si iṣẹ kan, pato nipasẹ iṣẹ iyansilẹ koko. Fun apẹẹrẹ, "print_nicely(a=7, y=8)".
- Iru DynamicVector ti ni lorukọmii si Akojọ ati gbe lọ si modules.list. Ṣe afikun agbara lati ṣe agbekalẹ atokọ kan ti o da lori nọmba lainidii ti awọn iye, fun apẹẹrẹ, “awọn nọmba var = Akojọ [Int] (1, 2, 3)”.
- Awọn paramita ti a npè ni sep ati ipari ni a ti ṣafikun si iṣẹ titẹjade (), nipasẹ eyiti o le ṣeto oluyapa ati awọn iye iṣelọpọ ipari. Fún àpẹrẹ, títẹ̀jáde ("Hello", "Mojo", sep=", ", end="!!!\n") yóò yọrí sí àbájáde "àwọn ìtẹ̀jáde Hello, Mojo!!!".
Ise agbese Mojo jẹ oludari nipasẹ Chris Lattner, oludasile ati ayaworan agba ti iṣẹ LLVM ati ẹlẹda ti ede siseto Swift. Sintasi Mojo da lori ede Python, ati pe iru eto wa nitosi C/C++. Ise agbese na ni a sọ gẹgẹbi ede idi-gbogbo ti o fa awọn agbara ti Python pẹlu awọn agbara siseto awọn ọna ṣiṣe, o dara fun awọn iṣẹ-ṣiṣe ti o pọju, ati pe o daapọ irọra ti lilo fun idagbasoke iwadi ati iṣeduro kiakia pẹlu ibamu fun awọn ọja ipari iṣẹ-giga.
Irọrun jẹ aṣeyọri nipasẹ lilo sintasi Python ti o mọ, ati idagbasoke awọn ọja ikẹhin jẹ irọrun nipasẹ agbara lati ṣajọ si koodu ẹrọ, awọn ilana aabo-iranti, ati lilo awọn irinṣẹ isare hardware. Lati ṣaṣeyọri iṣẹ ṣiṣe giga, isọdọkan ti awọn iṣiro jẹ atilẹyin ni lilo gbogbo awọn orisun ohun elo ti awọn ọna ṣiṣe oriṣiriṣi ti o wa ninu eto, gẹgẹbi awọn GPUs, awọn accelerators amọja fun ikẹkọ ẹrọ ati awọn ilana ero isise vector (SIMD). Fun awọn iṣiro to lekoko, parallelization ati iṣamulo ti gbogbo awọn orisun iširo jẹ ki o ṣee ṣe lati ṣaṣeyọri iṣẹ ti o ga ju awọn ohun elo C / C ++ lọ.
Ede naa ṣe atilẹyin titẹ aimi ati awọn ẹya iranti-ailewu ti ipele kekere ti o ṣe iranti ti Rust, gẹgẹbi itọka ipasẹ igbesi aye ati oluyẹwo yiya. Ni akoko kanna, ede naa tun pese awọn aye fun iṣẹ kekere, fun apẹẹrẹ, o ṣee ṣe lati wọle si iranti taara ni ipo ailewu nipa lilo iru ijuboluwole, pe awọn ilana SIMD kọọkan, tabi iwọle si awọn amugbooro ohun elo bii TensorCores ati AMX.
Mojo le ṣee lo mejeeji ni ipo itumọ nipa lilo JIT, ati fun akojọpọ sinu awọn faili ṣiṣe (AOT, niwaju-akoko). Olupilẹṣẹ naa ni awọn imọ-ẹrọ igbalode ti a ṣe sinu fun iṣapeye adaṣe, caching ati akojọpọ pinpin. Koodu orisun ni ede Mojo jẹ iyipada si koodu agbedemeji ipele kekere MLIR (Aṣoju agbedemeji Ipele pupọ), ti o dagbasoke nipasẹ iṣẹ akanṣe LLVM. Olupilẹṣẹ gba ọ laaye lati lo ọpọlọpọ awọn ẹhin ẹhin ti o ṣe atilẹyin MLIR lati ṣe agbekalẹ koodu ẹrọ.
orisun: opennet.ru
