Спецификации Ruby обновились до версии 2.1.0. В новой версии языка программирования сделано несколько эволюционных изменений. В неофициальных бенчмарках на Rails версия 2.1 показывает результат примерно на 20% выше, чем 2.0, которая, в свою очередь, на 60-70% быстрее 1.9.3.

Вкратце, самые важные из них:

  • VM (кэширование методов)
  • новый сборщик мусора RGenGC (см. презентацию ko1 на RubyKaigi и на RubyConf 2013)
  • изменения в синтаксисе
    • новая запись дробей с использованием двух слэшей ("//") между числителем и знаменателем, см. #8430
      • 1 // 2 == Rational(1, 2)
      • 1 // 1 == Rational(1, 1)
      • 0 // 1 == Rational(0, 1)
    • новые суффиксы i, r и ri для записи комплексных и рациональных чисел
      • "42r" и "3.14r" расцениваются как рациональное число Rational(42, 1) и 3.14.rationalize, соответственно. Но экспоненциальная форму с суффиксом 'r', такая как "6.022e+23r", не принимается.
      • "42i" и "3.14i" расцениваются как Complex(0, 42) и Complex(0, 3.14), соответственно.
      • "42ri" и "3.14ri" расцениваются как Complex(0, 42r) и Complex(0, 3.14r), соответственно.
  • определение функции def теперь возвращает символ её названия вместо nil, см. #3753
  • уточнения #8481 #8571
  • Bignum
    • использует GMP (GNU Multiple Precision Arithmetic Library) для ускорения операций над большими числами, см. #8796
  • добавлен метод Array#to_h — создание хэша из массива
  • String#scrub #8414
  • Socket.getifaddrs #8368
  • RDoc 4.1.0 и RubyGems 2.2.0
  • “literal”.freeze теперь оптимизирован #9042
  • добавлен Exception#cause #8257
  • обновлены библиотеки JSON, NKF, rake, RubyGems, и RDoc.
  • удалена библиотека curses. #8584

Ruby — высокоуровневый язык для быстрого и удобного объектно-ориентированного программирования. Его создатель Юкихиро Мацумото постарался совместить лучшие черты своих любимых языков Perl, Python, Smalltalk, Eiffel, Ada и Lisp в поисках грамотного баланса между функциональным и императивным программированием. Целью было создание языка, более мощного, чем Perl, и более объектно-ориентированного, чем Python, пишет Википедия. Основное назначение Ruby — создание простых и в то же время понятных программ, где важна не скорость работы программы, а малое время разработки, понятность и простота синтаксиса.

Мацумото занимается разработкой Ruby до сих пор, и версия 2.1.0 — его рождественский подарок всем программистам.

Более подробный список изменений в 2.1.0 см. здесь, а также в презентации “All about Ruby 2.1”.