Нашри забони барномасозии Haxe 4.2

Нашри асбоби Haxe 4.2 дастрас аст, ки он забони бисёрпарадигмавии барномасозии сатҳи баланди ҳамон номро бо чопкунии қавӣ, компилятори кросс ва китобхонаи стандартии функсияҳоро дар бар мегирад. Лоиҳа тарҷумаро ба C++, HashLink/C, JavaScript, C#, Java, PHP, Python ва Lua, инчунин тартиб додани JVM, HashLink/JIT, Flash ва Neko байткоди бо дастрасӣ ба имкониятҳои аслии ҳар як платформаи мавриди ҳадаф дастгирӣ мекунад. Рамзи компилятор тибқи иҷозатномаи GPLv2 паҳн карда мешавад ва китобхонаи стандартӣ ва мошинҳои виртуалии HashLink ва Neko, ки барои Haxe таҳия шудаанд, тибқи иҷозатномаи MIT иҷозатнома доранд.

Забон ба ифода нигаронида шудааст ва бо чопкунии қавӣ. Усулҳои барномасозии ба объект нигаронидашуда, умумӣ ва функсионалӣ дастгирӣ карда мешаванд. Синтаксиси Haxe ба ECMAScript наздик аст ва онро бо чунин хусусиятҳо ба монанди чопкунии статикӣ, хулосаи автоматии навъи худ, мувофиқати намуна, генерикҳо, итератор дар асоси ҳалқаҳо, макросҳои AST, GADT (Намудҳои умумии додаҳои алгебрӣ), навъҳои абстрактӣ, сохторҳои беном, соддакардашуда васеъ мекунад. массивҳои таърифҳо, ифодаҳо барои тартиб додани шартӣ, замима кардани метамаълумот ба майдонҳо, синфҳо ва ифодаҳо, интерполясияи сатр ('Номи ман $name'), параметрҳои навъи ('Номи нав («foo»)') ва бисьёр дигарон. class Test { функсияи статикӣ main() { одамони ниҳоӣ = [ "Элизабет" => "Барномасозӣ", "Ҷоел" => "Тарроҳӣ" ]; барои (ном => кор дар одамон) { trace('$name $work барои зиндагӣ мекунад!'); } } }

Хусусиятҳои нав дар версияи 4.2:

  • Эълон кардани тағирёбандаҳо ва функсияҳои статикӣ дар сатҳи модул, бидуни зарурати печонидани онҳо дар синф.
  • Дастгирии синфҳо ва функсияҳои абстрактии "классикӣ".
  • Татбиқи аслии функсияҳои вариадикӣ барои ҳама платформаҳои мақсаднок (haxe.Rest) ва илова кардани оператори тавсеаи аргумент "f(...array)".
  • Татбиқи даври рӯйдодҳо барои риштаҳои алоҳида (“sys.thread.Thread.events”).
  • "@:inheritDoc" метамаълумот барои мерос гирифтани ҳуҷҷатҳои навъи/саҳар.
  • Дастгирии изофабори усул барои усулҳои беруна дар ҳама платформаҳои мақсаднок.
  • Интиқоли конструкторе, ки дар асоси навъи он ҷойгир аст, бо истифода аз метамаълумоти "@:forward.new" ба реферат.
  • Ба "haxe.macro.Expr" созандаи "EIs" илова карда шуд.
  • Имконияти сохтани варианти абстрактӣ бо "@:forward.variance".
  • Намояндагии навъи "Ягон" ҳамчун "Динамикӣ" ҳангоми муттаҳидсозии вариант.
  • Ба бастаи "haxe.exceptions" баъзе намудҳои асосии истисно илова карда шуданд.
  • Дастгирии замима кардани метамаълумот ҳангоми эълони тағирёбандаҳо.
  • Функсияи "StringTools.unsafeCharAt" барои такрори сатр истифода мешавад.
  • eval (тарҷумон): Пайвандҳои иловашуда ба "libuv" дар бастаи "eval.luv".
  • eval: пайвастшавӣ ба татбиқи аслии "Int64" ва "UInt64" тавассути бастаи "eval.integers".
  • cs: татбиқи васлаки UDP.
  • cs: модули "cs.Syntax" барои воридкунии дохили рамзи C#.
  • jvm: Илова кардани парчами "-D jvm.dynamic-level=x" барои назорат кардани шумораи оптимизатсияҳои тавлидшуда барои коди динамикӣ. 0 = ҳеҷ, 1 = оптимизатсияи хондан/навиштани майдон, 2 = баста шудани усул дар вақти тартибдиҳӣ.
  • java, jvm: Дастгирии парчами "--java-lib <директория>".
  • python: татбиқи риштаи API.

Такмилҳои умумӣ:

  • "expr is SomeType" печонидани дар қавсро талаб намекунад.
  • Афзалияти зиёд барои васеъшавии навъи "@:using".
  • Истифодаи васеъшавии навъи статикӣ тавассути "super" иҷозат медиҳад.
  • Имконияти танзими метамаълумот ба майдонҳои "@: noDoc".
  • Навъи абстрактии «Харита» гузаранда карда шудааст.
  • Дастгирии "@: native" дар конструкторҳои enum.
  • Дастгирии "@:using" дар эъломияҳои навъи ("typedefs").
  • Хатогиҳои чандсатрӣ "..."-ро ҳамчун префикс барои сатрҳои минбаъда истифода мебаранд.
  • Хулосаи намуд аз нав кор карда шуд, сохторҳои номаълум ба намудҳои возеҳ табдил дода мешаванд ва ҳангоми ба итмом расидани функсия "пӯшида" мешаванд.
  • Хулосаи намуди функсияҳо бидуни аргумент ҳамчун "()->..." ба ҷои "Void->...".
  • Калимаи калидии "функсия" ҳамчун номи баста иҷозат дода мешавад.
  • Беҳтар кардани қадкашии объектҳо.
  • cs: Дастгирии иловашуда барои .NET 5.0.
  • cpp: Дастгирии созандагони ватанӣ барои синфҳои беруна.
  • php: Барои эълон кардани массиви аслӣ "php.Syntax.customArrayDecl" илова карда шуд.
  • php: Усулҳои навшудаи беруна барои вазифаҳо ва синфҳои гуногун.
  • php: Татбиқи оптимизатсияи сохторҳои номаълум.
  • hl: Агар дар модулҳо ягон тағирот мавҷуд набошад, компиляцияро гузаред.
  • lua: Истифодаи "hx-lua-simdjson" барои таҳлили json.
  • jvm: Камшавии сарбории CPU дар татбиқи "sys.thread.Lock".
  • js: Мутобиқати беҳтаршуда бо Google Closure Compiler.
  • Бехатарии нул: Ҳангоми эълони тағирёбандаҳо "@:nullSafety(Off)" -ро баррасӣ кунед: "var @: nullSafety(Off) v".

Инчунин, илова ба муҳаррири VSCode ба версияи нави компилятор навсозӣ шудааст, ки дар он маслиҳатҳо бо тавлиди майдонҳои гумшудаи интерфейсҳо, синфҳои оддӣ ва абстрактӣ, инчунин усулҳои моликият пайдо шудаанд.

Манбаъ: opennet.ru

Илова Эзоҳ