/ 28.Sep.2007 at 12:09pm
Primeiro a notícia curta: quem quiser assistir à palestra do DHH na RailsConf Europe 2007, eis o link para uma versão em flash video (eu sei, argh).
Agora a notícia quente: Charles Nutter relata que o primeiro compilador completo de Ruby 1.8 está pronto! Eles trabalharam duro, durante viagens, fazendo palestras em conferências e codificando no meio do caminho, mas nada disso impediu que o trabalho fosse feito.
Antes, JRuby já era capaz de interpretar dentro de uma JVM toda a sintaxe do Ruby 1.8. Já era capaz de, dinamicamente, compilar parte do código. Mas agora ele não só é capaz de compilar TODO o código como também rodar em modo misto: permitindo executar construções exóticas dentro de comandos como eval e seus parentes dinâmicos.
E a coisa ainda não acabou, eles já estão trabalhando numa segunda versão do compilador que será capaz de compilar uma classe Ruby e gerar um bytecode que, do ponto de vista do Java, será como se tivesse sido codificado em Java puro! Ou seja, chamadas de métodos diretamente do objeto instanciado, sem proxies ou factories no meio do caminho.
O modo compilado já é quase 2 vezes mais rápido do que o modo interpretado, mas esta é apenas a primeira versão. Ainda há muita otimização a ser feita e muito mais velocidade a ser ganha. E mesmo assim, com o modo misto, não será necessário compilar todas as bibliotecas, gems, e tudo mais. Será possível fazer compilações seletivas.
Uma excelente notícias a todos que estão buscando mais performance e/ou que tenham necessidade de não ter o código-fonte exposto no ambiente produtivo – uma política que muitas empresas adotam.
2 Comments
Akita, pensando no lado do Rails, teremos melhora de performance também?? Ou não??
Abraços
guillermo guerini / 28.Sep.2007 at 02:05pm
Sim, a idéia é ganhar performance. Atualmente o JRuby ainda roda mais lento, na média se um Ruby+Mongrel responder 90 req/s o JRuby+Mongrel ou JRuby+Glassfish está rodando em 40 a 50 req/s. Medidas não científicas mas apenas para dar uma idéia.
A prioridade agora é que TUDO funcione, bibliotecas, extensions, gems, plugins, activerecord, drivers, etc. Isso está praticamente pronto. O segundo passo era ter o compilador: ir tudo para bytecode Java. Agora vem o terceiro passo: ser agressivo em performance. Extrair o máximo por Mhz. Isso está andando muito rápido.
O quarto passo é fazer Ruby ser escrito em Ruby. Isso é o projeto Rubinius e com o tempo acredito que os esforços com JRuby serão cooperativos. Charles (JRuby) e Evan (Rubinius) já estão trocando figurinhas faz tempo.
akitaonrails / 28.Sep.2007 at 05:47pm
Leave a Comment