Haxe 4.1 dasturlash tilining chiqarilishi

Mavjud asboblar to'plamini chiqarish Haxe 4.1, 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 tarqaladi GPLv2 litsenziyasi va Haxe uchun ishlab chiqilgan standart kutubxona va virtual mashinalar HashLink и neko MIT litsenziyasi ostida.

Til bu ifodalashga qaratilgan kuchli yozish bilan. Ob'ektga yo'naltirilgan, umumiy va funktsional dasturlash usullari qo'llab-quvvatlanadi. Haxe sintaksisi ECMAScript-ga yaqin va kengayadi 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 ko'proq.

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 mavhum turlari.
  • 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:
    Haxe 4.1 dasturlash tilining chiqarilishi

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 rejalashtirilgan:

  • Paket menejeri yaxshilanishi haxelib.
  • Asinxron tizim API asosida libuv.
  • Korutinlar.
  • Sinflar yaratmasdan modulli statik funktsiyalar va o'zgaruvchilarni e'lon qilish (allaqachon tungi tuzilmalarda mavjud).

Manba: opennet.ru

a Izoh qo'shish