Ngaleupaskeun basa pamrograman Haxe 4.2

Pelepasan toolkit Haxe 4.2 sayogi, kalebet basa pamrograman tingkat tinggi multi-paradigma tina nami anu sami sareng ngetik anu kuat, kompiler silang sareng perpustakaan fungsi standar. Proyék ngadukung tarjamahan kana C ++, HashLink / C, JavaScript, C #, Java, PHP, Python sareng Lua, ogé kompilasi kana JVM, HashLink / JIT, Flash sareng Neko bytecode, kalayan aksés kana kamampuan asli unggal platform target. Kodeu kompiler disebarkeun dina lisénsi GPLv2, sareng perpustakaan standar sareng mesin virtual HashLink sareng Neko dikembangkeun pikeun Haxe dilisensikeun ku lisénsi MIT.

Basana berorientasi éksprési kalayan ngetik anu kuat. Téhnik program berorientasi obyék, umum sareng fungsional dirojong. Sintaksis Haxe caket kana ECMAScript sareng ngalegaan ku fitur sapertos ngetik statik, inferensi tipe otomatis, cocog pola, generik, basis iterator pikeun loop, AST macros, GADT (Generalized Algebraic Data Types), tipe abstrak, struktur anonim, disederhanakeun. arrays definisi, ungkapan pikeun kompilasi kondisional, ngalampirkeun metadata kana widang, kelas jeung éksprési, interpolasi string ('Nami abdi $ ngaran'), tipe parameter ('Utama anyar("foo")') jeung leuwih. class Test {fungsi statik main() {jalma ahir = [ "Elizabeth" => "Programming", "Joel" => "Desain"]; pikeun (ngaran => pakasaban di jalma) { trace ('$ ngaran teu $ pakasaban pikeun hirup!'); } } }

Fitur anyar dina versi 4.2:

  • Ngadéklarasikeun variabel statik jeung fungsi dina tingkat modul, tanpa perlu mungkus aranjeunna dina kelas.
  • Rojongan pikeun kelas abstrak "klasik" jeung fungsi.
  • palaksanaan pituin fungsi variadic pikeun sakabéh platform target (haxe.Rest) jeung tambahan tina operator ékspansi argumen "f (... array)".
  • Palaksanaan loop acara pikeun thread individu ("sys.thread.Thread.events").
  • "@: inheritDoc" metadata pikeun tipe inheriting / dokuméntasi widang.
  • Métode overloading rojongan pikeun métode éksternal on sadayana platform target.
  • Neraskeun constructor kaayaan tipe na kana abstrak ngagunakeun "@:forward.new" metadata.
  • Ditambahkeun "EIs" constructor kana "haxe.macro.Expr".
  • Kamampuhan pikeun nyieun varian tipe abstrak kalawan "@: forward.variance".
  • Ngawakilan tipe "Sakur" salaku "Dinamis" nalika ngahijikeun variasi.
  • Ditambahkeun sababaraha jinis iwal dasar kana pakét "haxe.exceptions".
  • Rojongan pikeun ngalampirkeun metadata nalika nyatakeun variabel.
  • Fungsi "StringTools.unsafeCharAt" dipaké pikeun Iteration string.
  • eval (interpreter): Ditambahkeun bindings kana "libuv" dina pakét "eval.luv".
  • eval: bindings kana palaksanaan asli "Int64" jeung "UInt64" via pakét "eval.integers".
  • cs: palaksanaan stop kontak UDP.
  • cs: "cs.Syntax" modul keur insertions inline of C # kode.
  • jvm: Ditambahkeun bendera "-D jvm.dynamic-level = x" pikeun ngadalikeun jumlah optimizations dihasilkeun pikeun kode dinamis. 0 = euweuh, 1 = widang maca / nulis optimasi, 2 = closures metoda dina waktos compile.
  • java, jvm: Rojongan pikeun bendera "--java-lib ".
  • python: threading palaksanaan API.

Perbaikan umum:

  • "expr nyaeta SomeType" teu merlukeun wrapping dina kurung.
  • Ngaronjatkeun prioritas pikeun ekstensi tipe "@: ngagunakeun".
  • Ngidinan pamakéan ekstensi tipe statik via "super".
  • Kamampuhan pikeun nyetél metadata kana widang "@:noDoc".
  • Jinis abstrak "Peta" dijieun transitif.
  • Rojongan pikeun "@: asli" dina konstruktor enum.
  • Rojongan pikeun "@: ngagunakeun" dina deklarasi tipe ("typedefs").
  • Kasalahan multiline ngagunakeun "..." salaku awalan pikeun baris saterusna.
  • Inferensi jinis parantos didamel deui, struktur anonim langkung saé dirobih janten jinis eksplisit sareng "ditutup" nalika fungsina réngsé.
  • Inferring tipe fungsi tanpa argumen salaku "()->..." tinimbang "Void->...".
  • Kecap konci "fungsi" diidinan salaku nami pakét.
  • Ningkatkeun inlining objék.
  • cs: Ditambahkeun rojongan pikeun .NET 5.0.
  • cpp: Rojongan pikeun konstruktor asli pikeun kelas éksternal.
  • php: Ditambahkeun "php.Syntax.customArrayDecl" pikeun nyatakeun susunan asli.
  • php: Métode éksternal anu diropéa pikeun sababaraha fungsi sareng kelas.
  • php: palaksanaan dioptimalkeun tina struktur anonim.
  • hl: Skip kompilasi lamun euweuh parobahan modul.
  • lua: Ngagunakeun "hx-lua-simdjson" pikeun parse json.
  • jvm: Ngurangan beban CPU dina palaksanaan "sys.thread.Lock".
  • js: Ningkatkeun kasaluyuan sareng Google Closure Compiler.
  • Null Kasalametan: Pertimbangkeun "@: nullSafety (Pareum)" nalika nyatakeun variabel: "var @: nullSafety (Pareum) v".

Sajaba ti éta, tambahan ka redaktur VSCode geus diropéa kana versi anyar tina kompiler, nu pitunjuk geus mucunghul jeung generasi leungit widang interfaces, kelas basajan tur abstrak, kitu ogé métode sipat.

sumber: opennet.ru

Tambahkeun komentar