Опубликовал naruse 30-05-2019
Перевел: shprotru
Мы рады сообщить о выпуске Ruby 2.7.0-preview1.
Выпущена предварительная версия, чтобы получить обратную связь для окончательного выпуска, запланированного на декабрь. В новой версии добавляется ряд новых функций и улучшение производительности, в первую очередь:
- Уплотнение GC
- Сопоставление с образцом
- Улучшение REPL
Уплотнение GC
Этот выпуск содержит новшество - уплотнение GC, который позволяет дефрагментировать фрагментированную память.
В некоторых многопоточных Ruby-программах может возникать фрагментация памяти, что приводит к чрезмерному потреблению памяти и снижению производительности.
Метод GC.compact
вводится для уплотнения хипа. Эта функция сжимает живые объекты в хипе, чтобы уменьшать количество использованных страниц памяти, и хип может оказаться более подходящим для CoW. #15626
Сопоставление с образцом [Экспериментальное]
Сопоставление с образцом, широко используемое в функциональных языках программирования, представлено в качестве экспериментального нововведения. #14912 Оно позволяет пересекать с указанным объектом и присваивать ему значение, если оно соответствует шаблону.
case JSON.parse('{...}', symbolize_names: true)
in {name: "Alice", children: [{name: "Bob", age: age}]}
p age
...
end
Подробнее, смотрите Сопоставление с образцом - новая особенность Ruby 2.7.
Улучшение REPL
irb
, включаемая интерактивная оболочка (REPL; Read-Eval-Print-Loop), теперь поддерживает многострочное редактирование. Оно работает на reline
, совместимой с readline
но реализованной на Ruby.
Обеспечена интеграция rdoc. Теперь в irb
можно отобразить ссылку на указанный класс, модуль или метод. #14683, #14787, #14918
Кроме того, строки исходников в binding.irb
и результаты инспектирования для базовых классов теперь подсвечиваются.
Другие Примечательные Нововведения
-
Оператор ссылки на метод,
.:
, вводится в качестве экспериментальной функции. #12125, #13581 -
Нумерованный параметр в качестве параметра блока по умолчанию вводится в качестве экспериментальной функции. #4475
-
Вводится экспериментальный безначальный диапазон. Это может быть не так полезно, как бесконечный диапазон, но может пригодиться для DSL. #14799
ary[..3] # identical to ary[0..3] rel.where(sales: ..100)
-
Enumerable#tally
добавлен. Подсчитывает вхождение каждого элемента.["a", "b", "c", "b"].tally #=> {"a"=>1, "b"=>2, "c"=>1}
Улучшения производительности
-
JIT [Экспериментальный]
-
JITed-код пересобирается с меньшей оптимизацией, когда предположение об оптимизации становится недействительным.
-
Встраиваемые методы выполняются, когда метод считается чистым. Эта оптимизация все еще экспериментальна, и многие методы еще НЕ считаются чистыми.
-
Значение по умолчанию для
--jit-min-calls
изменено с 5 до 10 000 -
Значение по умолчанию для
--jit-max-cache
изменено 1,000 до 100
-
Другие заметные изменения с 2.6
-
Если
Proc.new
иproc
без блока в методе, вызванным с блоком, выведется предупреждение. -
lambda
без блока в методе вызывается с ошибками блока. -
Обновлены версии Unicode и Emoji с 11.0.0 до 12.0.0. [Feature #15321]
-
Обновлена версия Unicode до 12.1.0, с поддержкой нового глифа U+32FF SQUARE ERA NAME REIWA. [Feature #15195]
-
Date.jisx0301
,Date#jisx0301
, иDate.parse
предварительно поддерживают новую Японскую эру в качестве неофициального расширения, пока не будет выпущен новый JIS X 0301. [Feature #15742] -
Требование к компиляторам поддерживать C99 [Misc #15347]
Смотрите НОВОСТИ или историю коммитов для подробностей об изменениях.
В этих изменениях, изменено 1727 файлов, 76022 вставок (+), 60286 удалений(-) с Ruby 2.6.0!
Получайте удовольствие от программирования с Ruby 2.7!
Скачать
-
https://cache.ruby-lang.org/pub/ruby/2.7/ruby-2.7.0-preview1.tar.gz
SIZE: 16021286 bytes SHA1: 2fbecf42b03a9d4391b81de42caec7fa497747cf SHA256: c44500af4a4a0c78a0b4d891272523f28e21176cf9bc1cc108977c5f270eaec2 SHA512: f731bc9002edd3a61a4955e4cc46a75b5ab687a19c7964f02d3b5b07423d2360d25d7be5df340e884ca9945e3954e68e5eb11b209b65b3a687c71a1abc24b91f
-
https://cache.ruby-lang.org/pub/ruby/2.7/ruby-2.7.0-preview1.zip
SIZE: 20283343 bytes SHA1: 7488346fa8e58203a38158752d03c8be6b1da65b SHA256: fdf25573e72e1769b51b8d541d0e1a894a5394dbfdf1b08215aa093079cca64c SHA512: b3b1f59dce94c242ef88a4e68381a4c3a6f90ba0af699083e5a1a00b0fb1dce580f057dad25571fe789ac9aa95aa6e9c071ebb330328dc822217ac9ea9fbeb3f
-
https://cache.ruby-lang.org/pub/ruby/2.7/ruby-2.7.0-preview1.tar.bz2
SIZE: 14038296 bytes SHA1: f7e70cbc2604c53a9e818a2fc59cd0e2d6c859fa SHA256: d45b4a1712ec5c03a35e85e33bcb57c7426b856d35e4f04f7975ae3944d09952 SHA512: a36b241fc1eccba121bb7c2cc5675b11609e0153e25a3a8961b67270c05414b1aa669ce5d4a5ebe4c6b2328ea2b8f8635fbba046b70de103320b3fdcb3d51248
-
https://cache.ruby-lang.org/pub/ruby/2.7/ruby-2.7.0-preview1.tar.xz
SIZE: 11442988 bytes SHA1: 45e467debc194847a9e3afefb20b11e6dc28ea31 SHA256: 8c546df3345398b3edc9d0ab097846f033783d33762889fd0f3dc8bb465c3354 SHA512: d416e90bfa3e49cc0675c4c13243c8ec319b7a0836add1bd16bd7662d09eaf46656d26e772ef3b097e10779896e643edd8a6e4f885147e3235257736adfdf3b5
Что такое Ruby
Изначально Ruby был разработан Matz (Yukihiro Matsumoto) в 1993 году, и в настоящее время разрабатывается как Open Source. Он работает на множестве платформ и используется во всем мире, особенно для веб-разработки.