إطلاق لغة البرمجة Haxe 4.1

متاح إصدار مجموعة الأدوات هاكس 4.1، والذي يتضمن لغة برمجة عالية المستوى ومتعددة النماذج تحمل نفس الاسم مع كتابة قوية ومترجم مشترك ومكتبة قياسية من الوظائف. يدعم المشروع الترجمة إلى C++ وHashLink/C وJavaScript وC# وJava وPHP وPython وLua، بالإضافة إلى التجميع إلى JVM وHashLink/JIT وFlash وNeko bytecode، مع إمكانية الوصول إلى القدرات الأصلية لكل منصة مستهدفة. رمز المترجم وزعت من خلال بموجب ترخيص GPLv2، والمكتبة القياسية والأجهزة الافتراضية التي تم تطويرها لـ Haxe هاشلينك и نيكو بموجب ترخيص معهد ماساتشوستس للتكنولوجيا.

اللغة هي موجهة نحو التعبير مع الكتابة القوية. يتم دعم تقنيات البرمجة الموجهة للكائنات والعامة والوظيفية. بناء جملة Haxe قريب من ECMAScript و يتوسع ميزاته مثل الكتابة الثابتة، واستدلال الكتابة التلقائية، ومطابقة الأنماط، والأدوية العامة، والحلقات القائمة على التكرار، ووحدات ماكرو AST، وGADT (أنواع البيانات الجبرية المعممة)، والأنواع المجردة، والهياكل المجهولة، وتعريفات المصفوفات المبسطة، وتعبيرات التجميع الشرطي، وإرفاق البيانات الوصفية بالحقول. والفئات والتعبيرات، واستيفاء السلسلة (""اسمي هو $name"")، واكتب المعلمات ("الرئيسي الجديد" ("فو")') و أكثر بكثير.

اختبار فئة {
الوظيفة الثابتة الرئيسية () {
الأشخاص النهائيون = [
"إليزابيث" => "البرمجة"،
"جويل" => "التصميم"
];

لـ (الاسم => الوظيفة في الأشخاص) {
تتبع('$name يقوم بعمل $ لكسب لقمة العيش!');
}
}
}

الميزات الجديدة في الإصدار 4.1:

  • تمت إضافة تحسين العودية الذيل.
  • تمت إضافة واجهة برمجة تطبيقات موحدة جديدة لمعالجة الاستثناءات.
  • يُسمح بالإنشاء "try {}catch(e) {}" كاختصار لـ "try {}catch(e: haxe.Exception) {}".
  • تمت إضافة دعم SSL لمترجم التقييم.
  • لم يعد JVM الهدف تجريبيًا.
  • بالنسبة لبروتوكول خادم اللغة، تمت إضافة دعم لوظيفتي "Goto Implementation" و"Find المراجع".
  • تحسين تسمية المتغيرات المحلية المؤقتة في التعليمات البرمجية التي تم إنشاؤها. تمت إزالة "العودة" الزائدة عن الحاجة. في وظائف السهم دون قيمة الإرجاع.
  • يُسمح بمجموعات الوصول (get، default) في الحقول (getter فقط، سلوك التعيين الافتراضي).
  • السماح بزيادة وتقليل عوامل التشغيل للحقول أنواع مجردة.
  • تحسين التضمين للحلقات باستخدام التكرارات المجهولة.
  • js: تحسين تنفيذ StringMap لـ ES5.
  • js: تمت إضافة إنشاء متغيرات Let إلى خيار المترجم "-D js-es=6"، وتم تحسين إنشاء فئات ES6.
  • lua: تم تحسين "StringIterator"، وتحسين معالجة الأخطاء.
  • php: "Std.isOfType" الأمثل للأنواع الأساسية.
  • php: تقوم المصفوفات التي تم إنشاؤها الآن بتنفيذ الواجهات الأصلية "Iterator"، و"IteratorAggregate"، و"Countable".
  • cs: تمت إضافة البيانات التعريفية "@:assemblyMeta" و"@:assemblyStrict".
  • python: تمت إضافة تطبيق "__contains__" إلى كائنات مجهولة
    و"__getitem__"، والذي يسمح باستخدامها كقواميس في التعليمات البرمجية التي تم إنشاؤها.

  • jvm: أداء محسّن بشكل ملحوظ بفضل الطريقة الجديدة للوصول إلى الوظائف المكتوبة وإنشاء واجهات إضافية في الحالات التي يتم فيها استخدام الكائنات كهياكل مجهولة (يتم منع البحث الديناميكي عن الخصائص):
    إطلاق لغة البرمجة Haxe 4.1

التحسينات في المكتبة القياسية:

  • تمت إضافة وظيفة "Array.contains".
  • تمت إضافة "Array.keyValueIterator"، الذي ينفذ تكرار قيمة المفتاح للمصفوفات ("for (key => value in array)").
  • تمت إضافة نوع القيد "haxe.Constraints.NotVoid".
  • تمت إضافة وظيفتي "findIndex" و"foldi" إلى فئة "Lambda".
  • تم تنفيذ "الوصول إلى المصفوفة" (الوصول عبر "arr[i]") وتكرار القيمة الرئيسية لـ "haxe.ds.HashMap".
  • jvm: تم تنفيذ الإصدارات الخاصة بـ JVM من "StringMap" و"sys.thread.Lock" و"sys.thread.Thread".
  • java/jvm: التطبيقات الأصلية المستخدمة لـ "MD5" و"SHA-1" و"SHA-256" لوحدات "haxe.crypto".
  • الماكرو: تمت إضافة "haxe.macro.Context.containsDisplayPosition(pos)".
  • nullsafety: يتم الآن التعامل مع الوضع "الصارم" باعتباره خيطًا واحدًا؛ تمت إضافة وضع "StrictThreaded".
  • تم إهمال "Std.is" لصالح "Std.isOfType".
  • تمت إضافة تحذير عند استخدام المتغيرات المحلية بدون قيم في عمليات الإغلاق.
  • js: تم إهمال "__js__(code, args)" غير المكتوب، وتم استبداله بـ "js.Syntax.code(code, args)".
  • php/neko: تم إهمال "neko.Web" و"php.Web" وسيتم نقلهما إلى مكتبة "hx4compat" لاحقًا.

في الإصدار القادم مخطط:

  • تحسينات مدير الحزم haxelib.
  • نظام غير متزامن يعتمد على واجهة برمجة التطبيقات (API). libuv.
  • كوروتين.
  • الإعلان عن وظائف ومتغيرات ثابتة معيارية دون إنشاء فئات (متوفرة بالفعل في الإصدارات الليلية).

المصدر: opennet.ru

إضافة تعليق