lançamento , uma linguagem de programação funcional de livre implementação , que suporta a possibilidade de incorporação de código em aplicativos escritos em outras linguagens de programação. Guile pode ser utilizado como uma linguagem para desenvolver extensões para aplicativos, definir configurações ou desenvolver componentes para interligar vários primitivos fornecidos pelo aplicativo. Guile é a linguagem oficial para desenvolvimento de extensões do sistema operacional GNU.
A base do Guile é uma máquina virtual eficiente, que executa um conjunto portátil de instruções, gerado por um compilador otimizado especial. A máquina virtual Guile se integra facilmente com o código de aplicativos nas linguagens C e C++. Além da linguagem Scheme, para a qual o suporte às especificações foi implementado , e , no âmbito do projeto Guile, compiladores para outras linguagens, como ECMAScript, Emacs Lisp e Lua (em desenvolvimento) também foram desenvolvidos. O pacote inclui uma biblioteca de módulos, que implementam funções de serviço típicas, como trabalhar com o protocolo HTTP, análise de XML e uso de métodos de programação orientada a objetos.
Uma das principais inovações no GNU Guile 3.0 foi a introdução do compilador JIT, além dos anteriormente oferecidos interpretador e compilador para bytecode, executados em uma máquina virtual especial, ligada ao aplicativo na forma de uma biblioteca. O JIT permite gerar código de máquina em tempo real e acelera significativamente a execução de aplicativos Guile (testes mostram aceleração de até 4 vezes). O compilador JIT suporta operação nas arquiteturas x86-64, i686, ARMv7 e AArch64.
Algumas das outras melhorias:
- Suporte à nova especificação da linguagem Scheme e aos módulos de biblioteca definidos nela;
- Na máquina virtual Guile, foi implementado suporte para bytecode de nível mais baixo, permitindo aplicar otimizações avançadas;
- Suporte à combinação de definições internas define e expressões (por exemplo, “(define _ (begin (foo) #f))”);
- Uma implementação unificada para o tipo de dados estruturados (“records”) foi proposta;
- Os primitivos de manipulação de exceções (throw e catch) foram reformulados;
- Bindings foram definidos para a nova sintaxe “else”, “=>”, “…” e “_”;
- Nos procedimentos de http-request, http-get e outros relacionados com o cliente web, foi adicionada a possibilidade de carregar conteúdo através de um canal de comunicação criptografado usando TLS com verificação correta dos certificados.
Fonte: opennet.ru
