هاكس

هاكس
نموذجمتعدد النماذج : كائني التوجه ، وظيفي ، عام
عائلةإيكماسكربت
المطورمؤسسة هاكس
ظهرت لأول مرة14 نوفمبر 2005 ؛ منذ 18 عامًا ( 2005-11-14 )
إصدار مستقر
4.3.6 [1]  / 7 أغسطس 2024 ؛ منذ شهرين ( 7 أغسطس 2024 )
الانضباط في الطباعةثابت ، ديناميكي عبر التعليقات التوضيحية، اسمي
نِطَاقمعجمي
لغة التنفيذأوكامل
منصةIA-32 ، x86-64 ، AArch64 ، أرميل، أرمهف ، MIPS، MIPS64el، MIPSel ، ppc64el ، s390x
نظام التشغيلأندرويد ، آي أو إس ، لينكس ، ماك أو إس ، ويندوز
رخصةGPL 2.0، المكتبة: MIT
ملحقات اسم الملف.hx، .hxml
موقع إلكترونيهاكس.أورج
متأثر بـ
ECMAScript ، JavaScript ، ActionScript ، OCaml ، Java ، C++ ، PHP ، C# ، Python ، Lua ، NekoVM

Haxe هي لغة برمجة ومُجمِّع متعدد المنصات عالي المستوى يمكنه إنتاج تطبيقات وأكواد مصدرية للعديد من منصات الحوسبة المختلفة من قاعدة كود واحدة. إنه برنامج مجاني ومفتوح المصدر ، تم إصداره بموجب ترخيص MIT . [2] تم إصدار المُجمِّع، المكتوب بلغة OCaml ، بموجب ترخيص GNU العمومي العام (GPL) الإصدار 2.

يتضمن Haxe مجموعة من الميزات ومكتبة قياسية [3] مدعومة عبر جميع المنصات ، بما في ذلك أنواع البيانات الرقمية والسلاسل والمصفوفات والخرائط والبرمجة الثنائية والانعكاسية والرياضيات وبروتوكول نقل النص التشعبي ( HTTP ) ونظام الملفات وتنسيقات الملفات الشائعة . يتضمن Haxe أيضًا واجهات برمجة تطبيقات خاصة بالمنصة ( APIs ) لكل هدف من أهداف المترجم. [4] تعد Kha و OpenFL و Heaps.io أطر عمل Haxe الشائعة التي تمكن من إنشاء محتوى متعدد المنصات من قاعدة بيانات واحدة. [5]

نشأت Haxe بفكرة دعم البرمجة من جانب العميل وجانب الخادم بلغة واحدة، وتبسيط منطق الاتصال بينهما. [6] يمكن تجميع الكود المكتوب في Haxe إلى JavaScript و C++ و Java و JVM و PHP و C# و Python و Lua [7] و Node.js. [8] يمكن لـ Haxe أيضًا تجميع البايت كود SWF و HashLink و NekoVM مباشرةً وتشغيله أيضًا في الوضع المفسر. [9]

يدعم Haxe الملفات الخارجية (ملفات التعريف) التي يمكن أن تحتوي على معلومات نوع البيانات للمكتبات الموجودة لوصف التفاعل الخاص بالهدف بطريقة آمنة للنوع، مثل ملفات رأس C++ التي يمكنها وصف بنية ملفات الكائنات الموجودة . يتيح هذا استخدام القيم المحددة في الملفات كما لو كانت كيانات Haxe ذات نوع ثابت. بجانب الملفات الخارجية، توجد حلول أخرى للوصول إلى القدرات الأصلية لكل منصة.

يتوفر دعم لتطوير Haxe في العديد من بيئات التطوير المتكاملة ومحرري أكواد المصدر الشائعة . [10] لا توجد بيئة تطوير أو مجموعة أدوات محددة موصى بها رسميًا من قبل مؤسسة Haxe، على الرغم من أن VS Code و IntelliJ IDEA وHaxeDevelop لديها أكبر قدر من الدعم لتطوير Haxe. تتوفر الوظائف الأساسية لتسليط الضوء على بناء الجملة وإكمال الكود وإعادة الهيكلة وتصحيح الأخطاء وما إلى ذلك بدرجات مختلفة.

تاريخ

بدأ تطوير Haxe في أكتوبر 2005. وتم إصدار أول إصدار ألفا في 14 نوفمبر 2005. [11] [12] وتم إصدار Haxe 1.0 في أبريل 2006، مع دعم برامج Adobe Flash و JavaScript و NekoVM . وتمت إضافة دعم PHP في عام 2008، وتمت إضافة C++ في عام 2009. وتمت إضافة المزيد من المنصات مثل C# وJava مع إصلاح شامل للمترجم في عام 2012.

تم تطوير Haxe بواسطة Nicolas Cannasse ومساهمين آخرين، وتم تسميته في الأصل haXe [13] لأنه كان قصيرًا وبسيطًا و"يحتوي على X في الداخل"، والذي يؤكد المؤلف مازحًا أنه ضروري لجعل أي تقنية جديدة ناجحة. [14]

Haxe هو خليفة مترجم ActionScript 2 مفتوح المصدر MTASC ، [15] الذي بناه أيضًا Nicolas Cannasse وتم إصداره بموجب ترخيص GNU العمومي العام الإصدار 2 أو أحدث.

المُجمِّع

يمكن للغة Haxe أن تُجمَّع إلى كود ثنائي يمكن تنفيذه مباشرة بواسطة الآلات الافتراضية التي تستهدفها. ويمكنها أن تُجمَّع إلى كود مصدر في C++ و JavaScript و PHP و C# و Java و Python و Lua . كما تحتوي Haxe على مُفسِّر يُدعى eval . [16] ويُستخدم نفس المُفسِّر أيضًا وقت التجميع لتشغيل وحدات الماكرو، التي تسمح بتعديل شجرة بناء الجملة المجردة (AST).

إن استراتيجية التجميع إلى لغات متعددة لأكواد المصدر مستوحاة من نموذج الكتابة مرة واحدة والتشغيل في أي مكان . كما تسمح للمبرمج باختيار أفضل منصة للعمل. تعمل برامج Haxe النموذجية بشكل متطابق على جميع المنصات، ولكن يمكن للمطورين تحديد كود خاص بالمنصة واستخدام التجميع الشرطي لمنع تجميعه على منصات أخرى.

مُجمِّع Haxe هو مُجمِّع مُحسِّن ، ويستخدم تضمين الحقل والوظيفة ، وإزالة التكرار الذيلي ، وطي الثوابت ، وفك الحلقة وإزالة الكود الميت (DCE) لتحسين أداء وقت تشغيل البرامج المُجمَّعة. [17] يوفر مُجمِّع Haxe أمانًا اختياريًا ضد القيم الفارغة ، ويتحقق وقت التجميع بحثًا عن القيم القابلة للعدم.

الأهداف

في Haxe، تُعرف المنصات المدعومة باسم "الأهداف"، والتي تتكون من الوحدات النمطية التالية:

  • وحدات التجميع الخلفية المسؤولة عن إنشاء الكود المعني.
  • واجهات برمجة التطبيقات الخاصة بوقت التشغيل والتي تتجاوز دعم اللغة الأساسية (أهداف النظام الأساسي).

يوثق الجدول التالي دعم المنصة واللغة في Haxe. تتيح لغة Haxe للمطورين الوصول إلى العديد من ميزات المنصة، لكن Haxe ليس محركًا كامل الميزات، وقد يحتاجون إلى أطر عمل تمكنهم من إنشاء محتوى لمنصات معينة.

أهداف مُجمِّع Haxe [9]
اسم الطبقة الناتج منصة يستخدم منذ إصدار Haxe
نيكو 3 رمز البايت نيكوفم الخادم، سطح المكتب، واجهة سطر الأوامر 2005 (ألفا)
فلاش/SWF 3 رمز البايت فلاش : AVM2 ، فلاش بلاير 9+، AIR سطح المكتب، المتصفح، الخادم 2005 (ألفا)
جافا سكريبت 1 مصدر جافا سكريبت : HTML5 ، NodeJS ، PhoneGap الخادم، سطح المكتب، المتصفح، الجوال 2006 (نسخة تجريبية)
أكشن سكريبت مصدر ActionScript 3 : AIR ، Flex ، Royale الخادم، سطح المكتب، المتصفح، الجوال 2007 (1.12)، تمت إزالته منذ 2019 (4.0)
بي اتش بي 1 مصدر PHP : محرك Zend الخادم 2008 (2.0) PHP 5 ؛ PHP 7 منذ 2019 (4.0)
سي++ 2 مصدر C++ : Windows ، Linux ، macOS ، Android ، iOS ، Palm ، WebOS الخادم، سطح المكتب، الهاتف المحمول، واجهة سطر الأوامر، وحدات التحكم في الألعاب 2009 (2.04)؛ تمت إضافة cppia في عام 2014 (3.2)
سي شارب 3 مصدر C# : إطار عمل .NET ، .NET Core ، Mono الخادم، سطح المكتب، المحمول 2012 (2.10)
جافا 3 مصدر جافا : جافا OpenJDK الخادم، سطح المكتب 2012 (2.10)
بايثون 3 مصدر بايثون CLI، الويب، سطح المكتب 2014 (3.2)
لوا 2 مصدر لوا CLI، الويب، سطح المكتب، الهاتف المحمول 2016 (3.3)
هاش لينك 1 رمز البايت HashLink VM أو HL/C (تجميع إلى ملف C) الخادم، سطح المكتب، المحمول، وحدات التحكم في الألعاب (تصدير C) 2016 (3.4)
جيه في إم 1 البايت كود JVM : HotSpot ، OpenJ9 الخادم، سطح المكتب 2019 (4.0)
تقييم 1 مترجم مترجم هاكس النمذجة الأولية، البرمجة النصية 2019 (4.0)

المزايا

  • القدرة على استهداف منصات وأجهزة متعددة باستخدام نفس اللغة
  • القدرة على استخدام الكود المحدد بدقة
  • القدرة على استخدام وحدات الماكرو (تحويل بناء الجملة) والتي يمكن القيام بها باستخدام لغة Haxe [18]
  • تمت إضافة ميزات لغوية مثل طرق التمديد والبرمجة الوظيفية
  • إن أداء وقت تشغيل برامج Haxe يضاهي سرعة المصادر المكتوبة بخط اليد. [19]

لغة

Haxe هي لغة برمجة عامة الغرض تدعم البرمجة الموجهة للكائنات والبرمجة العامة ومختلف بنيات البرمجة الوظيفية . كما تعد ميزات مثل التكرارات والاستثناءات والبرمجة العاكسة (انعكاس الكود) وظائف مدمجة في اللغة والمكتبات. على عكس لغات البرمجة الأخرى، تحتوي Haxe على نظام نوع قوي وديناميكي . سيتحقق المترجم من الأنواع ضمناً عبر استدلال النوع ويعطي أخطاء وقت التجميع، ولكنه يمكّن البرامج أيضًا من تجاوز فحص النوع والاعتماد على معالجة النوع الديناميكية لمنصة الهدف. يمكن استخدام جميع واجهات برمجة التطبيقات الأصلية المستهدفة .

نظام النوع

تتمتع لغة Haxe بنظام نوع متطور ومرن. أنواع النوع التي تقدمها هي الفئات والواجهات وأنواع طرق الوظائف والأنواع المجهولة وأنواع البيانات الجبرية (تسمى enum في Haxe) والأنواع المجردة. تعد تعدد الأشكال البارامترية ممكنة مع الفئات والأنواع الجبرية وأنواع الوظائف، مما يمنح اللغة دعمًا للبرمجة العامة القائمة على محو النوع. يتضمن هذا دعمًا للتباين في الوظائف المتعددة الأشكال ، على الرغم من عدم وجوده في منشئي النوع .

نظام النوع ثابت ما لم تكن هناك تعليقات توضيحية للكتابة الديناميكية ، لاستخدامها مع الأهداف التي تدعمها. يتبع فحص النوع الكتابة الاسمية باستثناء الأنواع المجهولة حيث يتم استخدام الكتابة البنيوية بدلاً من ذلك. أخيرًا، يتم دعم استدلال النوع ، مما يسمح بإعلانات المتغيرات دون تعليقات توضيحية للنوع .

الوحدات النمطية ومساحات الأسماء

يتم تنظيم جميع أكواد Haxe في وحدات، يتم التعامل معها باستخدام المسارات. في الأساس، يمثل كل ملف .hx وحدة قد تحتوي على عدة أنواع. على سبيل المثال، لإنشاء النوع Aفي الحزمة my.pack كما هو موضح، يجب أن يكون هيكل المجلد my\pack ويمكن أن يكون الملف A.hx في المجلد pack .

 // ملف my/pack/A.hx 
الحزمة my . pack ؛ 

الصف أ {}  

في وحدات أخرى، يمكن استيراد أنواع أخرى عن طريق وضع importعبارات أسفل تعريف الحزمة، على سبيل المثالimport my.pack.A;

يمكن أن تحتوي الوحدة النمطية على أنواع متعددة، مثل الأنواع التالية. من الممكن استيراد نوع واحد في كل مرة من تلك الوحدة النمطية، باستخدام import my.pack2.A;. قد يكون النوع private، وفي هذه الحالة يمكن للوحدة النمطية التي تحتويه فقط الوصول إليه.

الحزمة الخاصة بي .pack2 ؛ 

typedef A = { a : String } private typedef B = { b : String }   
    

الفصول الدراسية

تتشابه الفئات (الكلمة الأساسية class) في Haxe مع تلك الموجودة في Java أو TypeScript. يمكن أن تكون حقولها إما طرقًا أو متغيرات أو خصائص، كل منها ثابتة أو لكل مثيل على التوالي. يدعم Haxe أدوات الوصول publicو private، والطرق الأكثر تقدمًا للتحكم في الوصول والتي يتم الإشارة إليها باستخدام التعليقات التوضيحية. يمكن تضمين الطرق والمتغيرات الثابتة الثابتة باستخدام الكلمة الأساسية inline. يمكن وضع علامة على الحقول finalلإعلان ثابت يجب تهيئته على الفور أو في المنشئ ولا يمكن الكتابة إليه، في حالة الوظيفة finalسيتم وضع علامة على أنه غير قابل للتجاوز في الفئات الفرعية.

تعتبر الواجهات في Haxe مشابهة جدًا لتلك الموجودة في Java، على سبيل المثال.

واجهة ICreature { متغير عام الميلاد : تاريخ ؛ متغير عام الاسم : سلسلة ؛  
      
      

    الوظيفة العامة age ( ) : Int ;  


تطبق الفئة Fly ICreature { public var birth : Date ; public var name : String ; public function age ( ): Int return Date.now ( ) . getFullYear () - birth.getFullYear ( ); }    
      
      
	
          

الأنواع العامة

يدعم Haxe البرمجة العامة . فيما يلي مثال لوظيفة الهوية .

هوية الدالة <T> ( arg : T ) : T { return arg ; }  
	 

أنواع مُحصاة

تعد الأنواع المعدودة سمة مهمة للغة؛ حيث يمكن أن تحتوي على معلمات نوع وأن تكون متكررة. [20] وهي توفر دعمًا أساسيًا لأنواع البيانات الجبرية ، مما يسمح بإدراج أنواع المنتج ، بطريقة مماثلة للغة Haskell و ML . switchيمكن أن يطبق التعبير مطابقة الأنماط على قيمة معدودة، مما يسمح بحلول أنيقة لمشاكل البرمجة المعقدة:

enum Color { أحمر ؛ أخضر ؛ أزرق ؛ rgb ( r : Int ، g : Int ، b : Int }  
	
	
	
	  


الفئة Colors { دالة ثابتة toInt ( c : Color ): Int { مفتاح الرجوع ( c ) { الحالة الحمراء : 0xFF0000 ؛ الحالة الخضراء : 0x00FF00 ؛ الحالة الزرقاء : 0x0000FF ؛ الحالة rgb ( r ، g ، b ): ( r << 16 ) | ( g << 8 ) | b ؛ } }  
	   
		   
			  
			  
			  
			            
		
	

	دالة ثابتة validCalls ( ) { var redint = toInt ( Color.red ) ; var rgbint = toInt ( Color.rgb ( 100 , 100 , 100 ) ) ; } }   
		   
		     
	

أمثلة على أنواع التعداد المعلمية هي أنواع مكتبة Haxe القياسية Option [21] وEther: [22]

خيار التعداد < T > { بعض ( v : T ); لا شيء ; }  
    
    


إما < L ، R > { يسار ( v : L ) ؛ يمين ( v : R }   
    
    

يدعم Haxe أيضًا أنواع البيانات الجبرية المعممة (GADTs). [23] [24]

أنواع مجهولة

يتم تعريف الأنواع المجهولة من خلال الإشارة إلى بنيتها صراحةً، باستخدام بناء جملة يتبع التمثيل القائم على السجل الرياضي للنوع. ويمكن استخدامها لتنفيذ الكتابة البنيوية لحجج الوظيفة (انظر أدناه)، ويمكن إعطاؤها اسمًا مستعارًا باستخدام الكلمة الأساسية typedef:

typedef AliasForAnon = { a : Int , b : String , c : Float -> Void };       

أنواع الوظائف

الدوال هي قيم من الدرجة الأولى في Haxe. يتم الإشارة إلى نوعها باستخدام الأسهم بين أنواع الوسيطات، وبين أنواع الوسيطات ونوع الإرجاع، كما هو شائع في العديد من اللغات الوظيفية. ومع ذلك، على عكس الأمثلة البارزة مثل Haskell أو عائلة لغات ML ، ليست كل الدوال دوال أحادية (دوال ذات وسيطة واحدة فقط)، وفي Haxe، لا يمكن تطبيق الدوال جزئيًا بشكل افتراضي. وبالتالي، فإن تواقيع النوع التالية لها دلالات مختلفة عن اللغات المذكورة أعلاه. النوع F1هو دالة تأخذ a Stringكوسائط وترجع قيمة من النوع Float.

تشير الأنواع F1و F2إلى نفس النوع، باستثناء أنها F2تستخدم المعلمة المُسمّاة، والتي تكون مفيدة للإكمال والتوثيق.

تشير الأنواع F4و F5إلى نفس النوع. كلاهما عبارة عن دالات ثنائية ترجع دالة ثنائية من النوع F3. بالنسبة F5للقواعد النحوية للإعلان عن نوع دالة داخل نوع دالة، يتم استخدام نوع دالة.

typedef F1 = سلسلة نصية -> عائمة ؛ typedef F2 = ( نص : سلسلة نصية ) -> عائمة ؛     
     

typedef F3 = ( score :Int, text:String ) -> Float ; typedef F4 = ( score :Int, text:String ) -> F3 ; typedef F5 = ( score :Int, text:String ) -> (( score :Int, text:String ) -> Float );      
      
         

وظائف مجهولة

في Haxe، تسمى الوظائف المجهولة lambda، وتستخدم بناء الجملة function(argument-list) expression;.

var f = function ( x ) return x * x ; f ( 8 ); // 64     
 

( دالة ( x , y ) ترجع x + y )( 5 , 6 ); // 11   

أنواع مجردة

إضافة جديدة نسبيًا إلى نظام نوع Haxe هي مفهوم يُطلق عليه الأنواع المجردة . كما هو مستخدم في Haxe، يشير هذا إلى شيء مختلف عن النوع المجرد التقليدي . تُستخدم لإجراء تحويلات ضمنية بين الأنواع، مما يسمح بإعادة استخدام الأنواع الموجودة لأغراض محددة، مثل تنفيذ الأنواع لوحدات القياس. يقلل هذا بشكل كبير من خطر خلط قيم نفس النوع الأساسي، ولكن مع معاني مختلفة (على سبيل المثال، الأميال مقابل الكيلومترات).

يفترض المثال التالي أن النظام المتري هو النظام الافتراضي، بينما يلزم التحويل إلى الأميال للبيانات القديمة. يمكن لـ Haxe تحويل الأميال إلى كيلومترات تلقائيًا، ولكن ليس العكس.

الملخص كيلومتر ( عائم ) { دالة عامة جديدة ( v : عائم ) هذا = v ؛ } ميل ( عائم ) { دالة عامة جديدة ( v : عائم ) هذا = v ؛ @:to دالة عامة مضمنة toKilometer (): كيلومتر return ( كيلومتر جديد ( هذا / 0.62137 )); } class Test { static var km : Kilometer ؛ static function main ( ){ var one100Miles = new Mile ( 100 km = one100Miles ؛ trace ( كم // 160.935 } }  
         

 
  
         
              

 
  
    
    
        
      
 
     
  

كما يوضح المثال، لا يلزم إجراء تحويل صريح لكي يعمل التعيين "km = one100Miles;" بالشكل الصحيح.

الأنواع المجردة هي ميزة وقت التجميع بالكامل في Haxe ولا توجد على الإطلاق في وقت تشغيل البرنامج. على سبيل المثال، كلا المتغيرين اللذين يستخدمان الأنواع المجردة أعلاه Mileو Kilometerسيكونان من النوع Floatوقت التشغيل. [25]

الكتابة البنيوية

في العديد من لغات البرمجة الوظيفية، يلعب النوع البنيوي دورًا رئيسيًا. يستخدمه Haxe في وجود أنواع مجهولة، باستخدام النوع الاسمي للبرمجة الموجهة للكائنات ، عندما تكون الأنواع المسماة فقط متضمنة. الأنواع المجهولة في Haxe تشبه الواجهات الضمنية للغة Go من حيث النوع. على النقيض من واجهات Go، من الممكن إنشاء قيمة باستخدام نوع مجهول.

الفئة FooBar { public var foo : Int ; public var bar : String ;  
	  
	  

	دالة عامة جديدة () { foo = 1 ؛ bar = "2" ؛ }   
		  
		  
	

	دالة anyFooBar ( v :{ foo : Int ، bar : String } ) trace ( v.foo ) ؛  
		

	اختبار الوظيفة الثابتة () { var fb = new FooBar (); fb . anyFooBar ( fb ); fb . anyFooBar ({ foo : 123 , bar : "456" }); } }   
		    
		
		   
	

الهندسة المعمارية الداخلية

المُجمِّع

ينقسم مُجمِّع Haxe إلى واجهة أمامية واحدة وواجهات خلفية متعددة. تُنشئ الواجهة الأمامية شجرة بناء جملة مجردة (AST) من الكود المصدر، وتنفذ فحص النوع، وتوسيع الماكرو ، والتحسين على AST. تُترجم الواجهات الخلفية المختلفة AST المُعالجة إلى كود مصدر أو تولد كودًا ثنائيًا ، اعتمادًا على هدفها.

تمت كتابة المترجم بلغة OCaml . ويمكن تشغيله في وضع الخادم لتوفير استكمال التعليمات البرمجية لبيئات التطوير المتكاملة (IDEs) والحفاظ على ذاكرة التخزين المؤقت لتسريع التجميع بشكل أكبر. [26]

انظر أيضا

مراجع

  1. ^ "الإصدار 4.3.6". 7 أغسطس 2024. تم الاسترجاع 22 أغسطس 2024 .
  2. ^ "رخصة مفتوحة المصدر Haxe".
  3. ^ مقدمة إلى مكتبة Haxe القياسية، Haxe Docs
  4. ^ واجهات برمجة التطبيقات المستهدفة، مقدمة إلى مكتبة Haxe القياسية، وثائق Haxe
  5. ^ Doucet, Lars (2014-06-24). "عزيزتي Adobe: ادعم Haxe، واحفظ أدواتك". Gamasutra .
  6. ^ "مقابلة هاكس". مجلة Io Programmo. 2009-04-01. ص. 1-6. مؤرشف من الأصل في 2015-12-08 . تم استرجاعه في 2015-08-06 .
  7. ^ "مرحبا لوا!". Haxe.org .
  8. ^ "hxnodejs".
  9. ^ ab "أهداف المترجم". Haxe . تم الاسترجاع في 2021-11-05 .
  10. ^ قائمة بيئات التطوير المتكاملة التي تدعم Haxe، Haxe Foundation
  11. ^ “أطلق سراح ألفا-1”. . ​HaxeFoundation. 2005-11-14 . تم الاسترجاع 2022-04-02 – عبر جيثب .
  12. ^ Cannasse, Nicolas (2005-11-17). "Haxe Alpha 1b". haXe (Mailing list). مؤرشف من الأصل في 2007-10-26.
  13. ^ "إعلان نيكولاس عن تغيير الإملاء في قائمة البريد الرسمية لـ Haxe".
  14. ^ "منشور قائمة بريدية لـHaxe حول التسمية". مؤرشف من الأصل في 2007-03-28.
  15. ^ مُجمِّع MTASC، موقع MTASC على الويب
  16. ^ "Eval - مترجم الماكرو الجديد Haxe".
  17. ^ "ميزات المترجم".
  18. ^ "الماكرو في Haxe".
  19. ^ Dyachenko, Vadim (2013-12-05). "حول "لا يمكنك إنشاء ألعاب HTML5 جيدة في Haxe"". Yellow After Life.
  20. ^ "مرجع Haxe يوضح بالتفصيل استخدام enum". مؤرشف من الأصل في 2012-05-11.
  21. ^ "haxe/Option.hx at development · HaxeFoundation/haxe". Github . 7 نوفمبر 2021.
  22. ^ "haxe/Either.hx at development · HaxeFoundation/haxe". Github . 7 نوفمبر 2021.
  23. ^ "ميزات اللغة". Haxe - مجموعة أدوات متعددة المنصات . مؤسسة Haxe . تم الاسترجاع في 30 أبريل 2015 .
  24. ^ "haxe/TestGADT.hx at development · HaxeFoundation/haxe". Github . 7 نوفمبر 2021.
  25. ^ "الملخص". Haxe - مجموعة أدوات متعددة المنصات . تم الاسترجاع في 2023-04-24 .
  26. ^ سطر أوامر وضع الخادم:haxe --wait [host:]port
  • الموقع الرسمي
تم الاسترجاع من "https://en.wikipedia.org/w/index.php?title=هاكس&oldid=1253897278"
Original text
Rate this translation
Your feedback will be used to help improve Google Translate