Rilis bahasa pemrograman Haxe 4.2

Rilis toolkit Haxe 4.2 telah tersedia, yang mencakup bahasa pemrograman tingkat tinggi multi-paradigma dengan nama yang sama dengan pengetikan yang kuat, kompiler silang, dan pustaka fungsi standar. Proyek ini mendukung terjemahan ke C++, HashLink/C, JavaScript, C#, Java, PHP, Python dan Lua, serta kompilasi ke JVM, HashLink/JIT, Flash dan bytecode Neko, dengan akses ke kemampuan asli setiap platform target. Kode kompiler didistribusikan di bawah lisensi GPLv2, dan perpustakaan standar serta mesin virtual HashLink dan Neko yang dikembangkan untuk Haxe dilisensikan di bawah lisensi MIT.

Bahasanya berorientasi pada ekspresi dengan pengetikan yang kuat. Teknik pemrograman berorientasi objek, generik dan fungsional didukung. Sintaks Haxe dekat dengan ECMAScript dan memperluasnya dengan fitur-fitur seperti pengetikan statis, inferensi tipe otomatis, pencocokan pola, generik, loop for berbasis iterator, makro AST, GADT (Tipe Data Aljabar Umum), tipe abstrak, struktur anonim, disederhanakan array definisi, ekspresi untuk kompilasi bersyarat, melampirkan metadata ke bidang, kelas dan ekspresi, interpolasi string ('Nama saya $nama'), parameter tipe ('Utama("foo")') dan banyak lagi. class Test { fungsi statis main() { final people = [ "Elizabeth" => "Pemrograman", "Joel" => "Desain" ]; for (nama => pekerjaan di bidang orang) { trace('$nama melakukan $pekerjaan untuk mencari nafkah!'); } } }

Fitur baru di versi 4.2:

  • Mendeklarasikan variabel dan fungsi statis pada level modul, tanpa perlu menggabungkannya ke dalam kelas.
  • Dukungan untuk kelas dan fungsi abstrak "klasik".
  • Implementasi asli fungsi variadik untuk semua platform target (haxe.Rest) dan penambahan operator perluasan argumen “f(...array)”.
  • Implementasi loop peristiwa untuk masing-masing thread (“sys.thread.Thread.events”).
  • Metadata "@:inheritDoc" untuk mewarisi dokumentasi tipe/bidang.
  • Dukungan metode yang berlebihan untuk metode eksternal di semua platform target.
  • Meneruskan konstruktor yang mendasari tipenya ke abstrak menggunakan metadata “@:forward.new”.
  • Menambahkan konstruktor "EIs" ke "haxe.macro.Expr".
  • Kemampuan untuk membuat varian tipe abstrak dengan "@:forward.variance".
  • Representasi tipe “Apapun” sebagai “Dinamis” saat menyatukan variasi.
  • Menambahkan beberapa tipe pengecualian dasar ke paket "haxe.Exceptions".
  • Dukungan untuk melampirkan metadata saat mendeklarasikan variabel.
  • Fungsi "StringTools.unsafeCharAt" digunakan untuk iterasi string.
  • eval (penerjemah): Menambahkan binding ke "libuv" dalam paket "eval.luv".
  • eval: mengikat implementasi asli "Int64" dan "UInt64" melalui paket "eval.integers".
  • cs: Implementasi soket UDP.
  • cs: modul “cs.Syntax” untuk penyisipan sebaris kode C#.
  • jvm: Menambahkan tanda “-D jvm.dynamic-level=x” untuk mengontrol jumlah pengoptimalan yang dihasilkan untuk kode dinamis. 0 = tidak ada, 1 = optimasi baca/tulis bidang, 2 = penutupan metode pada waktu kompilasi.
  • java, jvm: Dukungan untuk tanda "--java-lib ".
  • python: implementasi API threading.

Perbaikan umum:

  • "expr is SomeType" tidak memerlukan pembungkusan dalam tanda kurung.
  • Peningkatan prioritas untuk ekstensi jenis "@:using".
  • Mengizinkan penggunaan ekstensi tipe statis melalui "super".
  • Kemampuan untuk mengatur metadata ke bidang “@:noDoc”.
  • Tipe abstrak "Peta" dibuat transitif.
  • Dukungan untuk "@:native" pada konstruktor enum.
  • Dukungan untuk "@:using" pada deklarasi tipe ("typedefs").
  • Kesalahan multiline menggunakan "..." sebagai awalan untuk baris berikutnya.
  • Inferensi tipe telah dikerjakan ulang, struktur anonim lebih baik dikonversi ke tipe eksplisit dan “ditutup” ketika fungsinya selesai.
  • Menyimpulkan jenis fungsi tanpa argumen sebagai "()->..." dan bukan "Void->...".
  • Kata kunci "fungsi" diperbolehkan sebagai nama paket.
  • Peningkatan penjajaran objek.
  • cs: Menambahkan dukungan untuk .NET 5.0.
  • cpp: Dukungan untuk konstruktor asli untuk kelas eksternal.
  • php: Menambahkan "php.Syntax.customArrayDecl" untuk mendeklarasikan array asli.
  • php: Memperbarui metode eksternal untuk berbagai fungsi dan kelas.
  • php: Implementasi struktur anonim yang dioptimalkan.
  • hl: Lewati kompilasi jika tidak ada perubahan pada modul.
  • lua: Menggunakan "hx-lua-simdjson" untuk mengurai json.
  • jvm: Mengurangi beban CPU dalam implementasi "sys.thread.Lock".
  • js: Peningkatan kompatibilitas dengan Google Closure Compiler.
  • Keamanan Null: Pertimbangkan "@:nullSafety(Off)" saat mendeklarasikan variabel: "var @:nullSafety(Off) v".

Selain itu, penambahan editor VSCode telah diperbarui ke versi baru kompiler, di mana petunjuk telah muncul dengan pembuatan bidang antarmuka yang hilang, kelas sederhana dan abstrak, serta metode properti.

Sumber: opennet.ru

Tambah komentar