GNU Guile 3.0 foi lançado

aconteceu liberar GNU Guile 3.0, uma implementação gratuita de uma linguagem de programação funcional Esquema, que oferece suporte à capacidade de incorporar código em aplicativos em outras linguagens de programação. Guile pode ser usado como uma linguagem para desenvolver extensões de aplicativos, definir configurações ou desenvolver componentes para conectar as diversas primitivas fornecidas pelo aplicativo. Guile é a linguagem oficial de desenvolvimento de extensões para o sistema operacional GNU.

No coração do Guile está uma máquina virtual eficiente que executa um conjunto portátil de instruções geradas por um compilador otimizador especial. A máquina virtual Guile integra-se facilmente ao código do aplicativo em C e C++. Além da linguagem Scheme, para a qual o suporte de especificação é implementado R5RS, R6RS и R7RS, o projeto Guile desenvolveu compiladores para outras linguagens, como ECMAScript, Emacs Lisp e Lua (em desenvolvimento). O pacote inclui uma biblioteca de módulos que implementam funções de serviço padrão, como trabalhar com o protocolo HTTP, análise XML e uso de métodos de programação orientados a objetos.

A principal inovação no GNU Guile 3.0 foi a introdução de um compilador JIT, além do interpretador e compilador de bytecode oferecidos anteriormente, executado em uma máquina virtual especial vinculada ao aplicativo na forma de uma biblioteca. O JIT permite gerar código de máquina dinamicamente e acelera significativamente a execução de aplicativos Guile (os testes mostram aceleração de até 4 vezes). O compilador JIT suporta arquiteturas x86-64, i686, ARMv7 e AArch64.

Algumas outras melhorias:

  • Suporte para a nova especificação de linguagem Scheme R7RS e módulos de biblioteca nele definidos;
  • A máquina virtual Guile fornece suporte para bytecode de nível inferior, permitindo otimizações avançadas;
  • Suporte para combinar definições e expressões internas (por exemplo, "(define _ (begin (foo) #f))");
  • É proposta uma implementação unificada de um tipo de dados estruturados (“registros”);
  • As primitivas de tratamento de exceções (throw e catch) foram retrabalhadas;
  • Ligações definidas para sintaxe estendida "else", "=>", "..." e "_";
  • Em http-request, http-get e outros procedimentos relacionados ao cliente web, foi adicionada a capacidade de baixar conteúdo por meio de um canal de comunicação criptografado usando TLS com verificação correta de certificado.

Fonte: opennet.ru

Adicionar um comentário