Paglabas ng programming language na Haxe 4.2

Available ang isang release ng Haxe 4.2 toolkit, 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. Ang compiler code ay ipinamamahagi sa ilalim ng lisensya ng GPLv2, at ang karaniwang library at ang HashLink at Neko virtual machine na binuo para sa Haxe ay lisensyado sa ilalim ng lisensya ng MIT.

Ang wika ay nakatuon sa pagpapahayag na may malakas na pag-type. Sinusuportahan ang Object-oriented, generic at functional na mga diskarte sa programming. Ang syntax ni Haxe ay malapit sa ECMAScript at pinapalawak ito ng mga feature gaya ng static na pagta-type, auto-type 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 mga arrays ng kahulugan, expression para sa conditional compilation, pag-attach ng metadata sa mga field, klase at expression, string interpolation ('My name is $name'), type parameters ('new Main("foo")') at marami pang iba. class Test { static function main() { final people = [ "Elizabeth" => "Programming", "Joel" => "Design" ]; para kay (pangalan => trabaho sa mga tao) { trace('$name does $job for a living!'); } } }

Mga bagong feature sa bersyon 4.2:

  • Pagdedeklara ng mga static na variable at function sa antas ng module, nang hindi na kailangang i-wrap ang mga ito sa isang klase.
  • Suporta para sa "klasikong" abstract na mga klase at function.
  • Native na pagpapatupad ng variadic function para sa lahat ng target na platform (haxe.Rest) at pagdaragdag ng argument expansion operator na β€œf(...array)”.
  • Pagpapatupad ng event loop para sa mga indibidwal na thread (β€œsys.thread.Thread.events”).
  • "@:inheritDoc" metadata para sa pagmamana ng uri/field documentation.
  • Paraan ng overloading na suporta para sa mga panlabas na pamamaraan sa lahat ng target na platform.
  • Ipinapasa ang constructor na pinagbabatayan ng uri nito sa abstract gamit ang "@:forward.new" metadata.
  • Idinagdag ang "EIs" constructor sa "haxe.macro.Expr".
  • Kakayahang gumawa ng abstract na uri ng variant na may "@:forward.variance".
  • Kinakatawan ang uri ng "Anumang" bilang "Dynamic" kapag pinag-iisa ang variation.
  • Nagdagdag ng ilang pangunahing uri ng exception sa package na "haxe.exceptions".
  • Suporta para sa pag-attach ng metadata kapag nagdedeklara ng mga variable.
  • Function na "StringTools.unsafeCharAt" na ginagamit para sa pag-ulit ng string.
  • eval (interpreter): Nagdagdag ng mga binding sa "libuv" sa package na "eval.luv".
  • eval: mga binding sa mga native na pagpapatupad ng "Int64" at "UInt64" sa pamamagitan ng package na "eval.integers."
  • cs: pagpapatupad ng socket ng UDP.
  • cs: module na β€œcs.Syntax” para sa mga inline na pagpapasok ng C# code.
  • jvm: Idinagdag ang flag na β€œ-D jvm.dynamic-level=x” upang kontrolin ang bilang ng mga nabuong pag-optimize para sa dynamic na code. 0 = wala, 1 = field read/write optimization, 2 = paraan ng pagsasara sa oras ng pag-compile.
  • java, jvm: Suporta para sa flag na "--java-lib ".
  • python: pagpapatupad ng threading API.

Pangkalahatang mga pagpapabuti:

  • Ang "expr ay SomeType" ay hindi nangangailangan ng pambalot sa mga panaklong.
  • Tumaas na priyoridad para sa mga extension ng uri ng "@:using".
  • Pinapayagan ang paggamit ng mga static na uri ng extension sa pamamagitan ng "super".
  • Kakayahang magtakda ng metadata sa mga field na β€œ@:noDoc”.
  • Ang abstract na uri na "Map" ay ginawang palipat.
  • Suporta para sa "@:native" sa mga enum constructor.
  • Suporta para sa "@:using" sa mga uri ng deklarasyon ("typedefs").
  • Ang mga multiline na error ay gumagamit ng "..." bilang prefix para sa mga kasunod na linya.
  • Ang uri ng hinuha ay muling ginawa, ang mga anonymous na istruktura ay mas mahusay na na-convert sa tahasang mga uri at "sarado" kapag natapos ang function.
  • Inferring ang uri ng mga function na walang argumento bilang "()->..." sa halip na "Void->...".
  • Ang keyword na "function" ay pinapayagan bilang isang pangalan ng package.
  • Pinahusay na inlining ng mga bagay.
  • cs: Nagdagdag ng suporta para sa .NET 5.0.
  • cpp: Suporta para sa mga katutubong konstruktor para sa mga panlabas na klase.
  • php: Idinagdag ang "php.Syntax.customArrayDecl" para magdeklara ng native array.
  • php: Na-update ang mga panlabas na pamamaraan para sa iba't ibang mga function at klase.
  • php: Na-optimize na pagpapatupad ng mga anonymous na istruktura.
  • hl: Laktawan ang compilation kung walang pagbabago sa mga module.
  • lua: Gamit ang "hx-lua-simdjson" para i-parse ang json.
  • jvm: Binawasan ang pag-load ng CPU sa pagpapatupad ng "sys.thread.Lock".
  • js: Pinahusay na compatibility sa Google Closure Compiler.
  • Null Safety: Isaalang-alang ang "@:nullSafety(Off)" kapag nagdedeklara ng mga variable: "var @:nullSafety(Off) v".

Gayundin, ang pagdaragdag sa editor ng VSCode ay na-update sa bagong bersyon ng compiler, kung saan lumitaw ang mga pahiwatig kasama ang henerasyon ng mga nawawalang larangan ng mga interface, simple at abstract na mga klase, pati na rin ang mga pamamaraan ng pag-aari.

Pinagmulan: opennet.ru

Magdagdag ng komento