إطلاق لغة البرمجة Mojo 24.3

تم نشر إصدار لمجموعة أدوات لغة البرمجة Mojo 24.3، مما يسمح لك بتجميع المشاريع على النظام المحلي. يتضمن المكونات اللازمة لتطوير التطبيقات بلغة Mojo، بما في ذلك المترجم ووقت التشغيل وقشرة REPL التفاعلية لبناء البرامج وتشغيلها ومصحح الأخطاء ووظيفة إضافية لمحرر التعليمات البرمجية لـ Visual Studio Code (VS Code) مع دعم لإكمال الإدخال وتنسيق التعليمات البرمجية وإبراز بناء الجملة، ووحدة للتكامل مع Jupyter لإنشاء دفتر ملاحظات Mojo وتشغيله. مكتبة Mojo القياسية مفتوحة المصدر بموجب ترخيص Apache 2.0، مع استثناءات من مشروع LLVM التي تسمح بالخلط مع التعليمات البرمجية المرخصة بموجب GPLv2. ومن المقرر أن يتم فتح الكود المصدري للمترجم بعد اكتمال تصميم البنية الداخلية.

وفي الوقت نفسه، تم إطلاق إصدار MAX Engine 24.3، الذي يوفر منصة للتطوير في مجال التعلم الآلي. يكمل MAX Engine مجموعة أدوات Mojo بأدوات لتطوير وتصحيح التطبيقات التي تستخدم نماذج التعلم الآلي بتنسيقات مختلفة (TensorFlow، وPyTorch، وONNX، وما إلى ذلك). تم إعداد إصدارات Mojo SDK وMAX Engine لمنصات Linux وmacOS.

تتضمن التغييرات في Mojo 24.3 ما يلي:

  • تم تحديث وحدات العمل مع المجموعات (List وDict وSet وTuple) بميزات تجعلها أكثر دراية للمستخدمين المطلعين على لغة برمجة Python. تمت إضافة طرق إلى نوع القائمة التي تكرر واجهة برمجة تطبيقات Python، مثل pop(index)، وresize(new_size)، وinsert(index, value).
  • تمت إضافة طريقة update() إلى نوع Dict لتحديث مفتاح/قيمة من Dict آخر.
  • يدعم نوع Tuple أنواع الذاكرة فقط مثل String، مما يسمح لك بتحديد "x = tup[1]" بدلاً من "x = tup.get[1, Int]()" وتعيين القيم عبر "tup[1" ] = س".
  • يوفر نوع المجموعة دعمًا للطرق المُسماة التي يمكن استخدامها بدلاً من عوامل التشغيل: Difference() بدلاً من "-"، Difference_update() بدلاً من "-="، intersection_update() بدلاً من "&=" وupdate() بدلاً من "|=".
  • تمت إضافة الدالة المعكوسة () التي تسمح لك بعكس ترتيب العناصر. يمكن استخدام الدالة المعكوسة () مع القائمة والإملاء وأي نوع يدعم النطاقات. أرقام فار = قائمة (1، 2، 3، 4، 5) للرقم في الاتجاه المعاكس (الأرقام): طباعة (رقم)
  • تم تنفيذ سمة Boolable التي تُرجع True للمتغيرات من الأنواع Dict وList وSet إذا كانت تحتوي على عنصر واحد على الأقل.
  • تحسين الدعم للوسائط المتغيرة. من الممكن تعريف الوظائف التي تحتوي على وسائط اختيارية ومتغيرة. fn variadic_arg_after_default( a: Int, b: Int = 3, *args: Int, c: Int, d: Int = 1, **kwargs: Int ): …
  • تمت إضافة وظائف __source_location() و __call_location() لتحديد الموقع (رقم السطر في الكود المصدري) لاستدعاءات الوظائف والتعليمات البرمجية.
  • كما هو الحال في لغة بايثون، تمت إضافة دعم الوسيطة "من أين" إلى الأسلوب FileHandle.seek().
  • تمت إعادة تسمية نوع AnyPointer إلى UnsafePointer. تمت إضافة القدرة على تهيئة UnsafePointer مباشرةً من مرجع بالنوع المرجعي ("UnsafePointer(someRef)"). للعمل مع مؤشرات UnsafePointer، تمت إضافة الوظائف virtualize_pointee_copy وinitize_pointee_move وmove_from_pointee() وmove_pointee.

يتم تطوير لغة Mojo تحت قيادة كريس لاتنر، المؤسس والمهندس الرئيسي لمشروع LLVM ومبتكر لغة البرمجة Swift. يعتمد بناء جملة Mojo على لغة Python، ونظام الكتابة قريب من C/C++. يوصف المشروع بأنه لغة للأغراض العامة تعمل على توسيع قدرات بايثون مع قدرات برمجة الأنظمة، وهي مناسبة لمجموعة واسعة من المهام، وتجمع بين سهولة الاستخدام لتطوير الأبحاث والنماذج الأولية السريعة مع ملاءمة المنتجات النهائية عالية الأداء.

يتم تحقيق البساطة من خلال استخدام بناء جملة Python المألوف، ويتم تسهيل تطوير المنتجات النهائية من خلال القدرة على الترجمة إلى كود الآلة، وآليات آمنة للذاكرة، واستخدام أدوات تسريع الأجهزة. لتحقيق أداء عالٍ، يتم دعم توازي العمليات الحسابية باستخدام جميع موارد الأجهزة للأنظمة غير المتجانسة المتوفرة في النظام، مثل وحدات معالجة الرسومات والمسرعات المتخصصة للتعلم الآلي وتعليمات معالج المتجهات (SIMD). بالنسبة للحسابات المكثفة، فإن الموازاة والاستفادة من جميع موارد الحوسبة تجعل من الممكن تحقيق أداء متفوق على تطبيقات C/C++.

تدعم اللغة الكتابة الثابتة وميزات آمنة للذاكرة منخفضة المستوى تذكرنا بـ Rust، مثل تتبع عمر المرجع ومدقق الاقتراض. في الوقت نفسه، توفر اللغة أيضًا فرصًا للعمل منخفض المستوى، على سبيل المثال، من الممكن الوصول مباشرة إلى الذاكرة في الوضع غير الآمن باستخدام نوع المؤشر، أو استدعاء تعليمات SIMD الفردية، أو الوصول إلى ملحقات الأجهزة مثل TensorCores وAMX.

يمكن استخدام Mojo في وضع الترجمة الفورية باستخدام JIT، وللتحويل إلى ملفات قابلة للتنفيذ (AOT، مسبقًا). يحتوي المترجم على تقنيات حديثة مدمجة للتحسين التلقائي والتخزين المؤقت والتجميع الموزع. يتم تحويل كود المصدر في لغة Mojo إلى كود متوسط ​​منخفض المستوى MLIR (التمثيل المتوسط ​​متعدد المستويات)، تم تطويره بواسطة مشروع LLVM. يتيح لك المترجم استخدام الواجهات الخلفية المختلفة التي تدعم MLIR لإنشاء رمز الجهاز.

المصدر: opennet.ru

إضافة تعليق