The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Выпуск языка программирования Ruby 2.6.0"
Отправлено opennews, 25-Дек-18 23:52 
После года разработки опубликован (https://www.ruby-lang.org/en/news/2018/12/25/ruby-2-6-0-rele... релиз Ruby 2.6.0 (http://www.ruby-lang.org), динамического объектно-ориентированного языка программирования, отличающегося высокой эффективностью разработки программ и вобравшего в себя лучшие черты Perl, Java, Python, Smalltalk, Eiffel, Ada и Lisp.  Код проекта распространяется под лицензиями BSD ("2-clause BSDL") и "Ruby", которая ссылается на последний вариант лицензии GPL и полностью совместима с GPLv3.  Ruby 2.6 является шестым значительным выпуском, подготовленным в рамках  планового процесса разработки, подразумевающего отведение года на подготовку функциональных улучшений и формирование каждые 2-3 месяца корректирующих выпусков.

Основные (https://anamaria.martinezgomez.name/2018/12/21/ruby2_6.html) улучшения (https://github.com/ruby/ruby/blob/v2_6_0/NEWS):


-  Добавлена экспериментальная реализация JIT-компилятора, который позволяет ощутимо поднять производительность приложений на языке Ruby. В отличие от традиционных JIT, генерирующих на лету машинные инструкции, преложенный в Ruby JIT-компилятор вначале записывает (https://bugs.ruby-lang.org/projects/ruby/wiki/MJIT#MJIT-orga... на диск код на языке Си, после чего вызывает внешний Си-компилятор для генерации машинных инструкций (поддерживается вызов GCC, Clang и Microsoft VC++). Для активации JIT необходимо указать при запуске ruby опцию "--jit" или установить данную опцию в переменной окружения RUBYOPT. По сравнению с Ruby 2.5 включение JIT в среднем в 1.7 раза увеличивает производительность приложений, интенсивно использующих CPU. При этом разработка пока экспериментальная и плохо адаптирована длянагрузок, связанных с интенсивной работой с памятью;

-  Добавлен экспериментальный модуль RubyVM::AbstractSyntaxTree, предоставляющий метод парсинга,  обрабатывающий передаваемые строки как код на языке Ruby  и возвращающий абстрактное синтаксическое дерево (AST (https://ru.wikipedia.org/wiki/%D0%90%D0%... Abstract Syntax Tree) для этого кода;

-  Для обращения к методу  "Kernel#yield_self" теперь можно использовать псевдоним "#then". Для  методов  "Array#|" и "Array#-" предложены более читаемые псевдонимы "Array#union" и "Array#difference";

-  Имена констант теперь могут начинаться с заглавных букв не из набора ASCII (например, сейчас можно писать "class Σ♥²; end
");
-  Добавлена поддержка незаканчивающихся диапазонов, например,  
"ary[1..]" или  "(1..).each {...}";
-  Добавлен класс Enumerator::Chain и методы  
"Enumerable#chain" и "Enumerator#+" для создания цепочек перечисляемых значений;

-  В модули  Proc и Method добавлена поддержка операторов ">", например, конструкция "(f << g).call(3)" идентична "f(g(3))";

-  Добавлен метод "Binding#source_location", который возвращает местоположение файла с кодом и номер строки привязанного объекта;

-  В метод "Kernel#system" добавлена опция "exception:" для генерации исключения при сбое вместо возвращения "false";

-  В модуль Coverage добавлен режим "oneshot", который проверяет, запущенна ли каждая строка как минимум один раз;
-  В методе "Hash#merge" обеспечена возможность слияния более двух хэшей;

-  Добавлен метод "FileUtils#cp_lr", который работает по аналогии с "FileUtils#cp_r", но вместо копирования создаёт ссылку;

-  Ускорена работа метода "Proc#call", благодаря исключению временного сохранения содержимого $SAFE. При выполнении теста lc_fizzbuzz  наблюдается увеличение производительности в 1.4 раза;
-  Ускорена работа  block.call в случае передачи "block" как параметра блока. Судя по проведённым тестам данное изменение позволило в 2.6 раз увеличить скорость расчёта блоков;
-  Представлена поддержка временной кучи (Transient Heap, theap), предназначенной для объектов с коротким временем жизни, использующих специфичные классы (Array, Hash, Object, Struct). Например, благодаря theap создание мелких и недолго существующих хэшей теперь выполняется в два раза быстрее. Тест rdoc показал увеличение производительности на 6-7%;

-  Для увеличения производительности переключений контекста предложены нативные реализации сопрограмм для  архитектур arm32, arm64, ppc64le, win32, win64, x86 и amd64.  "Fiber.yield" и "Fiber#resume" на 64-разрядных системах Linux теперь выполняются почти в 5 раз быстрее. В целом интенсивно использующие Fiber программы показывают прирост производительности на уровне 5%;

-  Обновлена версия RubyGems 3.0.1, в которой прекращена поддержка опций "--ri" и "--rdoc", вместо которых следует использовать "--document" и "--no-document".
-  Bundler (https://github.com/bundler/bundler) теперь устанавливается по умолчанию для управления зависимостями gem.


URL: https://www.ruby-lang.org/en/news/2018/12/25/ruby-2-6-0-rele.../
Новость: https://www.opennet.ru/opennews/art.shtml?num=49854

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру