Релиз языка программирования Ruby 1.9.3
31 октября 2011 года
Увидел свет релиз языка программирования Ruby 1.9.3. Ruby - относительно молодой, мощный и динамический объектно-ориентированный язык программирования, отличающийся высокой эффективностью разработки программ и вобравший в себя лучшие черты Perl, Java, Python, Smalltalk, Eiffel, Ada и Lisp. Новый выпуск характеризуется (Архивная копия от 31 октября 2020 на Wayback Machine) как версия, продолжающая развитие Ruby 1.9.2 и не содержащая кардинальных функциональных изменений.
Начиная с Ruby 1.9.3, код проекта распространяется под лицензиями BSD ("2-clause BSDL") и "Ruby", в то время как прошлые версии распространялись под лицензиями "GPLv2" и "Ruby". В качестве причины смены лицензии называется желание обеспечить совместимость кода одновременно с лицензиями GPLv3 и BSD. Лицензия "Ruby" ссылается (Архивная копия от 26 августа 2011 на Wayback Machine) на последний вариант GPL и полностью совместима с GPLv3, но указание GPLv2 в качестве второй лицензии ограничивало максимальную версию GPL и делало код несовместимым с GPLv3. Второй проблемой было то, что код прошлых версий Ruby не был совместим с лицензией BSD и не позволял обмениваться наработками с BSD-проектами. В новой версии Ruby эти недостатки устранены.
Основные улучшения (Архивная копия от 6 ноября 2015 на Wayback Machine), добавленные в Ruby 1.9.3:
- В состав стандартных библиотек включён модуль io/console, предназначенный для организации управления консолью;
- Улучшена работа модуля openssl, что связано с появлением у данной ruby-библиотеки активного мэйнтейнера;
- Реализован режим параллельного юнит-тестирования в модуле test/unit;
- Изменена стратегия выполнения внутренних блокировок, что позволило повысить эффективность организации работы многопоточных программ;
- С целью увеличения производительности переписаны на языке Си библиотеки "pathname" и "date" (скорость работы с датами увеличилась в 5 раз);
- Внесены изменения, позволившие сократить время загрузки rails-приложений. RubyGems обновлён до версии 1.8.10;
- Поддержка символов Unicode 6.0 в регулярных выражениях;
- Поддержка указания диапазонов значений в Random.rand;
- В класс String добавлены новые методы String#prepend и String#byteslice;
- В класс ARGF добавлены новые методы: ARGF.print, ARGF.printf, ARGF.putc, ARGF.puts, ARGF.read_nonblock, ARGF.to_write_io, ARGF.write;
- В классе Bignum задействован новый алгоритм умножения больших чисел (более 150 цифр);
- В класс IO добавлены новые методы: IO#advise, IO.write(name, string, [offset] ) и IO.binwrite(name, string, [offset]). В методе IO#putc реализована поддержка многобайтных символов;
- Расширен API для написания модулей на языке Си: добавлена функция ruby_vm_at_exit() для перехвата события завершения работы VM, добавлена функция rb_reserved_fd_p() для закрытия всех файловых дескрипторов, реализована поддержка извлечения аргументов хэша в rb_scan_args();
- В модуле net/http добавлена поддержка SNI (Server Name Indication) для HTTPS; обеспечена возможность определения времени ожидания перед отправкой тела запроса через заголовок '100-continue'; добавлен метод Net::HTTPRequest#set_form для обеспечения одновременной поддержки
application/x-www-form-urlencoded и multipart/form-data;
- В модуле yaml в качестве движка по умолчанию теперь используется Psych, для задействования старого движка Syck следует указать YAML::ENGINE.yamler = 'syck';
- В модуле zlib добавлены новые методы Zlib.deflate и Zlib.inflate;
- В модуле FileUtils добавлена возможность указания в методе FileUtils#chmod прав доступа в символьном виде.
Источники
[править]
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.
Комментарии[править]
Если вы хотите сообщить о проблеме в статье (например, фактическая ошибка и т. д.), пожалуйста, используйте обычную страницу обсуждения.
Комментарии на этой странице могут не соответствовать политике нейтральной точки зрения, однако, пожалуйста, придерживайтесь темы и попытайтесь избежать брани, оскорбительных или подстрекательных комментариев. Попробуйте написать такие комментарии, которые заставят задуматься, будут проницательными или спорными. Цивилизованная дискуссия и вежливый спор делают страницу комментариев дружелюбным местом. Пожалуйста, подумайте об этом.
Несколько советов по оформлению реплик:
- Новые темы начинайте, пожалуйста, снизу.
- Используйте символ звёздочки «*» в начале строки для начала новой темы. Далее пишите свой текст.
- Для ответа в начале строки укажите на одну звёздочку больше, чем в предыдущей реплике.
- Пожалуйста, подписывайте все свои сообщения, используя четыре тильды (~~~~). При предварительном просмотре и сохранении они будут автоматически заменены на ваше имя и дату.
Обращаем ваше внимание, что комментарии не предназначены для размещения ссылок на внешние ресурсы не по теме статьи, которые могут быть удалены или скрыты любым участником. Тем не менее, на странице комментариев вы можете сообщить о статьях в СМИ, которые ссылаются на эту заметку, а также о её обсуждении на сторонних ресурсах.