asboblar to'plamini chiqarish , kuchli terish, o'zaro kompilyator va standart funktsiyalar kutubxonasi bilan bir xil nomdagi ko'p paradigmali yuqori darajali dasturlash tilini o'z ichiga oladi. Loyiha C++, HashLink/C, JavaScript, C#, Java, PHP, Python va Lua tillariga tarjima qilishni, shuningdek, JVM, HashLink/JIT, Flash va Neko baytkodlariga kompilyatsiya qilishni, har bir maqsadli platformaning mahalliy imkoniyatlaridan foydalanishni qo'llab-quvvatlaydi. Kompilyator kodi GPLv2 litsenziyasi va Haxe uchun ishlab chiqilgan standart kutubxona va virtual mashinalar и MIT litsenziyasi ostida.
Til bu kuchli yozish bilan. Ob'ektga yo'naltirilgan, umumiy va funktsional dasturlash usullari qo'llab-quvvatlanadi. Haxe sintaksisi ECMAScript-ga yaqin va uning xususiyatlari: statik yozish, avtotip xulosasi, naqsh moslashtirish, generiklar, takrorlash uchun döngüler, AST makroslari, GADT (umumiy algebraik ma'lumotlar turlari), mavhum turlar, anonim tuzilmalar, soddalashtirilgan massiv ta'riflari, shartli kompilyatsiya ifodalari, maydonlarga metadata biriktirish , sinflar va iboralar, satr interpolyatsiyasi (“'Mening ismim $name'”), tip parametrlari ('yangi Main("foo")') va .
sinf testi {
statik funktsiya main() {
yakuniy odamlar = [
"Elizabet" => "Dasturlash",
"Joel" => "Dizayn"
];
uchun (ism => odamlardagi ish) {
trace(‘$name tirikchilik uchun $ish qiladi!’);
}
}
}
4.1 versiyasidagi yangi xususiyatlar:
- Quyruq rekursiyasini optimallashtirish qo'shildi.
- Istisnolarni qayta ishlash uchun yangi birlashtirilgan API qo'shildi.
- "try {} catch(e) {}" konstruktsiyasiga "try {} catch(e: haxe.Exception) {}" qisqartmasi sifatida ruxsat berilgan.
- Eval tarjimoniga qo'shilgan SSL yordami.
- Maqsadli JVM endi eksperimental hisoblanmaydi.
- Language Server Protocol uchun "O'tishni amalga oshirish" va "Ma'lumotnomalarni topish" funksiyalarini qo'llab-quvvatlash qo'shildi.
- Yaratilgan kodda vaqtinchalik mahalliy o'zgaruvchilarning nomlanishi yaxshilandi. Ortiqcha "qaytish" olib tashlandi; Qaytish qiymati bo'lmagan o'q funktsiyalarida.
- Maydonlarda kirish kombinatsiyalariga (olish, standart) ruxsat beriladi (faqat qabul qiluvchi, standart belgilash harakati).
- Maydonlar uchun oshirish va kamaytirish operatorlariga ruxsat bering .
- Anonim iteratorlardan foydalangan holda for looplarini kiritish yaxshilandi.
- js: ES5 uchun yaxshilangan StringMap ilovasi.
- js: “-D js-es=6” kompilyator variantiga let o‘zgaruvchilari generatsiyasi qo‘shildi, ES6 sinflarini yaratish yaxshilandi.
- lua: "StringIterator" optimallashtirildi, xatolarni qayta ishlash yaxshilandi.
- php: Asosiy turlar uchun optimallashtirilgan "Std.isOfType".
- php: Yaratilgan massivlar endi “Iterator”, “IteratorAggregate”, “Countable” mahalliy interfeyslarini amalga oshiradi.
- cs: "@:assemblyMeta" va "@:assemblyStrict" metama'lumotlari qo'shildi.
- python: anonim ob'ektlarga "__contains__" ilovasini qo'shdi
va "__getitem__", bu ularni yaratilgan kodda lug'at sifatida ishlatishga imkon beradi. - jvm: Ob'ektlar anonim tuzilmalar sifatida foydalanilganda (dinamik xususiyatlarni qidirish taqiqlangan) yoziladigan funktsiyalarga kirishning yangi usuli va qo'shimcha interfeyslarni yaratish tufayli sezilarli darajada yaxshilandi:
Standart kutubxonadagi yaxshilanishlar:
- “Array.contains” funksiyasi qo‘shildi.
- Massivlar uchun kalit-qiymat iteratsiyasini amalga oshiradigan "Array.keyValueIterator" qo'shildi ("uchun (kalit => massivdagi qiymat)").
- "haxe.Constraints.NotVoid" cheklov turi qo'shildi.
- "FindIndex" va "foldi" funktsiyalari "Lambda" sinfiga qo'shildi.
- Amalga oshirilgan "massivga kirish" ("arr[i]" orqali kirish) va "haxe.ds.HashMap" uchun kalit-qiymat iteratsiyasi.
- jvm: "StringMap", "sys.thread.Lock", "sys.thread.Thread" ning JVM-ga xos versiyalari amalga oshirildi.
- java/jvm: "haxe.crypto" modullari uchun "MD5", "SHA-1" va "SHA-256" ning mahalliy ilovalaridan foydalanilgan.
- so'l: "haxe.macro.Context.containsDisplayPosition(pos)" qo'shildi.
- nullsafety: "Qat'iy" rejim endi bitta tishli deb hisoblanadi; "StrictThreaded" rejimi qo'shildi.
- "Std.is" "Std.isOfType" foydasiga eskirgan.
- Yopishdagi qiymatlarsiz mahalliy o'zgaruvchilardan foydalanishda ogohlantirish qo'shildi.
- js: "tiplanmagan __js__(kod, args)" eskirgan, o'rniga "js.Syntax.code(code, args)".
- php/neko: "neko.Web" va "php.Web" eskirgan va keyinroq "hx4compat" kutubxonasiga ko'chiriladi.
Keyingi nashrda :
- Paket menejeri yaxshilanishi .
- Asinxron tizim API asosida .
- Korutinlar.
- Sinflar yaratmasdan modulli statik funktsiyalar va o'zgaruvchilarni e'lon qilish (allaqachon tungi tuzilmalarda mavjud).
Manba: opennet.ru
