BT
x A sua opinião é importante! Por favor preencha a pesquisa do InfoQ sobre os seus hábitos de leitura!

Racket 6.1 liberado

por Sergio De Simone , traduzido por Diogo Carleto em 14 Ago 2014 |

A PLT Design liberou a versão 6.1 do Racket. O objetivo do projeto é desenvolver uma linguagem de programação multiparadigma pertencente a família Lisp/Scheme. Entre diversos recursos, o Racket 6.1 introduz uma nova maneira de lidar com as definições de variáveis ​​locais recursivas.

Segundo Ryan Culpepper,no racket-lang.org, a principal inovação adicionada ao Racket v6.1, é a maneira de lidar com as definições de variáveis locais recursivas. Anteriormente a versão 6.1, variáveis eram inicializadas com um valor #undefined. Agora as variáveis não são mais inicializadas e o Racket lança uma exceção quando se tenta acessar uma variável antes de definí-la.

Ryan comenta que está mudança tem por objetivo fornecer e melhorar o feedback para os desenvolvedores sobre o uso indevido de variáveis e não deve alterar a semântica dos programas, uma vez que os programas raramente tem a intenção de produzir #undefined. Além disto, o novo comportamento é consistente com a convenção existente sobre variáveis em relação a módulos, que já geram uma exceção quando utilizados antes da definição.

O novo comportamento de definição de variável local não é compatível com versões anteriores e irá quebrar qualquer programa que acessar incorretamente variáveis indefinidas bem como programas que incluem o seguinte padrão para obter o valor #undefined:

(define undefined (letrec ([x x]) x))

Agora, a maneira correta para obter um valor #undefined é através do racket/undefined.

Outras mudanças introduzidas com a nova versão do Racket são:

  • Plumbers fornece aos programadores maior controle sobre o tempo de flushes(liberação/descarga) e ativa ações de flushing arbitrárias através de um novo conjunto de funções, tais como current-plumber, plumber-add-flush!, and plumber-flush-all.
  • Contracts podem agora facilmente encontrar simples erros em implementações de estrutura de dados contracted(contratados), por exemplo: uma inversão acidental de uma condicional em uma verificação invariante da pilha.
  • Bibliotecas gráficas e suas dependências (Pango, Cairo, GLib, etc.) foram atualizadas no Windows e Mac OS X.
  • A biblioteca openssl apresenta melhoria de segurança através de pacotes de criptografia DHE e ECDHE e a indicação de Server Name.
  • A biblioteca mzlib/class100 foi substituída pela racket/class.

O Racket (chamado antigamente de PLT Scheme) é uma linguagem multiparadigma de programação livre de uso geral, da família Lisp/Scheme liberado sob a licença LGPL. Um dos objetivos de seu design é ser uma plataforma para criações de linguagem, design e implementação. A linguagem é utilizada em uma variedade de contextos tais como scripting, programação em geral, educação em ciência e pesquisa.

Olá visitante

Você precisa cadastrar-se no InfoQ Brasil ou para enviar comentários. Há muitas vantagens em se cadastrar.

Obtenha o máximo da experiência do InfoQ Brasil.

Dê sua opinião

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão
Comentários da comunidade

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

HTML é permitido: a,b,br,blockquote,i,li,pre,u,ul,p

Receber mensagens dessa discussão

Dê sua opinião

Conteúdo educacional

Feedback geral
Bugs
Publicidade
Editorial
InfoQ Brasil e todo o seu conteúdo: todos os direitos reservados. © 2006-2014 C4Media Inc.
Política de privacidade
BT