Ngaleupaskeun basa pamrograman Haxe 4.1

Aya release toolkit Haxe 4.1, nu ngawengku multi-paradigma-tingkat tinggi basa programming tina nami nu sami sareng ketikan kuat, cross-compiler sarta perpustakaan standar fungsi. 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 ku handapeun lisénsi GPLv2, jeung perpustakaan baku sarta mesin virtual dikembangkeun pikeun Haxe HashLink и neko handapeun lisénsi MIT.

Basa téh berorientasi éksprési kalawan ketikan kuat. Téhnik program berorientasi obyék, umum sareng fungsional dirojong. sintaksis Haxe deukeut ECMAScript jeung ngalegaan fitur na kayaning ketikan statik, autotype inferensi, pola cocog, generiks, iterator basis pikeun loops, AST macros, GADT (Generalized Aljabar Data Types), tipe abstrak, struktur anonim, disederhanakeun harti arrays, ekspresi kompilasi kondisional, ngalampirkeun metadata kana widang , kelas jeung éksprési, interpolasi string ("'Nami abdi $nami'"), tipe parameter ('Utama anyar ("foo") ') jeung leuwih loba.

Tes kelas {
fungsi statik main() {
jalma ahir = [
"Elizabeth" => "Pemrograman",
"Joel" => "Desain"
];

pikeun (ngaran => pakasaban di jalma) {
trace('$ngaran teu $proyék keur hirup!');
}
}
}

Fitur anyar dina versi 4.1:

  • Ditambahkeun optimasi recursion buntut.
  • Ditambahkeun API ngahijikeun anyar pikeun penanganan iwal.
  • Konstruksi "coba {} nyekel (e) {}" diwenangkeun salaku shorthand pikeun "coba {} nyekel (e: haxe.Exception) {}".
  • Ditambahkeun dukungan SSL ka juru eval.
  • Target JVM henteu deui dianggap ékspérimén.
  • Pikeun Language Server Protocol, dukungan pikeun fungsi "Goto Implementation" sareng "Find references" tos ditambahkeun.
  • Ningkatkeun nami variabel lokal samentawis dina kode anu dihasilkeun. Dipiceun kaleuleuwihan "balik;" dina fungsi panah tanpa nilai balik.
  • Kombinasi aksés (meunang, standar) diwenangkeun dina widang (getter wungkul, kabiasaan ngerjakeun standar).
  • Ngidinan operator nambahan sareng ngirangan pikeun widang jenis abstrak.
  • Ningkatkeun inlining pikeun puteran nganggo iterator anonim.
  • js: Ningkatkeun palaksanaan StringMap pikeun ES5.
  • js: Generasi variabel hayu geus ditambahkeun kana pilihan compiler "-D js-es = 6", generasi kelas ES6 geus ningkat.
  • lua: "StringIterator" dioptimalkeun, penanganan kasalahan ningkat.
  • php: Dioptimalkeun "Std.isOfType" pikeun jenis dasar.
  • php: Asép Sunandar Sunarya ayeuna nerapkeun interfaces asli "Iterator", "IteratorAggregate", "Countable".
  • cs: Ditambahkeun metadata "@: assemblyMeta" jeung "@: assemblyStrict".
  • python: ditambahkeun palaksanaan "__contains__" pikeun objék anonim
    jeung "__getitem__", anu ngamungkinkeun aranjeunna bisa dipaké salaku kamus dina kode dihasilkeun.

  • jvm: Ningkatkeun kinerja sacara signifikan berkat cara anyar pikeun ngaksés fungsi anu diketik sareng ngahasilkeun antarmuka tambahan dina kasus dimana objék dianggo salaku struktur anonim (pencarian sipat dinamis dicegah):
    Ngaleupaskeun basa pamrograman Haxe 4.1

Perbaikan dina perpustakaan standar:

  • Ditambahkeun "Array.contains" fungsi.
  • Ditambahkeun "Array.keyValueIterator", nu implements key-nilai Iteration pikeun arrays ("pikeun (konci => nilai dina Asép Sunandar Sunarya)").
  • Ditambahkeun tipe konstrain "haxe.Constraints.NotVoid".
  • The "findIndex" jeung "foldi" fungsi geus ditambahkeun kana kelas "Lambda".
  • Dilaksanakeun "aksés Asép Sunandar Sunarya" (aksés via "arr[i]") sarta Iteration konci-nilai pikeun "haxe.ds.HashMap".
  • jvm: Dilaksanakeun versi JVM-spésifik tina "StringMap", "sys.thread.Lock", "sys.thread.Thread".
  • java / jvm: Dipaké palaksanaan asli "MD5", "SHA-1" jeung "SHA-256" pikeun modul "haxe.crypto".
  • makro: Ditambahkeun "haxe.macro.Context.containsDisplayPosition (pos)".
  • nullsafety: "Ketat" mode ayeuna diperlakukeun salaku single threaded; ditambahkeun "StrictThreaded" mode.
  • "Std.is" geus deprecated dina kahadean "Std.isOfType".
  • Ditambahkeun peringatan nalika nganggo variabel lokal tanpa nilai dina panutupanana.
  • js: "untyped __js__(kode, args)" geus deprecated, diganti ku "js.Syntax.code (kode, args)".
  • php / neko: "neko.Web" jeung "php.Web" geus deprecated sarta bakal dipindahkeun ka perpustakaan "hx4compat" engké.

Dina release salajengna direncanakeun:

  • Perbaikan manajer pakét haxelib.
  • Sistim Asynchronous dumasar API libuv.
  • Coroutines.
  • Ngadéklarasikeun fungsi statik modular jeung variabel tanpa nyieun kelas (geus sadia dina nightly ngawangun).

sumber: opennet.ru

Tambahkeun komentar