Выпуск языка программирования Ruby 2.3.0

25 декабря 2015 года

Wikinews-logo-ru.svg

Представлен релиз Ruby 2.3, динамического объектно-ориентированного языка программирования, отличающегося высокой эффективностью разработки программ и вобравшего в себя лучшие черты Perl, Java, Python, Smalltalk, Eiffel, Ada и Lisp. Код проекта распространяется под лицензиями BSD ("2-clause BSDL") и "Ruby", которая ссылается на последний вариант лицензии GPL и полностью совместима с GPLv3. Ruby 2.3 является третьим значительным выпуском, подготовленным в рамках нового планового процесса разработки, подразумевающего отведение года на подготовку функциональных улучшений и формирование каждые 2-3 месяца корректирующих выпусков. В скором времени ожидается выпуск фреймворка Rails 5.0, первая бета-версия которого вышла неделю назад.

Основные улучшения:

  • Реализована новая экспериментальная прагма frozen-string-literal, а также связанная с ней опций "--enable/--disable=frozen-string-literal", позволяющие заморозить состояние строковых литералов в исходных текстах. Также добавлен новый отладочный режим "--debug=frozen-string-literal" при котором будет показано где именно изменение объекта приводит к выводу ошибки "can't modify frozen String";
  • Добавлен новый оператор "&." для упрощение обработки значений nil при обращении к объектам, реализованный по мотивам операторов безопасной навигации C#, Groovy и Swift. При использовании синтаксиса вызова методов obj&.foo, метод #foo будет вызван только если object не является nil. Оператор ведёт себя как выражение "try!" (obj.try! {}) из ActiveSupport, но обрабатывает только значения nil. Для массивов, хэшей и структур добавлены операторы Array#dig, Hash#dig и Struct#dig;
  • Для упрощения отладки в базовый состав добавлен gem "did_you_mean", предлагающий правки для типичных опечаток при выводе ошибок NameError и NoMethodError;

"Yuki".starts_with?("Y")
# = NoMethodError: undefined method `starts_with?' for "Yuki":String
# Did you mean? start_with?

  • Добавлены экспериментальные возможности для обработки предкомпилированного байткода в формате ISeq. Для сериализации кода реализован объект

RubyVM::InstructionSequence#to_binary_format, а для десериализации и загрузки байткода - RubyVM::InstructionSequence.load_from_binary(binary);

  • В String.new добавлена поддержка указания параметра "encoding" для определения кодировки;
  • Проведена серия оптимизаций производительности. В том числе реализован новый метод хранения табличных структур, оптимизирована работа Proc#call, на уровне машинного кода проведён тюнинг размещения объектов и вызова методов, добавлена возможность использования ключевых слов "exception:" для организации неблокирующего ввода/вывода;
  • Прекращена поддержка платформ OS/2, BeOS и Borland-C. Уровень поддержки платформы Haiku доведён до стабильного.
 

ИсточникиПравить


Эта статья содержит материалы из статьи «Выпуск языка программирования Ruby 2.3.0», опубликованной OpenNET и распространяющейся на условиях лицензии Creative Commons Attribution (CC BY) — указание автора, источник и лицензию.
Эта статья загружена автоматически ботом NewsBots в архив и ещё не проверялась редакторами Викиновостей.
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
 

Комментарии:Выпуск языка программирования Ruby 2.3.0