Lanzamento da linguaxe de programación Haxe 4.1

Dispoñible lanzamento do kit de ferramentas Haxe 4.1, que inclúe a linguaxe de programación de alto nivel multiparadigma do mesmo nome cunha dixitación forte, un compilador cruzado e unha biblioteca estándar de funcións. O proxecto admite a tradución a C++, HashLink/C, JavaScript, C#, Java, PHP, Python e Lua, así como a compilación a JVM, HashLink/JIT, Flash e bytecode Neko, con acceso ás capacidades nativas de cada plataforma de destino. Código compilador distribuído por baixo a licenza GPLv2, e a biblioteca estándar e as máquinas virtuais desenvolvidas para Haxe HashLink и neko baixo a licenza MIT.

A lingua é orientado á expresión cunha dixitación forte. Admítense técnicas de programación orientada a obxectos, xenéricas e funcionais. A sintaxe de Haxe está próxima a ECMAScript e expande as súas características como a escritura estática, inferencia de autotipo, coincidencia de patróns, xenéricos, bucles for baseados en iteradores, macros AST, GADT (tipos de datos alxebraicos xeneralizados), tipos abstractos, estruturas anónimas, definicións de matrices simplificadas, expresións de compilación condicional, anexando metadatos aos campos , clases e expresións, interpolación de cadeas ("'O meu nome é $nome'"), parámetros de tipo ("new Main("foo")'), e moito máis.

proba de clase {
función estática main() {
persoas finais = [
"Elizabeth" => "Programación",
"Joel" => "Deseño"
];

para (nome => traballo en persoas) {
trace('$name fai $traballo para gañarse a vida!');
}
}
}

Novas funcións na versión 4.1:

  • Engadida a optimización da recursividade de cola.
  • Engadiuse unha nova API unificada para o manexo de excepcións.
  • A construción "try {} catch(e) {}" está permitida como abreviatura para "try {} catch(e: haxe.Exception) {}".
  • Engadido soporte SSL ao intérprete de eval.
  • A JVM de destino xa non se considera experimental.
  • Para o protocolo de servidor de idiomas, engadiuse soporte para as funcións "Ir a implementación" e "Buscar referencias".
  • Mellora a denominación das variables locais temporais no código xerado. Eliminouse o "retorno" redundante; en funcións de frecha sen un valor de retorno.
  • As combinacións de acceso (get, default) están permitidas nos campos (só getter, comportamento de asignación predeterminado).
  • Permitir operadores de incremento e decremento para os campos tipos abstractos.
  • Mellora a integración de bucles for mediante iteradores anónimos.
  • js: Implementación de StringMap mellorada para ES5.
  • js: engadiuse a xeración de variables let á opción do compilador “-D js-es=6”, mellorouse a xeración de clases ES6.
  • lua: "StringIterator" optimizado, o tratamento de erros mellorado.
  • php: "Std.isOfType" optimizado para tipos base.
  • php: as matrices xeradas agora implementan as interfaces nativas "Iterator", "IteratorAggregate", "Countable".
  • cs: Engadíronse metadatos "@:assemblyMeta" e "@:assemblyStrict".
  • python: engadiu a implementación de "__contains__" a obxectos anónimos
    e "__getitem__", que permite que se utilicen como dicionarios no código xerado.

  • jvm: Mellora significativamente o rendemento grazas a unha nova forma de acceder ás funcións tecleadas e xerar interfaces adicionais nos casos nos que se usan obxectos como estruturas anónimas (evita a busca dinámica de propiedades):
    Lanzamento da linguaxe de programación Haxe 4.1

Melloras na biblioteca estándar:

  • Engadida a función "Array.contains".
  • Engadiuse "Array.keyValueIterator", que implementa a iteración de clave-valor para matrices ("for (key => value in array)").
  • Engadiuse o tipo de restrición "haxe.Constraints.NotVoid".
  • Engadíronse as funcións "findIndex" e "foldi" á clase "Lambda".
  • Implementouse o "acceso á matriz" (acceso a través de "arr[i]") e a iteración de clave-valor para "haxe.ds.HashMap".
  • jvm: implementáronse versións específicas de JVM de "StringMap", "sys.thread.Lock", "sys.thread.Thread".
  • java/jvm: Utilizou implementacións nativas de "MD5", "SHA-1" e "SHA-256" para os módulos "haxe.crypto".
  • macro: Engadiuse "haxe.macro.Context.containsDisplayPosition(pos)".
  • nullsafety: o modo "Estrito" agora trátase como un fío único; engadiu o modo "StrictThreaded".
  • "Std.is" quedou en desuso a favor de "Std.isOfType".
  • Engadiuse un aviso ao usar variables locais sen valores nos peches.
  • js: "__js__ sen escribir (código, argumentos)" está obsoleto, substituído por "js.Syntax.code (código, argumentos)".
  • php/neko: "neko.Web" e "php.Web" quedaron en desuso e moveranse á biblioteca "hx4compat" máis tarde.

No próximo lanzamento están previstos:

  • Melloras do xestor de paquetes haxelib.
  • Sistema asíncrono baseado en API libuv.
  • Corrutinas.
  • Declaración de funcións estáticas modulares e variables sen crear clases (xa dispoñible nas compilacións nocturnas).

Fonte: opennet.ru

Engadir un comentario