The OpenNET Project / Index page

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



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

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

Основные улучшения (https://github.com/ruby/ruby/blob/v2_5_0/NEWS):


-  В блоках do/end теперь допустимо (https://bugs.ruby-lang.org/issues/12906) напрямую использовать секции   rescue, else и ensure;

-  Определён метод yield_self (https://bugs.ruby-lang.org/issues/6721) для выполнение операции yield с блоком в его контексте. В отличие от tap, метод возвращает результат выполнения блока;

-  Поддержка (https://bugs.ruby-lang.org/issues/13901) измерения покрытия (https://ru.wikipedia.org/wiki/%D0%9F%D0%... (coverage) тестовым кодом веток и методов. Покрытие ветки показывает то, какие ветки были выполнены в процессе выполнения тестов, а какие нет. Покрытие метода показывает какие методы были вызваны, а какие нет;
-  Добавлены новые методы  Hash#slice (https://bugs.ruby-lang.org/issues/8499) и Hash#transform_keys (https://bugs.ruby-lang.org/issues/13583);
-  Конструктор Struct.new теперь может создавать (https://bugs.ruby-lang.org/issues/11925) классы, принимающие именованные аргументы (keyword arguments);

-  Перечисляемые предикаты последовательностей (#any?, #all?, #none? и #one?) теперь могут принимать (https://bugs.ruby-lang.org/issues/11286) аргументы в виде шаблона;

-  Прекращено (https://bugs.ruby-lang.org/issues/11547) использование констант верхнего уровня (top-level) с тем же именем, если поиск класса в указанной области видимости не увенчался успехом;

-  Включена автоматическая загрузка библиотеки pp.rb без необходимости указания в коде 'require "pp"';

-  Изменён (https://bugs.ruby-lang.org/issues/8661) на обратный порядок вывода трассировки (backtrace) и сообщения об ошибке(вначале идут вызовы, начиная со старых и заканчивая свежими, а в конце выводится сообщение об ошибке);


-  На 5-10% увеличена (https://bugs.ruby-lang.org/issues/14104) производительность за счёт удаления инструкций "trace" из байткода. При необходимости применения TracePoint теперь осуществляется динамическое изменение последовательностей инструкций (ISeqs). В итоге в обычных условиях, когда не используется TracePoint, устранены лишние накладные расходы, за счёт их существенного повышения на этапе включения трассировки;

-  Примерно в три раза ускорена (https://bugs.ruby-lang.org/issues/14045) передача блоков через параметры блока (например def foo(&b); bar(&b); end);

-  IO#write теперь может принимать (https://bugs.ruby-lang.org/issues/9323) несколько аргументов, компонуя выходные данные из нескольких буферов;

-  Переписана реализация мьютексов. Размер rb_mutex_t уменьшен со 160 до 80 байт;

-  ERB (Embedded RuBy)  теперь генерирует код из шаблонов, который выполняется в два раза быстрее, по сравнению с Ruby 2.4;

-  Увеличена производительность некоторых встроенных методов, включая Array#concat, Enumerable#sort_by, String#concat, String#index и Time#+ ;
-  IO.copy_stream переведён на использование  системного вызова copy_file_range, который позволяющий ускорить выполнение операций копирования данных из одного файла в другой файл с выполнением операции только на стороне ядра, без предварительного чтения данных в память процесса в пространстве пользователя;

-  SecureRandom теперь использует предлагаемый операционной системой генератор псевдослучайных чисел (/dev/urandom) вместо OpenSSL;
-  Библиотеки cmath, csv, date, dbm, etc, fcntl, fiddle, fileutils, gdbm, ipaddr, scanf, sdbm, stringio, strscan, webrick, zlib из стандартного набора библиотек переведены в категорию устанавливаемых по умолчанию gem-пакетов;
-  Обновлены версии Onigmo 6.1.3,  Psych 3.0.2, RubyGems 2.7.3 и  RDoc 6.0.1;
-  Добавлена поддержка спецификации Unicode 10.0.0;
-  По умолчанию включена настройка Thread.report_on_exception, упрощающая отладку многопоточных программ.

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

 

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



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

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