Lanzamiento del lenguaje de programación Haxe 4.1

Disponible lanzamiento del kit de herramientas haxe 4.1, que incluye el lenguaje de programación multiparadigma de alto nivel del mismo nombre con escritura segura, un compilador cruzado y una biblioteca estándar de funciones. El proyecto admite traducción a C++, HashLink/C, JavaScript, C#, Java, PHP, Python y Lua, así como compilación a JVM, HashLink/JIT, Flash y Neko bytecode, con acceso a las capacidades nativas de cada plataforma de destino. código compilador distribuido por bajo la licencia GPLv2, y la biblioteca estándar y máquinas virtuales desarrolladas para Haxe enlacehash и Neko bajo la licencia del MIT.

Lenguaje es orientado a la expresión con mecanografía fuerte. Se admiten técnicas de programación orientada a objetos, genéricas y funcionales. La sintaxis de Haxe está cerca de ECMAScript y se expande sus características como escritura estática, inferencia de autotipo, coincidencia de patrones, genéricos, bucles for basados ​​en iteradores, macros AST, GADT (tipos de datos algebraicos generalizados), tipos abstractos, estructuras anónimas, definiciones de matrices simplificadas, expresiones de compilación condicional, adjuntar metadatos a campos , clases y expresiones, interpolación de cadenas ("'Mi nombre es $nombre'"), parámetros de tipo ('nuevo Main ("foo")') y mucho más.

prueba de clase {
función estática principal() {
personas finales = [
"Elizabeth" => "Programación",
"Joel" => "Diseño"
];

for (nombre => trabajo en personas) {
trace('¡$nombre se gana la vida con $trabajo!');
}
}
}

Nuevas características en la versión 4.1:

  • Se agregó optimización de recursión de cola.
  • Se agregó una nueva API unificada para el manejo de excepciones.
  • La construcción "try {} catch(e) {}" se permite como abreviatura de "try {} catch(e: haxe.Exception) {}".
  • Se agregó soporte SSL al intérprete de evaluación.
  • La JVM de destino ya no se considera experimental.
  • Para Language Server Protocol, se agregó soporte para las funciones "Implementar Ir a" y "Buscar referencias".
  • Nomenclatura mejorada de variables locales temporales en el código generado. Se eliminó el "retorno" redundante; en funciones de flecha sin valor de retorno.
  • Se permiten combinaciones de acceso (obtener, predeterminado) en los campos (solo captador, comportamiento de asignación predeterminado).
  • Permitir operadores de incremento y decremento para campos tipos abstractos.
  • Se mejoró la inserción de bucles for mediante iteradores anónimos.
  • js: Implementación mejorada de StringMap para ES5.
  • js: Se ha agregado generación de variables let a la opción del compilador “-D js-es=6”, se ha mejorado la generación de clases ES6.
  • lua: "StringIterator" optimizado, manejo de errores mejorado.
  • php: "Std.isOfType" optimizado para tipos base.
  • php: los arreglos generados ahora implementan las interfaces nativas “Iterator”, “IteratorAggregate”, “Countable”.
  • cs: Se agregaron metadatos "@:assemblyMeta" y "@:assemblyStrict".
  • Python: implementación agregada de "__contains__" a objetos anónimos
    y "__getitem__", que permite utilizarlos como diccionarios en el código generado.

  • jvm: rendimiento significativamente mejorado gracias a una nueva forma de acceder a funciones escritas y generar interfaces adicionales en los casos en que los objetos se utilizan como estructuras anónimas (se evita la búsqueda dinámica de propiedades):
    Lanzamiento del lenguaje de programación Haxe 4.1

Mejoras en la biblioteca estándar:

  • Se agregó la función "Array.contains".
  • Se agregó "Array.keyValueIterator", que implementa la iteración clave-valor para matrices ("for (clave => valor en matriz)").
  • Se agregó el tipo de restricción "haxe.Constraints.NotVoid".
  • Las funciones "findIndex" y "foldi" se han agregado a la clase "Lambda".
  • Se implementó "acceso a matriz" (acceso a través de "arr[i]") e iteración clave-valor para "haxe.ds.HashMap".
  • jvm: versiones específicas de JVM implementadas de "StringMap", "sys.thread.Lock", "sys.thread.Thread".
  • java/jvm: implementaciones nativas utilizadas de "MD5", "SHA-1" y "SHA-256" para los módulos "haxe.crypto".
  • macro: Se agregó "haxe.macro.Context.containsDisplayPosition(pos)".
  • nullsafety: el modo "estricto" ahora se trata como de un solo subproceso; Se agregó el modo "StrictThreaded".
  • "Std.is" ha quedado obsoleto en favor de "Std.isOfType".
  • Se agregó una advertencia al usar variables locales sin valores en cierres.
  • js: "__js__(código, argumentos) sin tipo" está en desuso y se reemplaza por "js.Syntax.code(código, argumentos)".
  • php/neko: "neko.Web" y "php.Web" han quedado obsoletos y se trasladarán a la biblioteca "hx4compat" más adelante.

En la próxima versión están planeados:

  • Mejoras en el administrador de paquetes haxelib.
  • Basado en API de sistema asíncrono libuv.
  • Corrutinas.
  • Declarar funciones y variables estáticas modulares sin crear clases (ya disponible en compilaciones nocturnas).

Fuente: opennet.ru

Añadir un comentario