Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Ruby 2.0 - Whirlwind tour through the new features

Ruby 2.0 - Whirlwind tour through the new features

Introduction to Ruby 2.0, rapid tour through the new language features. Virtual tech talk at IntegraGRP.

Avatar for Andre Bernardes

Andre Bernardes

March 08, 2013

More Decks by Andre Bernardes

Other Decks in Programming

Transcript

  1. QUANDO? Primeira versão da MRI prevista para 24/02/2013 Aniversário de

    20 anos do Ruby sexta-feira, 25 de outubro de 13
  2. QUANDO? Primeira versão da MRI prevista para 24/02/2013 Aniversário de

    20 anos do Ruby Trabalhos começaram em 19/10/2011 sexta-feira, 25 de outubro de 13
  3. QUANDO? Primeira versão da MRI prevista para 24/02/2013 Aniversário de

    20 anos do Ruby Trabalhos começaram em 19/10/2011 Feature freeze & 1˚ release em 05/11/2012 sexta-feira, 25 de outubro de 13
  4. GRANDES(?) MUDANÇAS The version number goes up to 2.0 but

    the changes are rather small. Smaller than the ones we made in 1.9. sexta-feira, 25 de outubro de 13
  5. GRANDES(?) MUDANÇAS Evolução, não revolução “Backwards compatible” com código escrito

    na sintaxe do Ruby 1.8 e 1.9 sexta-feira, 25 de outubro de 13
  6. GRANDES(?) MUDANÇAS Evolução, não revolução “Backwards compatible” com código escrito

    na sintaxe do Ruby 1.8 e 1.9 #not sexta-feira, 25 de outubro de 13
  7. GRANDES(?) MUDANÇAS Evolução, não revolução “Backwards compatible” com código escrito

    na sintaxe do Ruby 1.8 e 1.9 #not sexta-feira, 25 de outubro de 13
  8. %I %i ou %I Funciona igual ao %w ou %W

    Produz um array de symbols sexta-feira, 25 de outubro de 13
  9. #TO_H Novo padrão para conversão de objetos para hash Funciona

    como to_i, to_a, to_s, etc... sexta-feira, 25 de outubro de 13
  10. Incorpora patches do Ruby 1.9.3 Novas expressões do Perl 5.10+

    https://github.com/k-takata/Onigmo/blob/master/doc/RE ONIGMO sexta-feira, 25 de outubro de 13
  11. DTRACE PROBES Permite usar o DTRACE para trace da aplicação

    em tempo de execução. Pode-se ver a alocação de objetos, consumo de memória, uso de CPU, I/O, etc. http://tenderlovemaking.com/2011/06/29/i-want-dtrace- probes-in-ruby.html sexta-feira, 25 de outubro de 13
  12. TRANSPLANTE DE MÉTODOS “É igual monkey-patching: poderoso, perigoso, e muito

    útil.” (Matz) “Transplantar” métodos de módulos para outros módulos ou classes. Não funciona de classes para classes. sexta-feira, 25 de outubro de 13
  13. MODULE#PREPEND Igual o #include, mas sobrescreve os métodos da classe.

    Criado para substituir truques com “alias” ou “alias_method_chain” para sobrescrever métodos. sexta-feira, 25 de outubro de 13
  14. REFINEMENTS Monkey-patches são bons pois: São poderosos Tem uma flexibilidade

    que nenhuma outra linguagem oferece Te permitem moldar a linguagem para atender às suas necessidades sexta-feira, 25 de outubro de 13
  15. REFINEMENTS Monkey-patches são ruins pois: Mágica implícita Comportamentos inesperados Podem

    entrar em conflito São o inferno pra debugar sexta-feira, 25 de outubro de 13
  16. REFINEMENTS Monkey-patches são bons, mas são ruis. Solução: Escopo neles!

    Refinements funcionam como um escopo para monkey- patches sexta-feira, 25 de outubro de 13
  17. REFINEMENTS Monkey-patches são bons, mas são ruis. Solução: Escopo neles!

    Refinements funciona como um escopo para monkey- patches E aí, tudo funciona! sexta-feira, 25 de outubro de 13
  18. REFINEMENTS Monkey-patches são bons, mas são ruis. Solução: Escopo neles!

    Refinements funciona como um escopo para monkey- patches E aí, tudo funciona! #not sexta-feira, 25 de outubro de 13
  19. REFINEMENTS Problemas: Complexidade Herança / Composição module_eval Usabilidade (outros arquivos,

    posição da chamada) http://blog.headius.com/2012/11/refining-ruby.html sexta-feira, 25 de outubro de 13