|
| 1 | +--- |
| 2 | +layout: news_post |
| 3 | +title: "Lançado Ruby 2.5.0" |
| 4 | +author: "naruse" |
| 5 | +translator: "jcserracampos" |
| 6 | +date: 2017-12-25 00:00:00 +0000 |
| 7 | +lang: pt |
| 8 | +--- |
| 9 | + |
| 10 | +Temos o prazer de anunciar o lançamento de Ruby 2.5.0. |
| 11 | + |
| 12 | +Ruby 2.5.0 é a primeira versão estável da série Ruby 2.5. |
| 13 | +Esta versão introduz muitas novas funcionalidades e melhorias de performance. |
| 14 | +As mudanças notáveis são as seguintes: |
| 15 | + |
| 16 | +## Novas funcionalidades |
| 17 | + |
| 18 | +* `rescue`/`else`/`ensure` passam a ser permitidos diretamente em |
| 19 | + blocos `do`/`end`. |
| 20 | + [[Funcionalidade #12906]](https://bugs.ruby-lang.org/issues/12906) |
| 21 | +* Adiciona `yield_self` em um bloco yield no seu contexto. |
| 22 | + Ao contrário de `tap`, retorna o resultado do bloco. |
| 23 | + [[Funcionalidade #6721]](https://bugs.ruby-lang.org/issues/6721) |
| 24 | +* Adiciona suporte a mensuração de cobertura de ramificação e cobertura de método. |
| 25 | + A cobertura de ramificação indica quais ramificações (_branches_) são executadas e quais não. |
| 26 | + A cobertura de método indica quais métodos são invocados e quais não. |
| 27 | + Ao executar uma suíte de testes com essas novas funcionalidades, você saberá quais |
| 28 | + ramificações e métodos são executados e mensurará a cobertura total da suíte de |
| 29 | + testes mais estritamente. |
| 30 | + [[Funcionalidade #13901]](https://bugs.ruby-lang.org/issues/13901) |
| 31 | +* Hash#slice [[Funcionalidade #8499]](https://bugs.ruby-lang.org/issues/8499) |
| 32 | + e Hash#transform_keys [[Funcionalidade #13583]](https://bugs.ruby-lang.org/issues/13583) |
| 33 | +* Struct.new pode criar classes que aceitam _keywords_ como argumento. |
| 34 | + [[Funcionalidade #11925]](https://bugs.ruby-lang.org/issues/11925) |
| 35 | +* Enumerable#any?, all?, none? e one? passam a aceitar um _pattern_ como argumento. |
| 36 | + [[Funcionalidade #11286]](https://bugs.ruby-lang.org/issues/11286) |
| 37 | +* Pesquisa de constante de alto nível foi removida. |
| 38 | + [[Funcionalidade #11547]](https://bugs.ruby-lang.org/issues/11547) |
| 39 | +* Uma das mais amadas bibliotecas, pp.rb, agora é automaticamente carregada. |
| 40 | + Você não precisa mais escrever `require "pp"`. |
| 41 | + [[Funcionalidade #14123]](https://bugs.ruby-lang.org/issues/14123) |
| 42 | +* Imprime _backtrace_ e mensagens de erro em ordem reversa (primeiro as chamadas mais antigas, |
| 43 | + chamadas mais recentes por último). Quando um _backtrace_ grande aparece no seu terminal (TTY), |
| 44 | + você pode facilmente achar a linha causadora no final do seu _backtrace_. |
| 45 | + Perceba que a ordem só é reversa quando o _backtrace_ é imprimido |
| 46 | + diretamente no terminal. |
| 47 | + [[Funcionalidade #8661]](https://bugs.ruby-lang.org/issues/8661) [experimental] |
| 48 | + |
| 49 | +## Melhorias de performance |
| 50 | + |
| 51 | +* Cerca de 5-10% de melhoria de performance ao remover todas as instruções `trace` |
| 52 | + do _bytecode_ geral (sequências de instrução). |
| 53 | + A instrução `trace` foi adicionada para suportar o `TracePoint`. |
| 54 | + Entretanto, na maioria dos casos, `TracePoint` não é utilizado e instruções `trace` |
| 55 | + são sobrecargas puras. Ao invés, nós usamos uma técnica de instrumentação dinâmica. |
| 56 | + Veja [[Funcionalidade #14104]](https://bugs.ruby-lang.org/issues/14104) para mais detalhes. |
| 57 | +* Passagem de bloco por um parâmetro de bloco (por exemplo `def foo(&b); bar(&b); end`) |
| 58 | + está cerca de 3 vezes mais rápida do que no Ruby 2.4 por causa da técnica "_Lazy Proc allocation_". |
| 59 | + [[Funcionalidade #14045]](https://bugs.ruby-lang.org/issues/14045) |
| 60 | +* Mutex está reescrito para ser menor e mais rápido. |
| 61 | + [[Funcionalidade #13517]](https://bugs.ruby-lang.org/issues/13517) |
| 62 | +* ERB agora gera código a partir de um template duas vezes mais rápido do que no Ruby 2.4. |
| 63 | +* Melhora a performance de alguns métodos internos como `Array#concat`, |
| 64 | + `Enumerable#sort_by`, `String#concat`, `String#index`, `Time#+` e mais. |
| 65 | +* IO.copy_stream usa copy_file_range(2) para copiar usando offloading. |
| 66 | + [[Funcionalidade #13867]](https://bugs.ruby-lang.org/issues/13867) |
| 67 | + |
| 68 | +## Outras mudanças notáveis desde 2.4 |
| 69 | + |
| 70 | +* SecureRandom agora prefere fontes fornecidas pelo sistema operacional ao invés de OpenSSL. |
| 71 | + [[Bug #9569]](https://bugs.ruby-lang.org/issues/9569) |
| 72 | +* Promove cmath, csv, date, dbm, etc, fcntl, fiddle, fileutils, gdbm, ipaddr, |
| 73 | + scanf, sdbm, stringio, strscan, webrick, zlib de bibliotecas padrões |
| 74 | + para gems padrões. |
| 75 | +* Atualiza para [Onigmo](https://github.com/k-takata/Onigmo/) 6.1.3. |
| 76 | + * Adiciona [operador ausente](https://github.com/k-takata/Onigmo/issues/87). |
| 77 | + * Note que [Ruby 2.4.1](https://www.ruby-lang.org/en/news/2017/03/22/ruby-2-4-1-released/) também inclui esta mudança. |
| 78 | +* Atualiza para Psych 3.0.2. |
| 79 | +* Atualiza para RubyGems 2.7.3. |
| 80 | +* Atualiza para RDoc 6.0.1. |
| 81 | + * [Altera o _lexer_ de um baseado em IRB para Ripper](https://github.com/ruby/rdoc/pull/512). |
| 82 | + Isto melhora consideravelmente a velocidade de geração de documentação. |
| 83 | + * Corrige uma quantidade significativa de bugs que existiam há 10 anos. |
| 84 | + * Adiciona suporte para a nova sintaxe de Ruby desde as últimas mudanças. |
| 85 | +* Atualiza a versão suportads de Unicode para 10.0.0. |
| 86 | +* `Thread.report_on_exception` agora é definido como `true` por padrão. |
| 87 | + Esta alteração ajuda a debugar programas multithreads. |
| 88 | + [[Funcionalidade #14143]](https://bugs.ruby-lang.org/issues/14143) |
| 89 | +* IO#write agora recebe múltiplos argumentos. |
| 90 | + [[Funcionalidade #9323]](https://bugs.ruby-lang.org/issues/9323) |
| 91 | + |
| 92 | +Veja as [novidades](https://github.com/ruby/ruby/blob/v2_5_0/NEWS) |
| 93 | +ou [histórico de commits](https://github.com/ruby/ruby/compare/v2_4_0...v2_5_0) |
| 94 | +para detalhes. |
| 95 | + |
| 96 | +Com essas mudanças, |
| 97 | +[6158 arquivos alterados, 348484 inserções(+), 82747 remoções(-)](https://github.com/ruby/ruby/compare/v2_4_0...v2_5_0) |
| 98 | +desde Ruby 2.4.0! |
| 99 | + |
| 100 | +Feliz natal, feliz ano novo e divirta-se programando com Ruby 2.5! |
| 101 | + |
| 102 | +## Download |
| 103 | + |
| 104 | +* <https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.0.tar.gz> |
| 105 | + |
| 106 | + SIZE: 15834941 bytes |
| 107 | + SHA1: 58f77301c891c1c4a08f301861c26b1ea46509f6 |
| 108 | + SHA256: 46e6f3630f1888eb653b15fa811d77b5b1df6fd7a3af436b343cfe4f4503f2ab |
| 109 | + SHA512: 0712fe68611f5d0cd6dd54b814f825478e64b6a62bdf67bce431f4dca2dc00b1a33f77bebfbcd0a151118a1152554ab457decde435b424aa1f004bc0aa40580d |
| 110 | + |
| 111 | +* <https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.0.zip> |
| 112 | + |
| 113 | + SIZE: 19495617 bytes |
| 114 | + SHA1: 700b6f55d689a5c8051c8c292b9e77a1b50bf96e |
| 115 | + SHA256: 94559ea6e3c619423da604e503ce1dc1c465d6e0747a07fbdc5f294acaf14c24 |
| 116 | + SHA512: e4324064cee8c65b80192e3eff287e915d2d40464d300744c36fb326ae4b1846911400a99d4332192d8a217009d3a5209b43eb5e8bc0b739035bef89cc493e84 |
| 117 | + |
| 118 | +* <https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.0.tar.bz2> |
| 119 | + |
| 120 | + SIZE: 13955820 bytes |
| 121 | + SHA1: 827b9a3bcffa86d1fc9ed96d403cb9dc37731688 |
| 122 | + SHA256: d87eb3021f71d4f62e5a5329628ac9a6665902173296e551667edd94362325cc |
| 123 | + SHA512: 8f6fdf6708e7470f55bc009db2567cd8d4e633ad0678d83a015441ecf5b5d88bd7da8fb8533a42157ff83b74d00b6dc617d39bbb17fc2c6c12287a1d8eaa0f2c |
| 124 | + |
| 125 | +* <https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.0.tar.xz> |
| 126 | + |
| 127 | + SIZE: 11292472 bytes |
| 128 | + SHA1: 9c7babcf9e299be3f197d9091024ae458f1a1273 |
| 129 | + SHA256: 1da0afed833a0dab94075221a615c14487b05d0c407f991c8080d576d985b49b |
| 130 | + SHA512: 55714a33d7661fe8b432f73c34fd67b49699f8b79df1cbd680a74899124d31111ab0f444677672aac1ba725820182940d485efb2db0bf2bc96737c5d40c54578 |
0 commit comments