کریس لاټنر، د LLVM بنسټ ایښودونکی او مشر معمار او د سویفټ پروګرامینګ ژبې جوړونکی، او ټیم ډیوس، چې پخوا د ګوګل د مصنوعي ذهانت پروژو لکه ټینسور فلو او JAX مشر و، د موجو په نوم یوه نوې پروګرامینګ ژبه پرانستله، چې د څیړنې او ګړندي پروټوټایپینګ لپاره د کارونې اسانتیا د لوړ فعالیت پای محصولاتو جوړولو لپاره مناسبیت سره یوځای کوي. دا د پایتون د پیژندل شوي ترکیب له لارې ترلاسه کیږي، پداسې حال کې چې وروستی د اصلي تالیف، د حافظې خوندیتوب میکانیزمونو، او هارډویر سرعت له لارې ترلاسه کیږي.
دا پروژه د ماشین زده کړې پراختیا باندې تمرکز کوي، مګر د عمومي هدف ژبې په توګه هم وړاندې کیږي چې پایتون د سیسټمونو پروګرام کولو وړتیاو سره پراخوي او د پراخو دندو لپاره مناسبه ده. د مثال په توګه، ژبه د لوړ فعالیت کمپیوټري او ډیټا پروسس کولو او بدلون په څیر برخو کې د تطبیق وړ ده. د موجو یوه په زړه پورې ځانګړتیا د کوډ فایلونو لپاره د توسیع په توګه د ایموجي سمبول "🔥" مشخص کولو وړتیا ده (د مثال په توګه، "helloworld.🔥")، د متن توسیع ".mojo" سربیره.
ژبه اوس مهال د ژورې پراختیا په حال کې ده، او یوازې یو آنلاین انٹرفیس د ازموینې لپاره شتون لري. په محلي سیسټمونو کې د چلولو لپاره د خپلواکو ودانیو ژمنه شوې چې وروسته به د متقابل ویب چاپیریال په اړه د فیډبیک ترلاسه کولو وروسته خپاره شي. د کمپیلر، JIT، او نورو اړوندو پرمختګونو لپاره د سرچینې کوډ پلان شوی چې د داخلي جوړښت بشپړیدو وروسته خلاص سرچینه شي (د کاري پروټوټایپ لپاره د تړلو دروازو پراختیا ماډل د LLVM، Clang، او Swift د لومړني پراختیا مرحلې یادونه کوي). څرنګه چې د موجو ترکیب د پایتون پر بنسټ والړ دی، او د هغې ډول سیسټم C/C++ ته ورته دی، راتلونکي پلانونو کې د موجوده C/C++ او پایتون پروژو مهاجرت ساده کولو لپاره د وسیلو پراختیا شامله ده، او همدارنګه د پایتون او موجو کوډ سره یوځای کولو هایبرډ پروژو پراختیا اسانه کول شامل دي.
دا پروژه د محاسبې لپاره د متفاوت سیسټمونو موجوده هارډویر سرچینو څخه ګټه پورته کولو لپاره ډیزاین شوې ده. د مثال په توګه، GPUs، ځانګړي ماشین زده کړې سرعت کونکي، او واحد لارښوونې ویکتور پروسس کونکي (SIMD) د موجو غوښتنلیکونو چلولو او د محاسبې موازي کولو لپاره کارول کیدی شي. د اصلاح کولو لپاره د موجوده CPython باندې تکیه کولو پرځای، د جلا پایتون فرعي سیټ رامینځته کولو لپاره ذکر شوي دلیلونه په تالیف تمرکز، د سیسټمونو پروګرام کولو وړتیاو ادغام، او د بنسټیز ډول مختلف داخلي جوړښت کارول شامل دي چې په GPUs او مختلف هارډویر سرعت کونکو کې د کوډ اجرا کولو توان ورکوي. په ورته وخت کې، د موجو پراختیا کونکي اراده لري چې د CPython سره مطابقت وساتي څومره چې امکان ولري.
موجو په JIT (یوازې په وخت کې) او مخکې له مخکې (AOT) حالت کې کارول کیدی شي. کمپیلر د اتوماتیک اصلاح کولو، کیش کولو، او ویشل شوي تالیف لپاره عصري ټیکنالوژي شاملوي. د موجو سرچینې کوډ د ټیټې کچې منځګړیتوب کوډ (MLIR) ته بدل شوی، چې د LLVM پروژې لخوا رامینځته شوی او د ډیټا فلو ګراف پروسس کولو اصلاح کولو لپاره اضافي وړتیاوې وړاندې کوي. کمپیلر د ماشین کوډ تولید لپاره د MLIR فعال شوي مختلف بیک اینډونو ملاتړ کوي.
د اضافي هارډویر سرعت څخه ګټه پورته کول د شدید محاسبو لپاره د فعالیت لاسته راوړنې فعالوي چې د C/C++ غوښتنلیکونو څخه ډیر دي. د مثال په توګه، کله چې د منډیلبروټ سیټ نسل غوښتنلیک ازموینه کوله، تالیف شوی موجو غوښتنلیک (r7iz.metal-16xl) د AWS کلاوډ کې د چلولو پرمهال د C++ پلي کولو په پرتله 6 ځله ګړندی و (0.03 ثانیې په مقابل کې 0.20 ثانیې)، د معیاري CPython 3.10.9 (0.03 ثانیې په مقابل کې 1027 ثانیې) کارولو پرمهال د پایتون غوښتنلیک څخه 35 ځله ګړندی و، او د PYPY کارولو پرمهال 1500 ځله ګړندی و (0.03 ثانیې په مقابل کې 46.1 ثانیې).
کله چې د ماشین زده کړې فعالیت ارزونه کوئ، د ماډلر انفرنس انجن AI سټیک، چې په موجو کې لیکل شوی، د ژبې ماډل پروسس کولو پرمهال د انټل پروسیسر کې 3 ځله ګړندی و، د سپارښتنې ماډل چلولو پرمهال 6.4 ځله ګړندی و، او د ټینسر فلو پر بنسټ حل په پرتله د بصري معلوماتو پروسس کولو ماډلونو چلولو پرمهال 2.1 ځله ګړندی و. په AMD پروسیسرونو کې، موجو د فعالیت 3.2x، 5x، او 2.2x لاسته راوړنې ترلاسه کړې، پداسې حال کې چې په ARM پروسیسرونو کې، دا د فعالیت 5.3x، 7.5x، او 1.7x لاسته راوړنې ترلاسه کړې. د PyTorch پر بنسټ حل د انټل CPUs کې د Mojo څخه 1.4x، 1.1x، او 1.5x، په AMD CPUs کې 2.1x، 1.2x، او 1.5x، او په ARM CPUs کې 4x، 4.3x، او 1.3x وروسته پاتې و.

دا ژبه د جامد ټایپ کولو او د ټیټې کچې حافظې خوندیتوب ځانګړتیاو ملاتړ کوي چې د رسټ یادونه کوي، لکه د حوالې ژوند تعقیب او د پور چیکر. د پوائنټر خوندیتوب ځانګړتیاو سربیره، ژبه د ټیټې کچې وړتیاوې هم وړاندې کوي، لکه د پوائنټر ډول په کارولو سره په غیر خوندي حالت کې د حافظې مستقیم لاسرسی، د انفرادي SIMD لارښوونو غوښتنه کول، او د هارډویر توسیعونو لکه TensorCores او AMX ته لاسرسی.

د ټولو متغیرونو لپاره د واضح تعریف شوي ډولونو سره د دندو لپاره د کلاسیک او مطلوب پایتون کوډ جلا کول ساده کولو لپاره، دا وړاندیز کیږي چې د "def" پرځای جلا "fn" کلیمه وکاروئ. په ورته ډول، د ټولګیو لپاره، که چیرې د تالیف په وخت کې په حافظه کې د جامد معلوماتو بسته کول اړین وي (لکه څنګه چې په C کې)، د "struct" ډول د "class" پرځای کارول کیدی شي. د C/C++ ماډلونو ساده واردول هم ممکن دي. د مثال په توګه، د ریاضي کتابتون څخه د cos فعالیت واردولو لپاره، تاسو کولی شئ "from "math.h" import cos" مشخص کړئ.
سرچینه: opennet.ru
