يتوفر إصدار لمجموعة أدوات Haxe 4.2، والذي يتضمن لغة برمجة متعددة النماذج عالية المستوى تحمل الاسم نفسه مع كتابة قوية ومترجم مشترك ومكتبة قياسية للوظائف. يدعم المشروع الترجمة إلى C++ وHashLink/C وJavaScript وC# وJava وPHP وPython وLua، بالإضافة إلى التجميع إلى JVM وHashLink/JIT وFlash وNeko bytecode، مع إمكانية الوصول إلى القدرات الأصلية لكل منصة مستهدفة. يتم توزيع كود المترجم بموجب ترخيص GPLv2، والمكتبة القياسية والأجهزة الافتراضية HashLink وNeko المطورة لـ Haxe مرخصة بموجب ترخيص MIT.
اللغة موجهة نحو التعبير مع كتابة قوية. يتم دعم تقنيات البرمجة الموجهة للكائنات والعامة والوظيفية. بناء جملة Haxe قريب من ECMAScript ويمتد بميزات مثل الكتابة الثابتة، واستدلال الكتابة التلقائية، ومطابقة الأنماط، والأدوية العامة، والحلقات المستندة إلى المكرر، ووحدات ماكرو AST، وGADT (أنواع البيانات الجبرية المعممة)، والأنواع المجردة، والهياكل المجهولة، والمبسطة صفائف التعريفات، وتعبيرات التجميع الشرطي، وإرفاق بيانات التعريف بالحقول والفئات والتعبيرات، واستيفاء السلسلة ("اسمي هو $name")، واكتب المعلمات ("الرئيسية الجديدة" ("foo")') وغيرها الكثير. اختبار الطبقة { الوظيفة الثابتة الرئيسية () { الأشخاص النهائيون = [ "إليزابيث" => "البرمجة"، "جويل" => "التصميم" ]؛ for (name => job in people) { Trace('$name يقوم بعمل $ لكسب لقمة العيش!'); } } }
الميزات الجديدة في الإصدار 4.2:
- الإعلان عن المتغيرات والوظائف الثابتة على مستوى الوحدة، دون الحاجة إلى تغليفها في فصل دراسي.
- دعم الفئات والوظائف المجردة "الكلاسيكية".
- التنفيذ الأصلي للوظائف المتنوعة لجميع الأنظمة الأساسية المستهدفة (haxe.Rest) وإضافة عامل توسيع الوسيطة "f(...array)".
- تنفيذ حلقة حدث لسلاسل المحادثات الفردية ("sys.thread.Thread.events").
- البيانات التعريفية "@:inheritDoc" لوراثة وثائق النوع/الحقل.
- دعم التحميل الزائد للطرق الخارجية على كافة الأنظمة الأساسية المستهدفة.
- إعادة توجيه المنشئ الأساسي لنوعه إلى الملخص باستخدام البيانات الوصفية "@:forward.new".
- تمت إضافة مُنشئ "EIs" إلى "haxe.macro.Expr".
- القدرة على إنشاء متغير نوع مجردة باستخدام "@:forward.variance".
- تمثيل النوع "أي" على أنه "ديناميكي" عند توحيد التباين.
- تمت إضافة بعض أنواع الاستثناءات الأساسية إلى حزمة "haxe.exceptions".
- دعم إرفاق البيانات الوصفية عند الإعلان عن المتغيرات.
- الدالة "StringTools.unsafeCharAt" المستخدمة لتكرار السلسلة.
- eval (مترجم): تمت إضافة الارتباطات إلى "libuv" في الحزمة "eval.luv".
- eval: الارتباطات بالتطبيقات الأصلية لـ "Int64" و"UInt64" عبر الحزمة "eval.integers".
- cs: تنفيذ مقبس UDP.
- cs: وحدة "cs.Syntax" للإدراج المضمّن لرمز C#.
- jvm: تمت إضافة علامة "-D jvm.dynamic-level=x" للتحكم في عدد التحسينات التي تم إنشاؤها للتعليمات البرمجية الديناميكية. 0 = لا شيء، 1 = تحسين القراءة/الكتابة في الحقل، 2 = إغلاق الطريقة في وقت الترجمة.
- java، jvm: دعم علامة "--java-lib <directory>".
- بيثون: تنفيذ خيوط API.
التحسينات العامة:
- لا يتطلب "expr is SomeType" التفافًا بين قوسين.
- زيادة الأولوية لامتدادات النوع "@: باستخدام".
- يسمح باستخدام امتدادات النوع الثابت عبر "super".
- القدرة على ضبط البيانات الوصفية على حقول "@:noDoc".
- النوع المجرد "Map" أصبح متعديًا.
- دعم "@: أصلي" في مُنشئات التعداد.
- دعم "@: استخدام" في تعريفات النوع ("typedefs").
- تستخدم الأخطاء المتعددة الأسطر "..." كبادئة للأسطر اللاحقة.
- تمت إعادة صياغة استنتاج النوع، ومن الأفضل تحويل الهياكل المجهولة إلى أنواع صريحة و"إغلاقها" عند اكتمال الوظيفة.
- استنتاج نوع الوظائف بدون وسيطات كـ "()->..." بدلاً من "Void->...".
- يُسمح بالكلمة الأساسية "function" كاسم حزمة.
- تحسين بطانة الكائنات.
- CS: تمت إضافة دعم لـ .NET 5.0.
- cpp: دعم المنشئين الأصليين للفئات الخارجية.
- php: تمت إضافة "php.Syntax.customArrayDecl" للإعلان عن مصفوفة أصلية.
- php: تحديث الأساليب الخارجية لمختلف الوظائف والفئات.
- php: التنفيذ الأمثل للهياكل المجهولة.
- hl: تخطي التجميع إذا لم تكن هناك تغييرات على الوحدات النمطية.
- لوا: استخدام "hx-lua-simdjson" لتحليل json.
- jvm: انخفاض حمل وحدة المعالجة المركزية في تطبيق "sys.thread.Lock".
- Node.js: تحسين التوافق مع Google Closure Compiler.
- Null Safety: ضع في اعتبارك "@:nullSafety(Off)" عند الإعلان عن المتغيرات: "var @:nullSafety(Off) v".
أيضًا، تم تحديث الإضافة إلى محرر VSCode إلى الإصدار الجديد من المترجم، حيث ظهرت تلميحات مع إنشاء حقول مفقودة من الواجهات، والفئات البسيطة والمجردة، بالإضافة إلى أساليب الملكية.
المصدر: opennet.ru
