Lançamento da linguagem de programação Haxe 4.1

Disponível lançamento do kit de ferramentas Hax 4.1, que inclui a linguagem de programação multiparadigma de alto nível de mesmo nome com tipagem forte, um compilador cruzado e uma biblioteca padrão de funções. O projeto suporta tradução para C++, HashLink/C, JavaScript, C#, Java, PHP, Python e Lua, bem como compilação para JVM, HashLink/JIT, Flash e bytecode Neko, com acesso às capacidades nativas de cada plataforma alvo. Código do compilador distribuído por sob a licença GPLv2, e a biblioteca padrão e máquinas virtuais desenvolvidas para Haxe Hash Link и neko sob a licença do MIT.

A linguagem é orientado para a expressão com digitação forte. Técnicas de programação orientada a objetos, genéricas e funcionais são suportadas. A sintaxe Haxe é próxima do ECMAScript e expande seus recursos como digitação estática, inferência de autotipo, correspondência de padrões, genéricos, loops for baseados em iteradores, macros AST, GADT (tipos de dados algébricos generalizados), tipos abstratos, estruturas anônimas, definições de array simplificadas, expressões de compilação condicional, anexação de metadados a campos , classes e expressões, interpolação de strings (“'Meu nome é $nome'”), parâmetros de tipo ('new Main ("foo")') e muito mais.

classe Teste {
função estática principal() {
pessoas finais = [
"Elizabeth" => "Programação",
"Joel" => "Design"
];

for (nome => trabalho em pessoas) {
trace('$name faz $trabalho para viver!');
}
}
}

Novos recursos na versão 4.1:

  • Adicionada otimização de recursão de cauda.
  • Adicionada uma nova API unificada para tratamento de exceções.
  • A construção "try {} catch(e) {}" é permitida como uma abreviação para "try {} catch(e: haxe.Exception) {}".
  • Adicionado suporte SSL ao interpretador eval.
  • A JVM de destino não é mais considerada experimental.
  • Para o Language Server Protocol, foi adicionado suporte para as funções “Goto Implementation” e “Find References”.
  • Nomeação aprimorada de variáveis ​​locais temporárias no código gerado. Removido "retorno" redundante; em funções de seta sem valor de retorno.
  • Combinações de acesso (get, padrão) são permitidas em campos (somente getter, comportamento de atribuição padrão).
  • Permitir operadores de incremento e decremento para campos tipos abstratos.
  • Inlining aprimorado de loops for usando iteradores anônimos.
  • js: implementação aprimorada de StringMap para ES5.
  • js: A geração de variáveis ​​let foi adicionada à opção do compilador “-D js-es=6”, a geração de classes ES6 foi melhorada.
  • lua: "StringIterator" otimizado, tratamento de erros melhorado.
  • php: "Std.isOfType" otimizado para tipos base.
  • php: Arrays gerados agora implementam as interfaces nativas “Iterator”, “IteratorAggregate”, “Countable”.
  • cs: Adicionados metadados "@:assemblyMeta" e "@:assemblyStrict".
  • python: adicionada implementação de "__contains__" para objetos anônimos
    e "__getitem__", que permite que sejam utilizados como dicionários no código gerado.

  • jvm: Desempenho significativamente melhorado graças a uma nova maneira de acessar funções digitadas e gerar interfaces adicionais em casos onde objetos são usados ​​como estruturas anônimas (a pesquisa dinâmica de propriedades é evitada):
    Lançamento da linguagem de programação Haxe 4.1

Melhorias na biblioteca padrão:

  • Adicionada função "Array.contains".
  • Adicionado "Array.keyValueIterator", que implementa iteração de valor-chave para arrays ("for (key => value in array)").
  • Adicionado tipo de restrição "haxe.Constraints.NotVoid".
  • As funções “findIndex” e “foldi” foram adicionadas à classe “Lambda”.
  • Implementado "acesso ao array" (acesso via "arr[i]") e iteração de valor-chave para "haxe.ds.HashMap".
  • jvm: Implementadas versões específicas da JVM de "StringMap", "sys.thread.Lock", "sys.thread.Thread".
  • java/jvm: Implementações nativas usadas de "MD5", "SHA-1" e "SHA-256" para os módulos "haxe.crypto".
  • macro: Adicionado "haxe.macro.Context.containsDisplayPosition(pos)".
  • nullsafety: O modo "Estrito" agora é tratado como thread único; adicionado modo "StrictThreaded".
  • "Std.is" foi descontinuado em favor de "Std.isOfType".
  • Adicionado um aviso ao usar variáveis ​​locais sem valores em encerramentos.
  • js: "untyped __js__(code, args)" está obsoleto, substituído por "js.Syntax.code(code, args)".
  • php/neko: "neko.Web" e "php.Web" foram descontinuados e serão movidos para a biblioteca "hx4compat" posteriormente.

Na próxima versão estão planejados:

  • Melhorias no gerenciador de pacotes haxelib.
  • Sistema assíncrono baseado em API libuv.
  • Corrotinas.
  • Declarar funções e variáveis ​​estáticas modulares sem criar classes (já disponível em compilações noturnas).

Fonte: opennet.ru

Adicionar um comentário