Paglabas ng programming language na Haxe 4.1

Magagamit paglabas ng toolkit Haxe 4.1, na kinabibilangan ng multi-paradigm high-level programming language na may parehong pangalan na may malakas na pag-type, isang cross-compiler at isang karaniwang library ng mga function. Sinusuportahan ng proyekto ang pagsasalin sa C++, HashLink/C, JavaScript, C#, Java, PHP, Python at Lua, pati na rin ang compilation sa JVM, HashLink/JIT, Flash at Neko bytecode, na may access sa mga native na kakayahan ng bawat target na platform. Compiler code ipinamahagi ni sa ilalim ng lisensya ng GPLv2, at ang karaniwang library at virtual machine na binuo para sa Haxe HashLink ΠΈ Neko sa ilalim ng lisensya ng MIT.

Ang wika ay expression-oriented na may malakas na pag-type. Sinusuportahan ang Object-oriented, generic at functional na mga diskarte sa programming. Ang Haxe syntax ay malapit sa ECMAScript at lumalawak ang mga tampok nito gaya ng static na pag-type, autotype inference, pattern matching, generics, iterator-based para sa mga loop, AST macros, GADT (Generalized Algebraic Data Types), abstract na mga uri, anonymous na istruktura, pinasimple na mga kahulugan ng array, conditional compilation expression, pag-attach ng metadata sa mga field , mga klase at expression, string interpolation (β€œ'My name is $name'”), type parameters ('new Main ("foo")') at higit pa.

pagsubok sa klase {
static function main() {
huling mga tao = [
"Elizabeth" => "Pagprograma",
"Joel" => "Disenyo"
];

para kay (pangalan => trabaho sa mga tao) {
trace('Ang $pangalan ay gumagawa ng $trabaho para mabuhay!');
}
}
}

Mga bagong feature sa bersyon 4.1:

  • Nagdagdag ng tail recursion optimization.
  • Nagdagdag ng bagong pinag-isang API para sa paghawak ng exception.
  • Ang construct na "try {} catch(e) {}" ay pinapayagan bilang shorthand para sa "try {} catch(e: haxe.Exception) {}".
  • Nagdagdag ng suporta sa SSL sa eval interpreter.
  • Ang target na JVM ay hindi na itinuturing na pang-eksperimento.
  • Para sa Language Server Protocol, idinagdag ang suporta para sa "Goto Implementation" at "Find references".
  • Pinahusay na pagpapangalan ng mga pansamantalang lokal na variable sa nabuong code. Inalis ang kalabisan "return;" sa mga arrow function na walang return value.
  • Ang mga kumbinasyon ng pag-access (kumuha, default) ay pinapayagan sa mga field (getter lang, default na gawi sa pagtatalaga).
  • Payagan ang mga operator ng pagtaas at pagbaba para sa mga field mga uri ng abstract.
  • Pinahusay na inlining ng para sa mga loop gamit ang mga hindi kilalang iterator.
  • js: Pinahusay na pagpapatupad ng StringMap para sa ES5.
  • js: Ang pagbuo ng mga variable na let ay naidagdag sa opsyon ng compiler na "-D js-es=6", ang pagbuo ng mga klase ng ES6 ay napabuti.
  • lua: Na-optimize ang "StringIterator", napabuti ang paghawak ng error.
  • php: Na-optimize ang "Std.isOfType" para sa mga base na uri.
  • php: Ang mga nabuong array ay nagpapatupad na ngayon ng mga katutubong interface na "Iterator", "IteratorAggregate", "Countable".
  • cs: Nagdagdag ng metadata "@:assemblyMeta" at "@:assemblyStrict".
  • python: nagdagdag ng pagpapatupad ng "__contains__" sa mga hindi kilalang bagay
    at "__getitem__", na nagpapahintulot sa kanila na magamit bilang mga diksyunaryo sa nabuong code.

  • jvm: Makabuluhang pinabuting pagganap salamat sa isang bagong paraan ng pag-access sa mga na-type na function at pagbuo ng mga karagdagang interface sa mga kaso kung saan ang mga bagay ay ginagamit bilang mga anonymous na istruktura (pinipigilan ang dynamic na paghahanap ng ari-arian):
    Paglabas ng programming language na Haxe 4.1

Mga pagpapabuti sa karaniwang aklatan:

  • Idinagdag ang function na "Array.contains".
  • Idinagdag ang "Array.keyValueIterator", na nagpapatupad ng key-value iteration para sa mga arrays ("para sa (key => value sa array)").
  • Nagdagdag ng uri ng pagpilit na "haxe.Constraints.NotVoid".
  • Ang mga function na "findIndex" at "foldi" ay naidagdag sa klase ng "Lambda".
  • Ipinatupad ang "array access" (access sa pamamagitan ng "arr[i]") at key-value iteration para sa "haxe.ds.HashMap".
  • jvm: Ipinatupad ang mga bersyon na partikular sa JVM ng "StringMap", "sys.thread.Lock", "sys.thread.Thread".
  • java/jvm: Ginamit ang mga katutubong pagpapatupad ng "MD5", "SHA-1" at "SHA-256" para sa mga module na "haxe.crypto".
  • macro: Idinagdag ang "haxe.macro.Context.containsDisplayPosition(pos)".
  • nullsafety: Ang "Strict" mode ay itinuturing na ngayon bilang single threaded; nagdagdag ng "StrictThreaded" mode.
  • Ang "Std.is" ay hindi na ginagamit pabor sa "Std.isOfType."
  • Nagdagdag ng babala kapag gumagamit ng mga lokal na variable na walang mga halaga sa pagsasara.
  • js: Ang "untyped __js__(code, args)" ay hindi na ginagamit, pinalitan ng "js.Syntax.code(code, args)".
  • php/neko: "neko.Web" at "php.Web" ay hindi na ginagamit at ililipat sa "hx4compat" library mamaya.

Sa susunod na release ay binalak:

  • Mga pagpapabuti ng manager ng package haxelib.
  • Nakabatay sa Asynchronous system API libuv.
  • Mga Coroutine.
  • Pagdedeklara ng mga modular static na function at variable nang hindi lumilikha ng mga klase (magagamit na sa gabi-gabing build).

Pinagmulan: opennet.ru

Magdagdag ng komento