Релиз языка программирования 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 прав доступа в символьном виде.

Источники

править


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

Комментарии

Викиновости и Wikimedia Foundation не несут ответственности за любые материалы и точки зрения, находящиеся на странице и в разделе комментариев.