Выпущен релиз 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_lengthBignum#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.