پروگرامنگ لینگویج Haxe 4.0 کی ریلیز

دستیاب ٹول کٹ کی رہائی ہیکس 4.0جس میں مضبوط ٹائپنگ، ایک کراس کمپائلر اور فنکشنز کی ایک معیاری لائبریری کے ساتھ اسی نام کی ملٹی پیراڈائم ہائی لیول پروگرامنگ لینگویج شامل ہے۔ یہ پروجیکٹ C++، HashLink/C، JavaScript، C#، Java، PHP، Python اور Lua میں ترجمہ کے ساتھ ساتھ JVM، HashLink/JIT، Flash اور Neko bytecode کی تالیف، ہر ٹارگٹ پلیٹ فارم کی مقامی صلاحیتوں تک رسائی کے ساتھ تعاون کرتا ہے۔ کمپائلر کوڈ نے بانٹا GPLv2 لائسنس کے تحت، اور Haxe کے لیے ایک معیاری لائبریری اور ایک ورچوئل مشین تیار کی گئی ہے۔ نیکو MIT لائسنس کے تحت.

زبان ہے۔ اظہار پر مبنی مضبوط ٹائپنگ کے ساتھ۔ آبجیکٹ پر مبنی، عام اور فنکشنل پروگرامنگ کے تصورات کی حمایت کی جاتی ہے۔
ہیکس نحو ECMAScript کے قریب ہے اور پھیلتا ہے اس کی خصوصیات جیسے کہ جامد ٹائپنگ، آٹو ٹائپ انفرنس، پیٹرن میچنگ، جنرکس، ایٹریٹر پر مبنی لوپس، AST میکروز، GADT (عمومی الجبری ڈیٹا ٹائپس)، تجریدی قسمیں، گمنام ڈھانچہ، آسان صف کی تعریفیں، مشروط تالیف کے اظہارات، فیلڈ میٹا ڈیٹا سے منسلک کرنا ، کلاسز اور ایکسپریشنز، سٹرنگ انٹرپولیشن ('میرا نام $name ہے')، ٹائپ پیرامیٹرز ("نیا مین‹ سٹرنگ›('foo')") اور بہت زیادہ.

کلاس ٹیسٹ {
جامد فنکشن مین () {
var لوگ = [
"الزبتھ" => "پروگرامنگ"،
"جوئل" => "ڈیزائن"
];

for (people.keys میں نام ()) {
var نوکری = لوگ[نام]؛
trace('$name کرتا ہے $job for a living!');
}
}
}

اہم بدعات ورژن 4.0:

  • فنکشن کی قسم کی وضاحت کے لیے نیا نحو "(نام:سٹرنگ،عمر:انٹ)->بول" یا "اسٹرنگ->انٹ->بول" کی بجائے "(سٹرنگ، انٹ)->بول"۔
  • ایرو فنکشن نحو ہے "(a, b) -> a + b" بجائے "function(a, b) return a + b"۔
  • Null اقدار کے استعمال سے وابستہ مسائل کے خلاف تحفظ (تجرباتی خصوصیت، اختیاری طور پر کچھ فیلڈز، کلاسز یا پیکجز کے لیے فعال)۔
  • "حتمی" کلیدی لفظ کلاس فیلڈز اور مقامی متغیرات کے لیے ہے جو ناقابل تغیر ہیں۔ "فائنل" کو فنکشنز کی وضاحت کے لیے بھی استعمال کیا جا سکتا ہے تاکہ انہیں وراثت کے ذریعے اوور رائیڈ ہونے سے روکا جا سکے اور ان کلاسز/انٹرفیس کے لیے جو وراثت میں نہیں مل سکتے۔
  • معاونت Neko کے علاوہ تمام تالیف اہداف پر بنیادی قسم "سٹرنگ" کے لیے یونیکوڈ کا معیار۔
  • بلٹ ان انٹرپریٹر کو شروع سے دوبارہ لکھا گیا، جو اب نام کے تحت آتا ہے۔ ایول. نئے مترجم کی بدولت، اسکرپٹ اور میکرو بہت تیزی سے چلتے ہیں۔ انٹرایکٹو ڈیبگنگ موڈ سپورٹ ہے۔
  • تالیف کے لیے نیا ہدف کا نظام (ہدف) ہیش لنک - ایک اعلی کارکردگی والا رن ٹائم خاص طور پر Haxe کے لیے ڈیزائن کیا گیا ہے، جو JIT یا C کے لیے بائیک کوڈ کی تالیف کی حمایت کرتا ہے، جس میں C کے ساتھ آسان انضمام کے ساتھ ساتھ کم درجے کی عددی اقسام اور پوائنٹرز تک رسائی ہے۔
  • نیا JVM ہدف - جاوا میں ٹارگٹ کرتے وقت آپ کو "-D jvm" جھنڈا شامل کرکے جاوا کوڈ کی تالیف کے مرحلے کو چھوڑ کر jvm بائیک کوڈ بنانے کی اجازت دیتا ہے۔
  • فنکشنز یا کنسٹرکٹرز کو کال کرنے کے مقام پر ان لائن تعینات کرنے کی اہلیت، چاہے انہیں اس طرح کا اعلان نہ کیا گیا ہو۔
  • شمولیت کا امکان جامد توسیعات "@:using(path.ToExtension)" کا استعمال کرتے ہوئے کسی قسم (جیسے "enum") کا اعلان کرتے وقت۔
  • خلاصہ قسمیں اب "obj.foo = bar" اظہار کو دوبارہ لوڈ کرنے کے لیے "@:op(ab)" آپریٹر کے "سیٹ" ورژن کو سپورٹ کرتی ہیں۔
  • "for" لوپ نحو اب کلیدی قدر کی تکرار کو سپورٹ کرتا ہے: "for (key => ویلیو ان کلیکشن) {}"۔
  • ایکسپریشنز میں ایکس ایم ایل نما مارک اپ استعمال کرنے کے لیے سپورٹ: "var a = ‹hi/›؛"۔ ابھی کے لیے، یہ خصوصیت صرف میکروز کے ساتھ تجزیہ کرنے کے لیے دستیاب ہے اور ڈیزائن کے مرحلے پر ہے۔
  • گمنام ساخت کی اقسام کے "مکمل" اشارے میں اختیاری فیلڈز کے لیے نحو ہے: "{ var ?f:Int; }" (مختصر "{ ?f:Int }" کا متبادل)۔
  • اینوم ویلیوز اب فنکشن آرگیومینٹس کے لیے ڈیفالٹ ویلیوز ہو سکتی ہیں: "function foo‹T›(option:Option‹T› = None)"۔
  • "enum abstract Name(BasicType) {}" نحو کو اب "enum" میں "@:" سابقہ ​​کی ضرورت نہیں ہے۔
  • تجریدی گنتی کے لیے آٹو نمبرنگ:

    enum abstract Foo(Int) {
    var A; // 0
    var B؛ // 1
    }
    enum خلاصہ بار (سٹرنگ) {
    var A; // "اے"
    var B؛ // "B"
    }

  • "بیرونی" کلیدی لفظ کو اب "@:" سابقہ ​​کے استعمال کی ضرورت نہیں ہے۔
  • آپشن کو ہٹا دیا "عمل سٹرنگز کے ذریعے کلاس فیلڈز تک رسائی کے لیے متحرک"۔ بیرونی کلاسوں کے لیے یا تجریدی قسم کے ذریعے عمل درآمد کے ذریعے دستیاب ہے۔
  • ٹائپ انٹرسیکشن کے لیے "A & B" نحو شامل کیا گیا، جو فی الحال صرف گمنام ڈھانچوں اور ٹائپ پیرامیٹر کی رکاوٹوں پر لاگو ہوتا ہے۔ پرانی رکاوٹ نحو کو ہٹا دیا گیا ہے۔
  • خالی "نقشہ" مثالوں کی تخلیق نحو کے ذریعے دستیاب ہے "var map:Map‹Int, String› = [];" ایک صف کی طرح.
  • ڈیٹا ڈھانچہ شامل کیا گیا "haxe.ds.ReadOnlyArray"۔
  • میٹا ڈیٹا میں اب نام کی جگہیں ہو سکتی ہیں (“@:prefix.name فنکشن() {…}”)۔ اسی طرح تعریفوں کے ساتھ: "#if (some.flag ... #end"۔
  • میں استعمال ہونے والے IDEs کے لیے نیا سروس پروٹوکول VSCode کے لیے پلگ ان.
  • ویب APIs کے لیے بیرونی تعریفیں (بیرونی) اپ ڈیٹ کی گئیں اور گمشدہ تعریفیں شامل کی گئیں۔

ماخذ: opennet.ru

نیا تبصرہ شامل کریں