Paglabas ng programming language na Haxe 4.2

Ang Haxe 4.2 toolkit ay magagamit na ngayon. Kabilang dito ang Haxe multi-paradigm, malakas na na-type, mataas na antas ng programming language, isang cross-compiler, at isang karaniwang library. 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 lisensyado sa ilalim 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 at malakas ang pagkaka-type. Sinusuportahan ang Object-oriented, generic, at functional na mga diskarte sa programming. Ang syntax ng Haxe ay malapit sa ECMAScript at pinapalawak ito ng mga feature gaya ng static na pagta-type, uri ng inference, pattern matching, generics, isang iterator-based na "for" loop, AST macros, GADTs (Generalized Algebraic Data Types), abstract na mga uri, anonymous na mga istraktura, pinasimple na mga kahulugan ng array, conditional na compilation ng mga expression ng klase at mga attachment, mga patlang na pinagsama-samang metadata, mga patlang. ('My name is $name'), type parameters ('new Main'), at higit pa. (“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 argumento na naglalahad ng operator na "f(...array)".
  • Pagpapatupad ng event loop para sa mga indibidwal na thread ("sys.thread.Thread.events").
  • Metadata "@:inheritDoc" para sa pagmamana ng uri/field na dokumentasyon.
  • Suporta para sa overloading ng pamamaraan para sa mga panlabas na pamamaraan sa lahat ng target na platform.
  • Pagpasa ng constructor na pinagbabatayan ng uri nito sa isang abstract gamit ang "@:forward.new" metadata.
  • Ang "EIs" constructor ay naidagdag sa "haxe.macro.Expr".
  • Kakayahang gumawa ng abstract na uri ng variant na may "@:forward.variance".
  • Ang representasyon ng "Anumang" uri bilang "Dynamic" kapag pinag-iisa ang pagkakaiba.
  • Naidagdag ang ilang pangunahing uri ng exception sa package na "haxe.exceptions".
  • Suporta para sa pag-attach ng metadata kapag nagdedeklara ng mga variable.
  • Ang 'StringTools.unsafeCharAt' function na ginagamit sa string iteration.
  • eval (interpreter): Nagdagdag ng mga binding sa libuv sa package na 'eval.luv'.
  • eval: mga binding sa native na "Int64" at "UInt64" na mga pagpapatupad 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 dynamic na pag-optimize ng code. 0 = wala, 1 = field read/write optimizations, 2 = method closures at compile time.
  • java, jvm: Suporta para sa flag na "--java-lib <directory>".
  • python: pagpapatupad ng threading API.

Pangkalahatang mga pagpapabuti:

  • Ang "expr ay SomeType" ay hindi nangangailangan ng mga panaklong.
  • Tumaas na priyoridad ng mga extension ng uri ng "@:using".
  • Ang mga static na uri ng extension ay pinapayagan sa pamamagitan ng 'super'.
  • Kakayahang magtakda ng metadata para 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 error sa maraming linya 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 mga tahasang uri at "sarado" kapag natapos ang function.
  • Ipahiwatig ang uri ng mga function na walang mga 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 sa mga panlabas na klase.
  • php: Idinagdag ang "php.Syntax.customArrayDecl" para sa pagdedeklara ng native array.
  • php: Na-update ang mga panlabas na pamamaraan (mga panlabas) 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 mga pagbabagong ginawa 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".

Ang VSCode editor add-on ay na-update din sa pinakabagong bersyon ng compiler, na nagtatampok ng mga tooltip para sa pagbuo ng mga nawawalang field ng interface, simple at abstract na mga klase, at mga pamamaraan ng property.

Pinagmulan: opennet.ru

Bumili ng maaasahang pagho-host para sa mga site na may proteksyon ng DDoS, mga server ng VPS VDS 🔥 Bumili ng maaasahang website hosting na may proteksyon ng DDoS, VPS VDS servers | ProHoster