Yusuke Endoh, назначенный ответственным за выпуск релиза Ruby 2.0, опубликовал в списке рассылки ruby-core план подготовки новой версии. Релиз планируется выпустить 24 февраля 2013 года, приурочив его к 20-летию проекта. В августе 2012 года состоится заморозка кода от добавления значительных новшеств, в октябре 2012 состоится полная заморозка кода и начнётся интенсивная работа по стабилизации кодовой базы. Отдельно отмечается, что Ruby 2.0 стоит рассматривать как эволюцию, а не революцию, поэтому, несмотря на обсуждения в прошлом внесения кардинальных изменений, релиз Ruby 2.0 будет на 100% обратно совместим с Ruby 1.9.3. Ожидаемое прекращение поддержки устаревших возможностей, таких как оператор "flip-flop", будет рассмотрено при подготовке Ruby 3.0.
Из новшеств, которые могут появиться в Ruby 2.0 выделяются:
- Ключевые слова в качестве аргументов: например, кроме "1.step(20, 2)" можно будет писать "1.step(by: 2, to: 20)" c определением метода как "def step(by: step, to: limit)", что значительно улучшит читаемость кода;
- Поддержка экспорта и импорта байткода: будет предоставлена возможность сохранения предкомпилированных скриптов в форме байткода, который можно будет напрямую запустить в виртуальной машине YARV, что позволит пропустить фазу парсинга в общем процессе интерпретации;
- Поддержка конструкции "Refinements" для повышения безопасности внесения изменений в код на лету ("monkey patching"). Например, можно применить "рафинирование" к глобальному классу в контексте только определённого модуля, при этом изменения будут применены только к указанному контексту. Так как данная возможность может отрицательно повлиять на производительность, её реализация ещё обсуждается, например, возможно будет реализован какой-то другой вариант раздельных пространств имён для модификации классов;
- Стандартные библиотеки будут перемещены в "gems", хотя многие библиотеки по прежнему будут включены в реализацию языка, а не выступать в форме опционально загружаемых;
- Поддержка неблокирующего ввода/вывода;
- Чистка кода и пересмотр стандартных библиотек.
|