Haxe 4.1 бағдарламалау тілінің шығарылымы

Қол жетімді құралдар жинағын шығару Haxe 4.1, ол күшті теру, кросс-компилятор және функциялардың стандартты кітапханасы бар аттас көп парадигмалық жоғары деңгейлі бағдарламалау тілін қамтиды. Жоба C++, HashLink/C, JavaScript, C#, Java, PHP, Python және Lua тілдеріне аударуды, сондай-ақ JVM, HashLink/JIT, Flash және Neko байт кодтарына компиляцияны қолдайды, әрбір мақсатты платформаның жергілікті мүмкіндіктеріне қол жеткізе алады. Компилятор коды таралады GPLv2 лицензиясы бойынша және Haxe үшін әзірленген стандартты кітапхана мен виртуалды машиналар HashLink и Неко MIT лицензиясы бойынша.

Тіл – бұл өрнекке бағытталған күшті теру арқылы. Объектіге бағытталған, жалпы және функционалды бағдарламалау әдістеріне қолдау көрсетіледі. Haxe синтаксисі ECMAScript-ке жақын және ұзартады оның статикалық теру, автотипті қорытындылау, үлгіні сәйкестендіру, генериктер, итераторға негізделген циклдар, AST макростары, GADT (жалпыланған алгебралық деректер түрлері), дерексіз түрлер, анонимді құрылымдар, жеңілдетілген массив анықтамалары, шартты құрастыру өрнектері, өрістерге метадеректерді тіркеу сияқты мүмкіндіктері , сыныптар мен өрнектер, жол интерполяциясы («'Менің атым — $name'»), теру параметрлері ('жаңа Негізгі («фу»)') және әлдеқайда көп.

сынақ тесті {
статикалық функция main() {
соңғы адамдар = [
"Элизабет" => "Бағдарламалау",
"Джоэл" => "Дизайн"
];

үшін (аты => адамдардағы жұмыс) {
trace('$name өмір сүру үшін $жұмыс жасайды!');
}
}
}

4.1 нұсқасындағы жаңа мүмкіндіктер:

  • Қосымша рекурсияны оңтайландыру қосылды.
  • Ерекшеліктерді өңдеу үшін жаңа бірыңғай API қосылды.
  • "try {} catch(e) {}" құрылымы "try {} catch(e: haxe.Exception) {}" стенографиясы ретінде рұқсат етілген.
  • Бағалаушы аудармашыға SSL қолдауы қосылды.
  • Мақсатты JVM енді эксперименттік болып саналмайды.
  • Language Server Protocol үшін «Орындауға өту» және «Сілтемелерді табу» функцияларына қолдау қосылды.
  • Жасалған кодтағы уақытша жергілікті айнымалылардың жақсартылған атауы. Артық "қайтару" жойылды; қайтару мәні жоқ көрсеткі функцияларында.
  • Өрістерде қатынас комбинацияларына (алу, әдепкі) рұқсат етіледі (тек алушы, әдепкі тағайындау әрекеті).
  • Өрістер үшін арттыру және азайту операторларына рұқсат беріңіз дерексіз түрлері.
  • Анонимді итераторларды пайдалана отырып, for циклдерін кірістіру жақсартылған.
  • js: ES5 үшін жақсартылған StringMap енгізу.
  • js: «-D js-es=6» компилятор опциясына let айнымалыларын генерациялау қосылды, ES6 сыныптарының генерациясы жақсартылды.
  • lua: «StringIterator» оңтайландырылған, қателерді өңдеу жақсартылған.
  • php: Негізгі түрлер үшін оңтайландырылған "Std.isOfType".
  • php: Жасалған массивтер енді «Iterator», «IteratorAggregate», «Countable» жергілікті интерфейстерін жүзеге асырады.
  • cs: "@:assemblyMeta" және "@:assemblyStrict" метадеректері қосылды.
  • python: анонимді нысандарға "__contains__" іске асыру қосылды
    және «__getitem__», бұл оларды жасалған кодта сөздік ретінде пайдалануға мүмкіндік береді.

  • jvm: Нысандар анонимді құрылымдар ретінде пайдаланылған жағдайларда терілген функцияларға қол жеткізудің және қосымша интерфейстерді жасаудың жаңа тәсілі арқасында өнімділік айтарлықтай жақсарды (сипаттың динамикалық іздеуіне жол берілмейді):
    Haxe 4.1 бағдарламалау тілінің шығарылымы

Стандартты кітапханадағы жақсартулар:

  • «Array.contains» функциясы қосылды.
  • Массивтер үшін кілт-мән итерациясын жүзеге асыратын «Array.keyValueIterator» қосылды («үшін (кілт => массивтегі мән)»).
  • "haxe.Constraints.NotVoid" шектеу түрі қосылды.
  • «findIndex» және «foldi» функциялары «Lambda» сыныбына қосылды.
  • «Массивке қол жеткізу» («arr[i]» арқылы кіру) және «haxe.ds.HashMap» үшін кілттер-мәні итерациясы енгізілді.
  • jvm: "StringMap", "sys.thread.Lock", "sys.thread.Thread" JVM-арнайы нұсқалары енгізілді.
  • java/jvm: "haxe.crypto" модульдері үшін "MD5", "SHA-1" және "SHA-256" қолданбаларының жергілікті енгізулері.
  • макрос: "haxe.macro.Context.containsDisplayPosition(pos)" қосылды.
  • nullsafety: «Қатаң» режим енді бір ағынды ретінде қарастырылады; «StrictThreaded» режимін қосты.
  • "Std.is" "Std.isOfType" пайдасына ескірген.
  • Жабылулардағы мәндері жоқ жергілікті айнымалыларды пайдалану кезінде ескерту қосылды.
  • js: "типтелмеген __js__(code, args)" ескірген, орнына "js.Syntax.code(code, args)" ауыстырылды.
  • php/neko: "neko.Web" және "php.Web" ескірген және кейінірек "hx4compat" кітапханасына жылжытылады.

Келесі шығарылымда жоспарланған:

  • Пакет менеджерінің жақсартулары haxelib.
  • API негізіндегі асинхронды жүйе libuv.
  • Корутиндер.
  • Модульдік статикалық функциялар мен айнымалыларды сыныптарды жасамай жариялау (түнгі құрылымдарда қазірдің өзінде қол жетімді).

Ақпарат көзі: opennet.ru

пікір қалдыру