NOTÍCIA

Versão 6.1 da linguagem Racket é liberada

Entre diversos recursos, o Racket 6.1 introduz uma nova maneira de lidar com as definições de variáveis locais recursivas.

A PLT Design liberou a versão 6.1 do Racket. O objetivo do projeto é desenvolver uma linguagem de programação multiparadigma pertencente à 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.

A principal inovação do Racket 6.1 é a forma de lidar com as definições de variáveis locais recursivas. Antes, as variáveis eram inicializadas com um valor #undefined. Agora, elas 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 defini-la.

O objetivo dessa mudança, esclareceu Ryan, é fornecer e melhorar o feedback para os desenvolvedores sobre o uso indevido de variáveis, e ela não deve alterar a semântica dos programas, uma vez que os programas raramente têm a intenção de produzir #undefined. Além disso, 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 vai 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 é por meio do racket/undefined.

Outras novidades da 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 no 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.

Com informações de InfoQ

Matérias especiais e reportagens conduzidas internamente pela Redação iMasters. Acompanhe no Twitter @imasters e no Instagram/Threads @portalimasters

Ver perfil