Lansarea limbajului de programare Haxe 4.1

Disponibil lansarea trusei de instrumente Haxe 4.1, care include limbajul de programare la nivel înalt cu mai multe paradigme cu același nume, cu tastare puternică, un compilator încrucișat și o bibliotecă standard de funcții. Proiectul acceptă traducerea în C++, HashLink/C, JavaScript, C#, Java, PHP, Python și Lua, precum și compilarea în JVM, HashLink/JIT, Flash și bytecode Neko, cu acces la capacitățile native ale fiecărei platforme țintă. Codul compilatorului distribuit de sub licența GPLv2 și biblioteca standard și mașinile virtuale dezvoltate pentru Haxe HashLink и Neko sub licența MIT.

Limba este orientat spre expresie cu tastare puternică. Sunt acceptate tehnici de programare orientate pe obiecte, generice și funcționale. Sintaxa Haxe este apropiată de ECMAScript și se extinde caracteristicile sale, cum ar fi tastarea statică, inferența autotipului, potrivirea modelelor, generice, bucle for bazate pe iterator, macrocomenzi AST, GADT (Tipuri de date algebrice generalizate), tipuri abstracte, structuri anonime, definiții de matrice simplificate, expresii de compilare condiționată, atașarea metadatelor la câmpuri , clase și expresii, interpolare de șiruri („„Numele meu este $nume”), parametri de tip („new Main ("foo")') și mult mai mult.

test de clasa {
funcția statică main() {
oameni finali = [
"Elizabeth" => "Programare",
„Joel” => „Design”
];

pentru (nume => job în oameni) {
trace('$numele isi face $treaba ca sa traiasca!');
}
}
}

Caracteristici noi în versiunea 4.1:

  • S-a adăugat optimizarea recursiunii cozii.
  • S-a adăugat un nou API unificat pentru gestionarea excepțiilor.
  • Construcția „try {} catch(e) {}” este permisă ca prescurtare pentru „try {} catch(e: haxe.Exception) {}”.
  • S-a adăugat suport SSL la interpretul eval.
  • JVM-ul țintă nu mai este considerat experimental.
  • Pentru Language Server Protocol, a fost adăugat suport pentru funcțiile „Goto Implementation” și „Find references”.
  • Denumirea îmbunătățită a variabilelor locale temporare în codul generat. Eliminat „return” redundant; în funcțiile săgeată fără o valoare returnată.
  • Combinațiile de acces (get, default) sunt permise pe câmpuri (doar getter, comportament implicit de atribuire).
  • Permiteți operatorii de creștere și decrementare pentru câmpuri tipuri abstracte.
  • Integrare îmbunătățită a buclelor for folosind iteratoare anonime.
  • js: Implementarea StringMap îmbunătățită pentru ES5.
  • js: Generarea de variabile let a fost adăugată la opțiunea compilatorului „-D js-es=6”, generarea claselor ES6 a fost îmbunătățită.
  • lua: „StringIterator” optimizat, gestionarea erorilor îmbunătățită.
  • php: „Std.isOfType” optimizat pentru tipurile de bază.
  • php: Matricele generate acum implementează interfețele native „Iterator”, „IteratorAggregate”, „Countable”.
  • cs: S-au adăugat metadate „@:assemblyMeta” și „@:assemblyStrict”.
  • python: a adăugat implementarea „__contains__” la obiectele anonime
    și „__getitem__”, care le permite să fie folosite ca dicționare în codul generat.

  • jvm: Performanță îmbunătățită semnificativ datorită unui nou mod de a accesa funcțiile tastate și de a genera interfețe suplimentare în cazurile în care obiectele sunt folosite ca structuri anonime (căutarea dinamică a proprietăților este împiedicată):
    Lansarea limbajului de programare Haxe 4.1

Îmbunătățiri în biblioteca standard:

  • S-a adăugat funcția „Array.contains”.
  • S-a adăugat „Array.keyValueIterator”, care implementează iterația cheie-valoare pentru matrice („for (key => value in array)”).
  • A fost adăugat tipul de constrângere „haxe.Constraints.NotVoid”.
  • Funcțiile „findIndex” și „foldi” au fost adăugate la clasa „Lambda”.
  • Implementarea „acces la matrice” (acces prin „arr[i]”) și iterație cheie-valoare pentru „haxe.ds.HashMap”.
  • jvm: S-au implementat versiuni specifice JVM ale „StringMap”, „sys.thread.Lock”, „sys.thread.Thread”.
  • java/jvm: Au folosit implementări native ale „MD5”, „SHA-1” și „SHA-256” pentru modulele „haxe.crypto”.
  • macro: S-a adăugat „haxe.macro.Context.containsDisplayPosition(pos)”.
  • nullsafety: modul „Strict” este acum tratat ca un singur thread; a adăugat modul „StrictThreaded”.
  • „Std.is” a fost retras în favoarea „Std.isOfType”.
  • S-a adăugat un avertisment la utilizarea variabilelor locale fără valori în închideri.
  • js: „untyped __js__(code, args)” este depreciat, înlocuit cu „js.Syntax.code(code, args)”.
  • php/neko: „neko.Web” și „php.Web” au fost depreciate și vor fi mutate ulterior în biblioteca „hx4compat”.

În următoarea ediție planificat:

  • Îmbunătățiri ale managerului de pachete haxelib.
  • Sistem asincron bazat pe API libuv.
  • Coroutine.
  • Declararea funcțiilor și variabilelor statice modulare fără a crea clase (deja disponibilă în versiunile de noapte).

Sursa: opennet.ru

Adauga un comentariu