BT

JRuby 1.7 Preview 1: Runtime 1.9 e aumento de desempenho com Invokedynamic

por Mirko Stocker , traduzido por Leonardo Campos em 27 Jun 2012 |

A primeira versão preview do JRuby 1.7 adota por padrão o runtime do Ruby 1.9 e é muito mais rápida graças ao invokedynamic do Java 7. O InfoQ.com ouviu Charles Nutter, criador do JRuby, para saber mais sobre o futuro do projeto no Java 7, os Fibers e a ida da equipe do JRuby para a Red Hat.

O primeiro preview do JRuby 1.7.0 saiu mais de um ano depois do lançamento da primeira versão da série 1.6 do JRuby. O JRuby 1.6 foi a primeira versão compatível com o Ruby 1.9.2. Além de o JRuby 1.7 adotar o Ruby 1.9 como runtime padrão, há várias outras mudanças:

  • Correções de compatibilidade em relação ao Ruby 1.9.x;
  • Suporte para o invokedynamic do Java 7;
  • Melhorias no desempenho e em concorrência e paralelismo;
  • Descontinuação do suporte ao Java 5 (sendo exigido o Java 6 em diante);
  • Atualização para o Rubygems 1.8.24;
  • Atualização para o Rake 0.9.2.2.

O suporte para o invokedynamic é habilitado automaticamente, mas recomenda-se a execução no build mais recente do Java 7 para obtenção do máximo em melhorias de desempenho. O InfoQ.com ouviu Charles Nutter, criador do JRuby, para saber mais sobre o que o JRuby ganha com o suporte do invokedynamic:

InfoQ: Quais o ganhos com o invokedynamic?

Charles Nutter: A utilização do invokedynamic no JRuby nos aproxima muito da nossa meta de ter o Ruby com desempenho igual ao do Java. Agora que a JVM entende exatamente como fazemos chamadas dinâmicas, pode-se otimizá-las da mesma forma que é feito com as chamadas normais de tipagem estática. De repente, todos os truques que tornam o Java rápido passam a poder ser aplicados no código Ruby. É realmente extraordinário.

Há um potencial imenso a ser explorado, tanto no JRuby quanto na própria JVM. As formas que o JRuby atual utiliza o invokedynamic não são 100% otimizadas e em alguns casos, sua demanda por recursos cria uma lentidão artificial. Agora que temos o invokedynamic funcionando e estável, podemos otimizar o uso desse recurso. A versão inicial do Java 7 não tratou bem da otimização do invokedynamic, deixando-o apenas funcional. O Update 2 trouxe suporte sólido ao JIT da JVM, além de otimizações para o compilador do lado do servidor.  O Update 6 deve incluir uma reescrita na lógica do JIT, que tornará mais fácil a aplicação de todas as otimizações da JVM nas chamadas invokedynamic. Trabalharemos com a equipe do Hotspot para garantir que o invokedynamic continue sendo melhorado.

InfoQ: O JRuby agora é a implementação mais rápida do Ruby?

Nutter: Acredito que finalmente pode-se dizer isso com certeza. Sempre haverá casos que não tratamos bem ou que requerem melhorias futuras na JVM, mas em geral o JRuby deveria ser sempre mais rápido que outras implementações. Com o trabalho que estamos fazendo no invokedynamic no JRuby e no OpenJDK, nos distanciaremos ainda mais.

InfoQ: Pode nos falar dos Fibers? Há rumores de que o Java 8 possa trazer algum suporte para "coroutines".

Nutter: Infelizmente não há espaço para a entrada de algo tão grande quanto coroutines no Java 8, mas eles são uma possibilidade para o Java 9. Para aumentar o desempenho da implementação do Fiber do JRuby, estamos trabalhando com um estudante do Google Summer of Code para explorar uma implementação com base no Kilim. Não sabemos se o esforço terá sucesso, mas já houve progresso.

InfoQ: Tom Enebo e você estão saindo da Engine Yard para a Red Hat, mas continuarão trabalhando no JRuby. Vocês também vão trabalhar no Ceylon, a linguagem para a JVM criada pela Red Hat?

Nutter: Tudo é possível! Estou entusiasmado com a mudança, pois será parte do meu trabalho explorar outras linguagens para a JVM e o suporte da JVM para linguagens, além de trabalhar no JRuby. Acredito que a JVM é realmente o melhor ambiente para linguagens, sejam estáticas ou dinâmicas. Agora vou provar isso.


O download do preview 1 pode ser feito no site do JRuby. E se você estiver usando o RVM, pode fazer a instalação com o comando rvm install jruby-1.7.0.preview1.

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 menssagens dessa discussão
Comentários da comunidade

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

Receber menssagens dessa discussão

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

Receber menssagens 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