Выпущен релиз Ruby 2.1.0
Ruby 2.1.0 имеет много улучшений включая ускорение без серьезных несовместимостей.
Основные изменения по сравнению с версией Ruby 2.0.0:
- VM (method cache)
- RGenGC (See ko1’s RubyKaigi presentation and RubyConf 2013 presentation)
- refinements #8481 #8571
- syntax changes
- Bignum
- use GMP #8796
- String#scrub #8414
- Socket.getifaddrs #8368
- RDoc 4.1.0 and RubyGems 2.2.0
- “literal”.freeze is now optimized #9042
- add Exception#cause #8257
- update libraries like BigDecimal, JSON, NKF, Rake, RubyGems, and RDoc
- remove curses #8584
Изменения в языке
Именованые аргументы. Теперь значения по умолчанию именованых агрументов могут быть опущены. Для таких аргументов требуется обязательное указание значения при вызове метода.
Новый синтаксис для представления дробных чисел с использованием '//
':
- 1 // 2 == Rational(1, 2)
- 1 // 1 == Rational(1, 1)
- 0 // 1 == Rational(0, 1)
Суффиксы рациональных и комплексных чисел - для integer и float: 'r'
, 'i'
, 'ri'
.
- "42r" и "3.14r" представляются как Rational(42, 1) и 3.14.rationalize
-
"42i" и "3.14i" представляются как Complex(0, 42) и Complex(0, 3.14)
-
"42ri" и "3.14ri" представляются как Complex(0, 42r) and Complex(0, 3.14r)
Объявление метода def
теперь возвращает значение - обозначение (Symbol) имени метода вместо nil (как было раньше).
Изменения в базовых классах
Array
Array#to_h
конвертирует пары ключ-значение в Hash
.
Enumerable
Enumerable#to_h
конвертирует пары ключ-значение в Hash
.
Exception
Exception#cause
возобновляет исключение, которое было перехвачено.
Integer
Fixnum#bit_length
Bignum#bit_length
Улучшение производительности Bignum
Kernel
Kernel#singleton_method
Module
Module#using
- активирует refinements (усовершенствования (улучшения)) указанного модуля только в текущем классе или определении модуля.Module#singleton_class?
- возвращаетtrue
дляsingleton class
илиfalse
если это обычный класс или модуль.Module#refine
больше не эксперементальный.Module#include
иModule#prepend
сейчас public методы.
String
String#scrub
и String#scrub!
проверяет и исправляет неправильные последовательности байтов.
Symbol
All symbols are now frozen.
полный список изменений и дополнений