Pagpagawas sa programming language nga Haxe 4.1

Magamit pagpagawas sa toolkit Haxe 4.1, 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. Compiler code giapod-apod sa ubos sa lisensya sa GPLv2, ug ang standard nga librarya ug mga virtual nga makina nga gihimo alang sa Haxe HashLink ΠΈ neko ubos sa lisensya sa MIT.

Ang pinulongan mao oriented sa ekspresyon uban ang kusog nga pag-type. Gisuportahan ang Object-oriented, generic ug functional nga mga teknik sa programming. Ang Haxe syntax duol sa ECMAScript ug nagpalapad ang mga bahin niini sama sa static nga pag-type, autotype inference, pattern matching, generics, iterator-based para sa mga loops, AST macros, GADT (Generalized Algebraic Data Types), abstract nga mga tipo, anonymous nga mga istruktura, gipasimple nga mga depinisyon sa array, conditional compilation expressions, attaching metadata to fields , mga klase ug ekspresyon, string interpolation (β€œ'My name is $name'"), type parameters ('bag-ong Main("foo")'), ug daghan pa.

klase nga Pagsulay {
static function main() {
katapusan nga mga tawo = [
"Elizabeth" => "Pagprograma",
"Joel" => "Disenyo"
];

kay (ngalan => trabaho sa mga tawo) {
trace('$ngalan kay $trabaho para panginabuhian!');
}
}
}

Bag-ong mga bahin sa bersyon 4.1:

  • Gidugang ang tail recursion optimization.
  • Gidugang ang usa ka bag-ong nahiusa nga API alang sa pagdumala sa eksepsiyon.
  • Ang construct nga "try {} catch(e) {}" kay gitugutan isip shorthand para sa "try {} catch(e: haxe.Exception) {}".
  • Gidugang ang suporta sa SSL sa eval interpreter.
  • Ang target nga JVM wala na isipa nga eksperimento.
  • Para sa Language Server Protocol, gidugang ang suporta para sa β€œGoto Implementation” ug β€œFind references”.
  • Gipauswag nga pagngalan sa temporaryo nga lokal nga mga variable sa nahimo nga code. Gitangtang ang sobra nga "pagbalik;" sa arrow functions nga walay return value.
  • Ang mga kombinasyon sa pag-access (pagkuha, default) gitugotan sa mga natad (getter lamang, default nga pamatasan sa buluhaton).
  • Tugoti ang pagdugang ug pagkunhod sa mga operator alang sa mga natad abstract nga mga tipo.
  • Gipauswag nga inlining sa for loops gamit ang anonymous iterators.
  • js: Gipauswag nga pagpatuman sa StringMap para sa ES5.
  • js: Ang paghimo sa mga variable nga let gidugang sa opsyon sa compiler nga "-D js-es=6", ang henerasyon sa mga klase sa ES6 gipauswag.
  • lua: Gi-optimize ang "StringIterator", gipauswag ang pagdumala sa sayup.
  • php: Gi-optimize nga "Std.isOfType" para sa mga tipo sa base.
  • php: Gibuhat nga mga arrays karon nagpatuman sa lumad nga mga interface nga "Iterator", "IteratorAggregate", "Countable".
  • cs: Gidugang ang metadata "@:assemblyMeta" ug "@:assemblyStrict".
  • python: gidugang nga pagpatuman sa "__contains__" sa dili mailhan nga mga butang
    ug "__getitem__", nga nagtugot kanila nga gamiton isip mga diksyonaryo sa namugna nga code.

  • jvm: Mahinungdanon nga gipauswag ang pasundayag salamat sa usa ka bag-ong paagi sa pag-access sa gi-type nga mga gimbuhaton ug paghimo og dugang nga mga interface sa mga kaso diin ang mga butang gigamit ingon mga anonymous nga istruktura (gipugngan ang dinamikong pagpangita sa kabtangan):
    Pagpagawas sa programming language nga Haxe 4.1

Mga pag-uswag sa standard nga librarya:

  • Gidugang ang "Array.contains" function.
  • Gidugang ang "Array.keyValueIterator", nga nagpatuman sa key-value iteration para sa arrays ("for (key => value in array)").
  • Gidugang nga tipo sa pagpugong nga "haxe.Constraints.NotVoid".
  • Ang mga function sa "findIndex" ug "foldi" gidugang sa klase nga "Lambda".
  • Gipatuman ang "array access" (access pinaagi sa "arr[i]") ug key-value iteration para sa "haxe.ds.HashMap".
  • jvm: Gipatuman ang JVM-specific nga mga bersyon sa "StringMap", "sys.thread.Lock", "sys.thread.Thread".
  • java/jvm: Gigamit nga lumad nga pagpatuman sa "MD5", "SHA-1" ug "SHA-256" para sa "haxe.crypto" nga mga module.
  • macro: Gidugang "haxe.macro.Context.containsDisplayPosition(pos)".
  • nullsafety: Ang "Strict" mode kay gitratar na nga single threaded; gidugang "StrictThreaded" mode.
  • Ang "Std.is" wala na gigamit pabor sa "Std.isOfType".
  • Nagdugang usa ka pasidaan kung gigamit ang mga lokal nga variable nga wala’y mga kantidad sa mga pagsira.
  • js: Ang "untyped __js__(code, args)" wala na gamita, gipulihan sa "js.Syntax.code(code, args)".
  • php/neko: "neko.Web" ug "php.Web" wala na gamita ug ibalhin sa "hx4compat" library unya.

Sa sunod nga pagpagawas giplanohan:

  • Mga pagpaayo sa manager sa package haxelib.
  • Asynchronous nga sistema nga gibase sa API libuv.
  • Mga Coroutine.
  • Pagdeklara sa modular static nga mga gimbuhaton ug mga variable nga wala maghimo mga klase (anaa na sa matag gabii nga pagtukod).

Source: opennet.ru

Idugang sa usa ka comment