Liberazione di a lingua di prugrammazione Haxe 4.2

Una liberazione di u toolkit Haxe 4.2 hè dispunibule, chì include u linguaghju di prugrammazione multi-paradigma d'altu livellu di u stessu nome cù un forte typing, un compilatore incruciatu è una biblioteca standard di funzioni. U prughjettu sustene a traduzzione in C++, HashLink/C, JavaScript, C#, Java, PHP, Python è Lua, è ancu a compilazione à JVM, HashLink/JIT, Flash è Neko bytecode, cù accessu à e capacità native di ogni piattaforma di destinazione. U codice compilatore hè distribuitu sottu a licenza GPLv2, è a biblioteca standard è e macchine virtuali HashLink è Neko sviluppate per Haxe sò licenziati sottu a licenza MIT.

A lingua hè orientata à l'espressione cun forte typing. Tecniche di prugrammazione orientata à l'ughjettu, generichi è funziunali sò supportati. A sintassi di Haxe hè vicinu à ECMAScript è l'estende cù funzioni cum'è static typing, auto-type inference, pattern matching, generici, iteratori per loops, macros AST, GADT (Generalized Algebraic Data Types), tipi astratti, strutture anonime, simplificate. definizioni arrays, espressioni per a compilazione cundizionale, attache metadata à campi, classi è espressioni, interpolazione di stringa ("U mo nome hè $name"), paràmetri di tipu ("new Main("foo")') è assai di più. class Test { static function main() { final people = [ "Elizabeth" => "Programmazione", "Joel" => "Design" ]; for (name => job in people) { trace(‘$name face $travagliu per campà !’); } } }

Nove funzioni in a versione 4.2:

  • Dichjarà variàbili statichi è funzioni à u livellu di u modulu, senza a necessità di imbulighjà in una classa.
  • Supportu per classi astratte "classiche" è funzioni.
  • Implementazione nativa di funzioni variadiche per tutte e plataforme di destinazione (haxe.Rest) è aghjunta di l'operatore di espansione di l'argumentu "f(...array)".
  • Implementazione di un ciclu di l'avvenimentu per i fili individuali ("sys.thread.Thread.events").
  • "@:inheritDoc" metadati per l'eredi di documentazione di tipu / campu.
  • Sovraccarimentu di metudu supportu per metudi esterni in tutte e plataforme di destinazione.
  • Trasmette u custruttore sottu à u so tipu à l'astrattu utilizendu a metadata "@:forward.new".
  • Hè aghjuntu u custruttore "EIs" à "haxe.macro.Expr".
  • Capacità di fà una variante di tipu astrattu cù "@:forward.variance".
  • Rappresentazione di u tipu "Qualunque" cum'è "Dynamic" quandu unificate a variazione.
  • Aghjunghjite certi tipi di eccezzioni basi à u pacchettu "haxe.exceptions".
  • Supportu per attaccà metadati quandu si dichjarà variabili.
  • Funzione "StringTools.unsafeCharAt" utilizata per l'iterazione di stringa.
  • eval (interprete): Aghjunghjenu vincoli à "libuv" in u pacchettu "eval.luv".
  • eval: associazioni à implementazioni native di "Int64" è "UInt64" via u pacchettu "eval.integers".
  • cs: implementazione di socket UDP.
  • cs: Modulu "cs.Syntax" per inserisce in linea di codice C#.
  • jvm: Aggiuntu a bandiera "-D jvm.dynamic-level = x" per cuntrullà u numeru di ottimisazioni generate per u codice dinamicu. 0 = nimu, 1 = ottimisazione di lettura / scrittura di u campu, 2 = chjusi di metudu in tempu di compilazione.
  • java, jvm: Supportu per a bandiera "--java-lib ".
  • python: implementazione di l'API di threading.

Migliuramentu generale:

  • "expr is SomeType" ùn hè micca bisognu di imballu in parentesi.
  • Priorità aumentata per l'estensioni di tipu "@:using".
  • Permette l'usu di estensioni di tipu staticu via "super".
  • Capacità di stabilisce metadati à i campi "@:noDoc".
  • U tipu astrattu "Map" hè fattu transitiva.
  • Supportu per "@:native" nantu à i custruttori enum.
  • Supportu per "@:using" nantu à dichjarazioni di tipu ("typedefs").
  • L'errori multiline utilizanu "..." cum'è prefissu per e linee successive.
  • L'inferenza di u tipu hè stata riformulata, e strutture anònimi sò megliu cunvertiti in tipi espliciti è "chjusi" quandu a funzione cumpleta.
  • Inferendu u tipu di funzioni senza argumenti cum'è "()->..." invece di "Void->...".
  • A chjave "funzione" hè permessa cum'è un nome di pacchettu.
  • Migliuratu inlineing di l'uggetti.
  • cs: Supportu aghjuntu per .NET 5.0.
  • cpp: Supportu per i constructori nativi per classi esterni.
  • php: Aggiuntu "php.Syntax.customArrayDecl" per dichjarà un array nativu.
  • php: Metudi esterni aghjurnati per diverse funzioni è classi.
  • php: Implementazione ottimizzata di strutture anonime.
  • hl: Salta a compilazione se ùn ci sò micca cambiamenti à i moduli.
  • lua: Utilizendu "hx-lua-simdjson" per analizà json.
  • jvm: Carica di CPU ridutta in l'implementazione "sys.thread.Lock".
  • js: Cumpatibilità mejorata cù Google Closure Compiler.
  • Null Safety: Considerate "@:nullSafety(Off)" quandu si dichjarà variabili: "var @:nullSafety(Off) v".

Inoltre, l'aghjuntu à l'editore VSCode hè stata aghjurnata à a nova versione di u compilatore, in quale i suggerimenti sò apparsu cù a generazione di campi mancanti di interfacce, classi simplici è astratti, è metudi di pruprietà.

Source: opennet.ru

Add a comment