Cайт веб-разработчика, программиста Ruby on Rails ESV Corp. Екатеринбург, Москва, Санкт-Петербург, Новосибирск, Первоуральск

Выпущен релиз Ruby 2.1.0

Ruby 2.1.0 имеет много улучшений включая ускорение без серьезных несовместимостей.

Основные изменения по сравнению с версией Ruby 2.0.0:

 

Изменения в языке

Именованые аргументы. Теперь значения по умолчанию именованых агрументов могут быть опущены. Для таких аргументов требуется обязательное указание значения при вызове метода.

Новый синтаксис для представления дробных чисел с использованием '//':

  • 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.

 

полный список изменений и дополнений

Новое в Ruby 2.1