Pagpagawas sa programming language nga Haxe 4.2

Ang usa ka pagpagawas sa Haxe 4.2 toolkit anaa, nga naglakip sa multi-paradigm high-level programming language nga parehas nga ngalan nga adunay kusog nga pag-type, usa ka cross-compiler ug usa ka standard nga librarya sa mga gimbuhaton. Gisuportahan sa proyekto ang paghubad sa C++, HashLink/C, JavaScript, C#, Java, PHP, Python ug Lua, ingon man ang paghugpong sa JVM, HashLink/JIT, Flash ug Neko bytecode, nga adunay access sa lumad nga kapabilidad sa matag target nga plataporma. Ang compiler code kay gipang-apud-apod ubos sa GPLv2 nga lisensya, ug ang standard library ug ang HashLink ug Neko virtual machines nga gihimo para sa Haxe kay lisensyado ubos sa MIT nga lisensya.

Ang pinulongan mao ang ekspresyon-oriented uban sa kusog nga pag-type. Gisuportahan ang Object-oriented, generic ug functional nga mga teknik sa programming. Ang syntax ni Haxe duol sa ECMAScript ug gipalapad kini sa mga feature sama sa static typing, auto-type inference, pattern matching, generics, iterator-based para sa mga loops, AST macros, GADT (Generalized Algebraic Data Types), abstract type, anonymous structures, gipasimple. mga depinisyon sa mga arrays, mga ekspresyon para sa conditional compilation, paglakip sa metadata sa mga field, classes ug expressions, string interpolation ('My name is $name'), type parameters ('bag-ong Main (β€œfoo”)') ug daghan pang uban. class Test { static function main() {katapusan nga mga tawo = [ "Elizabeth" => "Programming", "Joel" => "Design" ]; kay (ngalan => trabaho sa mga tawo) { trace('$name does $job for a living!'); } } }

Bag-ong mga bahin sa bersyon 4.2:

  • Pagdeklara sa mga static nga variable ug function sa lebel sa module, nga wala kinahanglana nga ibalot kini sa usa ka klase.
  • Suporta alang sa "klasikong" abstract nga mga klase ug mga gimbuhaton.
  • Lumad nga pagpatuman sa variadic functions alang sa tanang target nga mga plataporma (haxe.Rest) ug pagdugang sa argumento nga expansion operator "f(...array)".
  • Pagpatuman sa usa ka loop sa panghitabo alang sa indibidwal nga mga thread ("sys.thread.Thread.events").
  • "@:inheritDoc" metadata para sa pagpanunod sa tipo/field documentation.
  • Pamaagi sa overloading nga suporta alang sa gawas nga mga pamaagi sa tanan nga target nga mga plataporma.
  • Pagpasa sa constructor nga nagpahipi sa matang niini ngadto sa abstract gamit ang "@:forward.new" metadata.
  • Gidugang ang "EIs" constructor sa "haxe.macro.Expr".
  • Abilidad sa paghimo sa abstract type nga variant sa "@:forward.variance".
  • Ang representasyon sa "Bisan unsa" nga tipo isip "Dynamic" kung gihiusa ang kalainan.
  • Gidugang ang pipila ka sukaranan nga mga tipo sa eksepsiyon sa pakete nga "haxe.exceptions".
  • Suporta alang sa paglakip sa metadata kung nagpahayag sa mga variable.
  • Ang function nga "StringTools.unsafeCharAt" gigamit alang sa pag-uli sa string.
  • eval (interpreter): Gidugang nga mga binding sa "libuv" sa package nga "eval.luv".
  • eval: pagbugkos sa lumad nga pagpatuman sa "Int64" ug "UInt64" pinaagi sa "eval.integers" nga pakete.
  • cs: pagpatuman sa UDP socket.
  • cs: β€œcs.Syntax” module para sa inline nga pagsal-ot sa C# code.
  • jvm: Gidugang ang "-D jvm.dynamic-level=x" nga bandila aron makontrol ang gidaghanon sa mga namugna nga pag-optimize alang sa dinamikong code. 0 = wala, 1 = field read/write optimization, 2 = method closures sa compile time.
  • java, jvm: Suporta para sa "--java-lib <directory>" nga bandera.
  • python: pagpatuman sa threading API.

Kinatibuk-ang mga kalamboan:

  • Ang "expr mao ang SomeType" wala magkinahanglan og pagputos sa mga parentesis.
  • Nadugangan nga prayoridad para sa "@:gamit" nga mga extension sa tipo.
  • Gitugotan ang paggamit sa static type nga mga extension pinaagi sa "super".
  • Kaarang sa pagtakda sa metadata sa "@:noDoc" nga mga natad.
  • Ang abstract type nga "Map" gihimong transitive.
  • Suporta alang sa "@: lumad" sa mga konstruktor sa enum.
  • Suporta alang sa "@: paggamit" sa mga deklarasyon sa tipo ("typedefs").
  • Ang mga sayop nga multiline naggamit sa "..." isip prefix para sa sunod nga mga linya.
  • Ang type inference gi-rework na, ang anonymous nga mga istruktura mas maayo nga ma-convert ngadto sa klaro nga mga tipo ug "sirado" kung makompleto na ang function.
  • Pag-infer sa matang sa mga gimbuhaton nga walay mga argumento isip "()->..." imbes nga "Void->...".
  • Gitugotan ang keyword nga "function" isip usa ka ngalan sa package.
  • Gipauswag nga inlining sa mga butang.
  • cs: Gidugang nga suporta para sa .NET 5.0.
  • cpp: Suporta alang sa lumad nga mga konstruktor alang sa gawas nga mga klase.
  • php: Gidugang ang "php.Syntax.customArrayDecl" para magdeklara ug lumad nga array.
  • php: Gi-update nga mga pamaagi sa gawas alang sa lainlaing mga gimbuhaton ug mga klase.
  • php: Na-optimize nga pagpatuman sa mga anonymous nga istruktura.
  • hl: Laktawan ang compilation kung walay mga kausaban sa modules.
  • lua: Gigamit ang "hx-lua-simdjson" aron ma-parse ang json.
  • jvm: Pagkunhod sa CPU load sa "sys.thread.Lock" nga pagpatuman.
  • js: Gipauswag nga pagkaangay sa Google Closure Compiler.
  • Null Safety: Hunahunaa ang "@: nullSafety(Off)" sa pagdeklarar ug variables: "var @:nullSafety(Off) v".

Usab, ang pagdugang sa editor sa VSCode gi-update sa bag-ong bersyon sa compiler, diin ang mga pahiwatig nagpakita sa henerasyon sa nawala nga mga natad sa mga interface, yano ug abstract nga mga klase, ingon man mga pamaagi sa kabtangan.

Source: opennet.ru

Idugang sa usa ka comment