ڪرس ليٽنر، LLVM جو باني ۽ چيف آرڪيٽيڪٽ ۽ سوئفٽ پروگرامنگ ٻولي جو خالق، ۽ ٽم ڊيوس، جيڪو اڳ ۾ گوگل جي AI منصوبن جهڙوڪ Tensorflow ۽ JAX جو سربراهه هو، هڪ نئين پروگرامنگ ٻولي، Mojo کي متعارف ڪرايو، جيڪا تحقيق لاءِ استعمال جي آساني ۽ تيز پروٽوٽائپنگ کي اعليٰ ڪارڪردگي واري آخري شين جي تعمير لاءِ موزونيت سان گڏ ڪري ٿي. اهو پٿون جي واقف نحو ذريعي حاصل ڪيو ويندو آهي، جڏهن ته بعد ۾ مقامي ڪمپليشن، ياداشت جي حفاظت جي ميڪانيزم، ۽ هارڊويئر ايڪسلريشن ذريعي حاصل ڪيو ويندو آهي.
هي منصوبو مشين لرننگ ڊولپمينٽ تي ڌيان ڏئي ٿو، پر ان کي هڪ عام مقصد واري ٻولي طور پڻ پيش ڪيو ويو آهي جيڪا پٿون کي سسٽم پروگرامنگ صلاحيتن سان وڌائي ٿي ۽ ڪمن جي وسيع رينج لاءِ موزون آهي. مثال طور، ٻولي اعليٰ ڪارڪردگي واري ڪمپيوٽنگ ۽ ڊيٽا پروسيسنگ ۽ ٽرانسفارميشن جهڙن علائقن تي لاڳو ٿئي ٿي. موجو جي هڪ دلچسپ خصوصيت ٽيڪسٽ ايڪسٽينشن ".mojo" کان علاوه، ڪوڊ فائلن (مثال طور، "helloworld.🔥") لاءِ ايڪسٽينشن جي طور تي ايموجي علامت "🔥" کي بيان ڪرڻ جي صلاحيت آهي.
ٻولي هن وقت سخت ترقي هيٺ آهي، ۽ صرف هڪ آن لائن انٽرفيس ٽيسٽنگ لاءِ موجود آهي. مقامي سسٽم تي هلائڻ لاءِ اسٽينڊلون بلڊز کي بعد ۾ شايع ڪرڻ جو واعدو ڪيو ويو آهي، انٽرايڪٽو ويب ماحول تي موٽ حاصل ڪرڻ کان پوءِ. ڪمپائلر، 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 سيڪنڊ).
مشين لرننگ ڪارڪردگي جو جائزو وٺڻ وقت، موجو ۾ لکيل ماڊيولر انفرنس انجن اي آءِ اسٽيڪ، هڪ ٻولي ماڊل کي پروسيس ڪرڻ وقت انٽيل پروسيسر تي 3 ڀيرا تيز هو، سفارش ماڊل هلائڻ وقت 6.4 ڀيرا تيز هو، ۽ ٽينسر فلو تي ٻڌل حل جي مقابلي ۾ بصري معلومات پروسيسنگ ماڊل هلائڻ وقت 2.1 ڀيرا تيز هو. AMD پروسيسرز تي، موجو 3.2x، 5x، ۽ 2.2x ڪارڪردگي حاصل ڪئي، جڏهن ته ARM پروسيسرز تي، ان 5.3x، 7.5x، ۽ 1.7x ڪارڪردگي حاصل ڪئي. PyTorch تي ٻڌل حل انٽيل سي پي يوز تي موجو کان 1.4x، 1.1x، ۽ 1.5x، AMD سي پي يوز تي 2.1x، 1.2x، ۽ 1.5x، ۽ ARM سي پي يوز تي 4x، 4.3x، ۽ 1.3x پوئتي هو.

ٻولي جامد ٽائيپنگ ۽ رسٽ جي ياد ڏياريندڙ گهٽ سطح جي ياداشت جي حفاظت جي خاصيتن کي سپورٽ ڪري ٿي، جهڙوڪ ريفرنس لائف ٽائيم ٽريڪنگ ۽ هڪ بورو چيڪر. پوائنٽر حفاظت جي خاصيتن کان علاوه، ٻولي گهٽ سطح جون صلاحيتون پڻ پيش ڪري ٿي، جهڙوڪ پوائنٽر قسم استعمال ڪندي غير محفوظ موڊ ۾ سڌي ياداشت جي رسائي، انفرادي SIMD هدايتون طلب ڪرڻ، ۽ هارڊويئر ايڪسٽينشن جهڙوڪ ٽينسر ڪور ۽ AMX تائين رسائي.

سڀني متغيرن لاءِ واضح طور تي بيان ڪيل قسمن سان فنڪشن لاءِ ڪلاسڪ ۽ آپٽمائزڊ پٿون ڪوڊ جي الڳ ٿيڻ کي آسان بڻائڻ لاءِ، "def" جي بدران هڪ الڳ "fn" ڪي ورڊ استعمال ڪرڻ جي تجويز آهي. ساڳئي طرح، ڪلاسن لاءِ، جيڪڏهن ڪمپائل وقت تي ميموري ۾ جامد ڊيٽا پيڪنگ جي ضرورت هجي (جيئن C ۾)، ته "ڪلاس" جي بدران "struct" قسم استعمال ڪري سگهجي ٿو. C/C++ ماڊلز جي سادي درآمد پڻ ممڪن آهي. مثال طور، رياضي لائبريري مان cos فنڪشن درآمد ڪرڻ لاءِ، توهان "math.h" درآمد cos مان" بيان ڪري سگهو ٿا.
جو ذريعو: opennet.ru
