|
| 1 | +--- |
| 2 | +layout: news_post |
| 3 | +title: "Вышел Ruby 2.5.0" |
| 4 | +author: "naruse" |
| 5 | +translator: "badalloff" |
| 6 | +date: 2017-12-25 00:00:00 +0000 |
| 7 | +lang: ru |
| 8 | +--- |
| 9 | + |
| 10 | +Мы рады объявить о выходе Ruby 2.5.0! |
| 11 | + |
| 12 | +Ruby 2.5.0 является первой стабильной версией в серии Ruby 2.5. Эта версия дает |
| 13 | +много новых возможностей и улучшений производительности. |
| 14 | +Значимые изменения следующие: |
| 15 | + |
| 16 | +## Новые возможности |
| 17 | + |
| 18 | +* `rescue`/`else`/`ensure` теперь допускается использовать непосредственно |
| 19 | + с блоками `do`/`end`. |
| 20 | + [[Feature #12906]](https://bugs.ruby-lang.org/issues/12906) |
| 21 | +* Добавьте `yield_self`, чтобы получить данный блок в его контексте. |
| 22 | + В отличие от `tap`, он возвращает результат блока. |
| 23 | + [[Feature #6721]](https://bugs.ruby-lang.org/issues/6721) |
| 24 | +* Поддержка метрики покрытия тестами ветвления и покрытия тестами метода. |
| 25 | + Покрытие ветвления указывает какая ветка была запущена а какая нет. |
| 26 | + Покрытие метода указывает, какой метод вызывается, а какой нет. |
| 27 | + Запустив набор тестов с этими функциями, вы узнаете какие |
| 28 | + ветви и методы запущены, а также более точно оцените общий уровень |
| 29 | + покрытия тестами. |
| 30 | + [[Feature #13901]](https://bugs.ruby-lang.org/issues/13901) |
| 31 | +* Hash#slice [[Feature #8499]](https://bugs.ruby-lang.org/issues/8499) |
| 32 | + и Hash#transform_keys [[Feature #13583]](https://bugs.ruby-lang.org/issues/13583) |
| 33 | +* Struct.new может создавать классы, принимающие именованные аргументы. |
| 34 | + [[Feature #11925]](https://bugs.ruby-lang.org/issues/11925) |
| 35 | +* Enumerable#any?, all?, none?, и one? принимают шаблон в качестве аргумента. |
| 36 | + [[Feature #11286]](https://bugs.ruby-lang.org/issues/11286) |
| 37 | +* Поиск констант высшего уровня больше недоступен. |
| 38 | + [[Feature #11547]](https://bugs.ruby-lang.org/issues/11547) |
| 39 | +* Одна из наших самых любимых библиотек, pp.rb, теперь автоматически |
| 40 | + загружается. Вам больше не нужно писать`require "pp"`. |
| 41 | + [[Feature #14123]](https://bugs.ruby-lang.org/issues/14123) |
| 42 | +* Печать трассировки и сообщений об ошибках в обратном порядке |
| 43 | + (старейший вызов первым, новейший последним). |
| 44 | + Когда в вашем терминале появляется длинная трассировка, |
| 45 | + вы можете с лёгкостью найти строку с причиной в нижней части трассировки. |
| 46 | + Учтите, что трассировка будет в обратном порядке только когда выводится на |
| 47 | + прямую в терминал. |
| 48 | + [[Feature #8661]](https://bugs.ruby-lang.org/issues/8661) [экспериментальный] |
| 49 | + |
| 50 | +## Улучшения производительности |
| 51 | +* Примерно 5-10% улучшения производительности достигнуто благодаря удалению всех инструкций |
| 52 | + `trace` из всего байт-кода (последовательности инструкций). |
| 53 | + Инструкция `trace` была добавлена для поддержки `TracePoint`, |
| 54 | + Тем не менее, в большинстве случаев `TracePoint` не используется и инструкции |
| 55 | + `trace` это черезмерные накладные расходы. Вместо этого теперь мы |
| 56 | + используем технологию динамического инструментария. Больше информации об этом |
| 57 | + по ссылке [[Feature #14104]](https://bugs.ruby-lang.org/issues/14104). |
| 58 | +* Передача блока по параметру блока (прим. `def foo(&b); bar(&b); end`) |
| 59 | + в 3 раза быстрее чем в Ruby 2.4 благодаря методу "Lazy Proc allocation". |
| 60 | + [[Feature #14045]](https://bugs.ruby-lang.org/issues/14045) |
| 61 | +* Mutex переписан чтобы быть меньше и быстрее. |
| 62 | + [[Feature #13517]](https://bugs.ruby-lang.org/issues/13517) |
| 63 | +* ERB теперь генерирует код из шаблона в два раза быстрее, чем Ruby 2.4. |
| 64 | +* Улучшена производительность некоторых встроенных методов, включая |
| 65 | + `Array#concat`, `Enumerable#sort_by`, `String#concat`, `String#index`, |
| 66 | + `Time#+`, и других. |
| 67 | +* IO.copy_stream использует copy_file_range(2) для копирования разгрузки. |
| 68 | + [[Feature #13867]](https://bugs.ruby-lang.org/issues/13867) |
| 69 | + |
| 70 | +## Другие значимые изменения со времени 2.4 версии |
| 71 | + |
| 72 | +* SecureRandom теперь предпочитает источники, предоставленные ОС нежели OpenSSL. |
| 73 | + [[Bug #9569]](https://bugs.ruby-lang.org/issues/9569) |
| 74 | +* cmath, csv, date, dbm, etc, fcntl, fiddle, fileutils, gdbm, ipaddr, |
| 75 | + scanf, sdbm, stringio, strscan, webrick, zlib перемещены из стандартной |
| 76 | + библиотеки в гемы по умолчанию. |
| 77 | +* [Onigmo](https://github.com/k-takata/Onigmo/) обновлен до версии 6.1.3. |
| 78 | + * Он добавляет [оператор отсутствия](https://github.com/k-takata/Onigmo/issues/87). |
| 79 | + * Учтите, что [Ruby 2.4.1](https://www.ruby-lang.org/en/news/2017/03/22/ruby-2-4-1-released/) |
| 80 | + также включает эти изменения. |
| 81 | +* Обновлен до Psych 3.0.2. |
| 82 | +* Обновлен до RubyGems 2.7.3. |
| 83 | +* Обновлен до RDoc 6.0.1. |
| 84 | + * [Переключен лексер с IRB на Ripper](https://github.com/ruby/rdoc/pull/512). |
| 85 | + Это значительно улучшает производительность генерации документов. |
| 86 | + * Исправлено значительное количество ошибок, которые существовали более |
| 87 | + десяти лет. |
| 88 | + * Добавлена поддержка нового синтаксиса Ruby из последних версий. |
| 89 | +* Обновление поддерживаемой версии Unicode до 10.0.0. |
| 90 | +* `Thread.report_on_exception` теперь установлено значение true по умолчанию. |
| 91 | + Это изменение помогает отлаживать многопоточные программы. |
| 92 | + [[Feature #14143]](https://bugs.ruby-lang.org/issues/14143) |
| 93 | +* IO#write теперь принимает множество аргументов. |
| 94 | + [[Feature #9323]](https://bugs.ruby-lang.org/issues/9323) |
| 95 | + |
| 96 | +Подробности находятся в файле [NEWS](https://github.com/ruby/ruby/blob/v2_5_0/NEWS) |
| 97 | +или в [логах коммитов](https://github.com/ruby/ruby/compare/v2_4_0...v2_5_0). |
| 98 | + |
| 99 | +Включая эти изменения, реализовано |
| 100 | +[6158 изменений файлов, 348484 добавлений(+), 82747 удалений(-)](https://github.com/ruby/ruby/compare/v2_4_0...v2_5_0) |
| 101 | +с момента выхода Ruby 2.4.0! |
| 102 | + |
| 103 | +Желаем всем счастливого Рождества, прекрасных каникул, и наслаждайтесь |
| 104 | +программированием с Ruby 2.5! |
| 105 | + |
| 106 | +## Скачать |
| 107 | + |
| 108 | +* <https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.0.tar.gz> |
| 109 | + |
| 110 | + SIZE: 15834941 bytes |
| 111 | + SHA1: 58f77301c891c1c4a08f301861c26b1ea46509f6 |
| 112 | + SHA256: 46e6f3630f1888eb653b15fa811d77b5b1df6fd7a3af436b343cfe4f4503f2ab |
| 113 | + SHA512: 0712fe68611f5d0cd6dd54b814f825478e64b6a62bdf67bce431f4dca2dc00b1a33f77bebfbcd0a151118a1152554ab457decde435b424aa1f004bc0aa40580d |
| 114 | + |
| 115 | +* <https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.0.zip> |
| 116 | + |
| 117 | + SIZE: 19495617 bytes |
| 118 | + SHA1: 700b6f55d689a5c8051c8c292b9e77a1b50bf96e |
| 119 | + SHA256: 94559ea6e3c619423da604e503ce1dc1c465d6e0747a07fbdc5f294acaf14c24 |
| 120 | + SHA512: e4324064cee8c65b80192e3eff287e915d2d40464d300744c36fb326ae4b1846911400a99d4332192d8a217009d3a5209b43eb5e8bc0b739035bef89cc493e84 |
| 121 | + |
| 122 | +* <https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.0.tar.bz2> |
| 123 | + |
| 124 | + SIZE: 13955820 bytes |
| 125 | + SHA1: 827b9a3bcffa86d1fc9ed96d403cb9dc37731688 |
| 126 | + SHA256: d87eb3021f71d4f62e5a5329628ac9a6665902173296e551667edd94362325cc |
| 127 | + SHA512: 8f6fdf6708e7470f55bc009db2567cd8d4e633ad0678d83a015441ecf5b5d88bd7da8fb8533a42157ff83b74d00b6dc617d39bbb17fc2c6c12287a1d8eaa0f2c |
| 128 | + |
| 129 | +* <https://cache.ruby-lang.org/pub/ruby/2.5/ruby-2.5.0.tar.xz> |
| 130 | + |
| 131 | + SIZE: 11292472 bytes |
| 132 | + SHA1: 9c7babcf9e299be3f197d9091024ae458f1a1273 |
| 133 | + SHA256: 1da0afed833a0dab94075221a615c14487b05d0c407f991c8080d576d985b49b |
| 134 | + SHA512: 55714a33d7661fe8b432f73c34fd67b49699f8b79df1cbd680a74899124d31111ab0f444677672aac1ba725820182940d485efb2db0bf2bc96737c5d40c54578 |
0 commit comments