Uscita del linguaggio di programmazione Haxe 4.1

Disponibile rilascio del toolkit Haxe 4.1, che include un linguaggio di programmazione multi-paradigma di alto livello con tipizzazione rigorosa, un cross-compiler e una libreria standard di funzioni. Il progetto supporta la traduzione in C++, HashLink/C, JavaScript, C#, Java, PHP, Python e Lua, oltre alla compilazione in bytecode JVM, HashLink/JIT, Flash e Neko, con accesso alle funzionalità native di ciascuna piattaforma di destinazione. Il codice del compilatore distribuito è sotto licenza GPLv2, mentre la libreria standard e le macchine virtuali sviluppate per Haxe HashLink e Neko sotto licenza MIT.

Il linguaggio è orientato alle espressioni con tipizzazione rigorosa. Sono supportate tecniche di programmazione ad oggetti, generica e funzionale. La sintassi di Haxe è simile a ECMAScript e si espande presenta funzionalità come la tipizzazione statica, l'inferenza dei tipi, le corrispondenze dei modelli, i generici, il ciclo 'for' basato su iteratori, macro AST, GADT (Generalized Algebraic Data Types), tipi astratti, strutture anonime, definizioni semplificate degli array, espressioni per la compilazione condizionale, collegamento di metadati a campi, classi ed espressioni, interpolazione delle stringhe ('My name is $name'), parametri di tipo ('new Main("foo")') e molto altro.

class Test {
static function main() {
final people = [
«Elizabeth» => «Programmazione»,
«Joel» => «Design»
];

for (name => job in people) {
trace(‘$name lavora come $job!’);
}
}
}

Novità della versione 4.1:

  • Ottimizzazione della ricorsione terminale aggiunta.
  • Nuovo API unificato per la gestione delle eccezioni aggiunto.
  • La costrutto «try {} catch(e) {}» è stata consentita come abbreviazione per «try {} catch(e: haxe.Exception) {}».
  • Supporto SSL aggiunto nell'interprete eval.
  • La piattaforma target JVM non è più considerata sperimentale.
  • Supporto per le funzioni «Goto Implementation» e «Find references» aggiunto al Language Server Protocol.
  • Migliorato il naming delle variabili locali temporanee nel codice generato. Rimossi i «return;» ridondanti nelle funzioni freccia senza valore di ritorno.
  • Combinazione di accesso (get, default) consentita per i campi (solo getter, comportamento di assegnazione predefinito).
  • Operatori di incremento e decremento consentiti per i campi tipi astratti.
  • Migliorato l'inlining dei cicli for utilizzando iteratori anonimi.
  • js: Migliorata l'implementazione di StringMap per ES5.
  • js: Generazione di variabili let aggiunta all'opzione del compilatore «-D js-es=6», migliorata la generazione delle classi ES6.
  • lua: ottimizzato «StringIterator», migliorata la gestione degli errori.
  • php: Ottimizzato «Std.isOfType» per i tipi base.
  • php: Gli array generati ora implementano le interfacce native «Iterator», «IteratorAggregate», «Countable».
  • cs: Aggiunte le metadata «@:assemblyMeta» e «@:assemblyStrict».
  • python: Aggiunta l'implementazione di «__contains__» negli oggetti anonimi.
    e «__getitem__», che consente di utilizzarli come dizionari nel codice generato.
  • jvm: Notevolmente migliorata la prestazione grazie a un nuovo modo di accedere alle funzioni tipizzate e generare interfacce aggiuntive nei casi in cui si utilizzano oggetti come strutture anonime (previene la ricerca dinamica delle proprietà):
    Uscita del linguaggio di programmazione Haxe 4.1

Miglioramenti nella libreria standard:

  • Aggiunta la funzione «Array.contains».
  • Aggiunto «Array.keyValueIterator», che implementa l'iterazione key-value per gli array («for (key => value in array)»).
  • Aggiunto un vincolo di tipo «haxe.Constraints.NotVoid».
  • Nel classe «Lambda» sono state aggiunte le funzioni «findIndex» e «foldi».
  • Implementato l'accesso all'array (accesso tramite «arr[i]») e l'iterazione key-value per «haxe.ds.HashMap».
  • jvm: Implementate versioni specifiche per JVM di «StringMap», «sys.thread.Lock», «sys.thread.Thread».
  • java/jvm: Utilizzate implementazioni native di «MD5», «SHA-1» e «SHA-256» per i moduli «haxe.crypto».
  • macro: Aggiunto «haxe.macro.Context.containsDisplayPosition(pos)».
  • nullsafety: la modalità «Strict» ora è considerata monothread; aggiunta la modalità «StrictThreaded».
  • «Std.is» è deprecato a favore di «Std.isOfType».
  • Aggiunta una segnalazione per l'uso di variabili locali senza valori nelle chiusure.
  • js: «untyped __js__(code, args)» è deprecato, viene fornito «js.Syntax.code(code, args)» al suo posto.
  • php/neko: «neko.Web» e «php.Web» sono deprecati e verranno successivamente trasferiti nella libreria «hx4compat».

Nella prossima versione sono previsti:

  • Miglioramento del gestore pacchetti haxelib.
  • API di sistema asincrono basato su libuv.
  • Coroutines.
  • Dichiarazione di funzioni e variabili statiche modulari senza creare classi (già disponibili nelle versioni notturne).

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster