Выпуск языка программирования Ruby 2.3.0
Опубликовано 00 0000 00:00:00
Представлен релиз 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, первая бета-версия которого вышла неделю назад.
Источник: http://www.opennet.ru/opennews/art.shtml?num=43588
Основные улучшения:
- Реализована новая экспериментальная прагма 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 доведён до стабильного.
Источник: http://www.opennet.ru/opennews/art.shtml?num=43588
|
0 | Tweet | Нравится |
|