Skip to content

Commit 313f9df

Browse files
authored
Translate 20171225 ruby 2.5.0 released (ru) (#1732)
Translate 20171225 ruby 2.5.0 released (ru) Co-authored-by: Alexey Pyltsyn <lex61rus@gmail.com>
2 parents 2b8ebfb + beacab1 commit 313f9df

File tree

1 file changed

+134
-0
lines changed

1 file changed

+134
-0
lines changed
Lines changed: 134 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,134 @@
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

Comments
 (0)